Python 实现顺序高斯消元法示例
我就废话不多说,直接上代码吧!
#coding:utf8
importnumpyasnp
#设置矩阵
defgetInput():
matrix_a=np.mat([[2,3,11,5],
[1,1,5,2],
[2,1,3,2],
[1,1,3,4]],dtype=float)
matrix_b=np.mat([2,1,-3,-3])
#答案:-2011
returnmatrix_a,matrix_b
defSequentialGauss(mat_a):
foriinrange(0,(mat_a.shape[0])-1):
ifmat_a[i,i]==0:
print("终断运算:")
print(mat_a)
break
else:
forjinrange(i+1,mat_a.shape[0]):
mat_a[j:j+1,:]=mat_a[j:j+1,:]-\
(mat_a[j,i]/mat_a[i,i])*mat_a[i,:]
returnmat_a
defrevert(new_mat):
#创建矩阵存放答案初始化为0
x=np.mat(np.zeros(new_mat.shape[0],dtype=float))
number=x.shape[1]-1
#print(number)
b=number+1
x[0,number]=new_mat[number,b]/new_mat[number,number]
foriinrange(number-1,-1,-1):
try:
x[0,i]=(new_mat[i,b]-np.sum(np.multiply(new_mat[i,i+1:b],x[0,i+1:b])))/(new_mat[i,i])
except:print("错误")
print(x)
if__name__=="__main__":
mat_a,mat_b=getInput()
#合并两个矩阵
print("原矩阵")
print(np.hstack((mat_a,mat_b.T)))
new_mat=SequentialGauss(np.hstack((mat_a,mat_b.T)))
print("三角矩阵")
print(new_mat)
print("方程的解")
revert(new_mat)
运行结果如下
以上这篇Python实现顺序高斯消元法示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。