Python解答多元线性方程组

前几天一个在乌克兰读什么生态环境工程的小朋友在朋友圈发了一张求解多元线性方程组的图片,这老师真变态,这么大的数非得让他们动手拿笔来求解,我就给他一下标准答案,以至他可以作参考吧

先来一个小案例:

#  求解线性方程组
from scipy import linalg
import numpy as np

A = np.array([[1, 1, 7], [2, 3, 5], [4, 2, 6]])  # A代表系数矩阵
y = np.array([2, 3, 4])  # b 代表常数列
x = linalg.solve(A, y)
print(x)

结果是 

[0.6  0.35 0.15]

他的问题是这样的

A = np.array([[4, 42, 548, 8598, 147620], 
              [42, 548, 8598, 147620, 2654982], 
              [548, 8598, 147620, 2654982, 48939188],
              [8598, 147620, 2654982, 48939188, 914198838],
              [147620, 2654982, 48939188, 914198838, 17203752260]])
y = np.array([312, 2726, 36157, 571574, 9849852])
x = linalg.solve(A, y)
print(x)

最终结果是这样的

[-1.02406157e+01  6.24077239e+01 -1.47009378e+01  1.24586338e+00
 -3.33557879e-02]

如果想保留两位小数,四舍五入一下那可就差很大了,我们把四舍五入的结果来验证一下

# 验证结果
x = x.round(2)
np.dot(A, x)

得到的结果和原始的y差别那不是一般的大:

array([8.43560000e+02, 1.22555400e+04, 2.11527520e+05, 3.84470514e+06,
       7.14157139e+07])

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值