三角分解法(线性方程求解)python

 

 

【问题描述】为求解一个线性方程组,首先采用偏序选主元策略的三角分解法构造矩阵L,U和P,再用前向替换法对方程组LY=PB求解Y,最后用回代法对方程组UX=Y求解X。

【输入形式】在屏幕上依次输入方阵阶数n,系数矩阵A和常数矩阵B。

【输出形式】先输出LU分解结果,再输出方程解。

【样例1输入】

4

1 2 4 1

2 8 6 4

3 10 8 8

4 12 10 6

21

52

79

82

【样例1输出】

[[ 4.   12.   10.    6.  ]

 [ 0.5   2.    1.    1.  ]

 [ 0.25 -0.5   2.    0.  ]

 [ 0.75  0.5   0.    3.  ]]

[[1.]

[2.]

[3.]

[4.]]

【样例1说明】输入:第1行为方阵阶数4,第2行至5行为系数矩阵A,第6行至9行为常数矩阵B。输出:第1至第4行输出LU分解结果,第5行至第8行依次输出方程解:x1, x2, x3, x4。

 

代码:

import numpy as np
#print("请输入矩阵的行列数:")
input001= list(map(int, input().split()))
n = int(input001[0])
#print("请输入矩阵NxN:")
a = np.zeros((n,n),dtype = np.double)
for r in range(n):
    a[r,:] = np.array(input().split(),dtype = np.double)
#print("输入常数矩阵b:")
b = np.zeros((n,1),dtype= np.double)
for r in range(n):
    b[r] = np.array(input(),dtype=np.double)

#for循环求出LU分解结果
for i in range(n):
    max = i#换行标记符
    for i1 in range(i,n):
        #找到该列元素中的最大值
        if(a[max][i] 
 

你可能感兴趣的:(三角分解法(线性方程求解)python)