用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)
这篇博客介绍了如何使用Julia编程语言来实现线性方程组的求解,重点比较了雅可比迭代法和高斯赛德尔方法。通过构建具体的方程组,展示了两种迭代法的矩阵表示,并提供了求解函数。文中指出雅可比方法在这种情况下能够收敛,而高斯赛德尔方法则不收敛。
1万+

被折叠的 条评论
为什么被折叠?



