(原创)列主元Gauss消去法的通用程序
2024-09-29 10:10:02
import numpy as np
np.set_printoptions(precision=5) A = np.array([[31., -13., 0., 0., 0., -10., 0., 0., 0., -15.], # 定义待求解方程组的增广矩阵
[-13., 35., -9., 0., -11., 0., 0., 0., 0., 27.],
[0., -9., 31., -10., 0., 0., 0., 0., 0., -23.],
[0., 0., -10., 79., -30., 0., 0., 0., -9., 0.],
[0., 0., 0., -30., 57., -7., 0., -5., 0., -20.],
[0., 0., 0., 0., -7., 47., -30., 0., 0., 12.],
[0., 0., 0., 0., 0., -30., 41., 0., 0., -7.],
[0., 0., 0., 0., -5., 0., 0., 27., -2., 7.],
[0., 0., 0., -9., 0., 0., 0., -2., 29., 10.]]) [M, N] = np.shape(A) # 得到系数矩阵的大小
x = np.array([0.] * M) # 初始化解向量,全0 for j in range(0, M): # 列主元Gauss消去
max = A[j][j]
max_i = j
for i in range(j, M): # 寻找主元
if abs(A[i][j]) > max:
max = abs(A[i][j])
max_i = i
temp_row = np.array(A[j]) # 交换
A[j] = A[max_i]
A[max_i] = temp_row for i in range(j + 1, M): # 消去
A[i] = A[i] - A[i][j] / A[j][j] * A[j]
print("经列主元Gauss消去法得到的三角方程组的增广矩阵为:")
print(A)
for j in range(M - 1, -1, -1): # 解三角方程组
x[j] = (A[j][N - 1] - np.sum(A[j][0:M] * x)) / A[j][j]
print("求解结果为:")
print("x=", end="")
print(x)
最新文章
- 【二分】POJ 2109
- 零散知识记录-Jira的安装
- Android客户端与服务器之间传递json数据
- Window.open 实现导航与打开窗口,导航到一个特定链接地址,也可以打开一个新的浏览器窗体
- 如何注册Uber司机,加入uber(全国版最新最详细注册流程)
- Windows的公共控件窗口类列表
- 网易ios 面试
- 可靠通信的保障 —— 使用ACK机制发送自定义信息——ESFramework 通信框架4.0 快速上手(12)
- N层架构实现的一个小例子
- 基于canvas和jsp的头像剪辑上传
- ubuntu 16.04下安装使用OpenCV2.4.13
- ASP.NET Core 认证与授权[1]:初识认证
- CRM项目总结
- Codeforces617E(莫队)
- Laravel技巧:使用load、with预加载 区别
- jQuery File Upload 判断图片尺寸,限定图片宽高的办法
- English trip -- VC(情景课) 7 D Reading 阅读练习
- poj3186(区间DP)
- 针对石家庄铁道大学官网首页的UI分析
- 文件名含中文的JavaWeb文件下载