码迷,mamicode.com
首页 > 其他好文 > 详细

numpy二元一次方程求解

时间:2020-05-30 01:38:46      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:竞赛   pre   div   线性代数   结果   法则   port   问题   import   

我们从一个鸡兔同笼的问题说起:

据《孙子算经》记载:今有雉兔同笼,上有35头,下有94足,问雉兔各有几何

这是二年级奥林匹克数学竞赛的题目,大人用二元一次方程来解就没意思了,本文关注numpy如何通过矩阵求解。

假设,鸡:x只 ;兔 : y 只,列二元一次方程为

1x + 1y = 35(头)
2x + 4y = 94(足)

列矩阵为:A * w = b

| 1     1 |          | x |    | 35 |
| 2     4 |     *    | y |  = | 94 |    

求得未知数 w = b / A

因为矩阵不支持矩阵除法,但是可以通过A的逆矩阵(A_)来计算 : w = b *A_

 

import numpy as np
import numpy.linalg as ll

A = np.array([[1, 1], [2, 4]])
b = np.array([[35], [94]])

A_ = ll.inv(A)     # 求A的逆矩阵
w = np.dot(A_, b)  # A_ x b

结果为

In   [67]:
[[23.]
 [12.]]

numpy.linalg提供了solve方法可以直接求解,参见如下代码

import numpy as np
import numpy.linalg as ll

A = np.array([[1, 1], [2, 4]])
b = np.array([[35], [94]])

w = ll.solve(A, b)
print(w)

 对于更多元的解法也是一样的,在线性代数里,这个方法叫:克拉默法则

numpy二元一次方程求解

标签:竞赛   pre   div   线性代数   结果   法则   port   问题   import   

原文地址:https://www.cnblogs.com/Netsharp/p/12990124.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!