用Julia语言写的迭代解法,求解如下方程
PS:该方法用雅可比方法收敛而高斯赛德尔方法不收敛
using LinearAlgebra
using Statistics
# 构建方程
A = [
1.0 2 -2
1 1 1
2 2 1
]
b = [
1.0
3
5
]
# 雅可比迭代矩阵B和g
D = Diagonal(A)
E = -(UpperTriangular(A)-D)
F = -(LowerTriangular(A)-D)
B = D\(E + F)
g = D\b
# 求解函数
function solve(B,g,mode)
size = length(g)
res = zeros(size)
res_last = ones(size)
while(abs(mean(res - res_last))>1.0E-5)
res_last = res
res = B * res + g
if mode == 1
println(res)
end
end
return res
end
# 求解
solve(B,g,1)
# 构建高斯赛德尔方法矩阵并求解
B = (D-E)\F
g = (D-E)\b
solve(B,g,1)