用Matlab求一道数值分析的题用(1)Jacobi迭代法;(2)Gauss-Seidel迭代法;(3)共轭梯度法解线性方程组:[ 10 1 2 3 4 ;1 9 -1 2 -3 ;2 -1 7 3 -5 ;3 2 3 12 -1 ;4 -3 -5 -1 15 ][ x1 ;x2 ;x3 ;x4 ;x5]=[ 12 ;-2
来源:学生作业帮助网 编辑:作业帮 时间:2024/05/11 19:57:36
用Matlab求一道数值分析的题用(1)Jacobi迭代法;(2)Gauss-Seidel迭代法;(3)共轭梯度法解线性方程组:[ 10 1 2 3 4 ;1 9 -1 2 -3 ;2 -1 7 3 -5 ;3 2 3 12 -1 ;4 -3 -5 -1 15 ][ x1 ;x2 ;x3 ;x4 ;x5]=[ 12 ;-2
用Matlab求一道数值分析的题
用(1)Jacobi迭代法;(2)Gauss-Seidel迭代法;(3)共轭梯度法
解线性方程组:
[ 10 1 2 3 4 ;1 9 -1 2 -3 ;2 -1 7 3 -5 ;3 2 3 12 -1 ;4 -3 -5 -1 15 ][ x1 ;x2 ;x3 ;x4 ;x5]=[ 12 ;-27 ;14 ;-17 ;12 ]
迭代初始向量取 x(0)= [ 0 ;0 ;0 ;0 ; 0 ]
用Matlab求一道数值分析的题用(1)Jacobi迭代法;(2)Gauss-Seidel迭代法;(3)共轭梯度法解线性方程组:[ 10 1 2 3 4 ;1 9 -1 2 -3 ;2 -1 7 3 -5 ;3 2 3 12 -1 ;4 -3 -5 -1 15 ][ x1 ;x2 ;x3 ;x4 ;x5]=[ 12 ;-2
clear;clc
A=[ 10 1 2 3 4 ;1 9 -1 2 -3 ;2 -1 7 3 -5 ;3 2 3 12 -1 ;4 -3 -5 -1 15 ];
B=[ 12 -27 14 -17 12 ]';
real_X=A\B %实际值
%Jacobi method
x0=[0 0 0 0 0]';
N=length(B);
M=15;% 迭代次数
for k=1:M
for j=1:N
x(j)=(B(j)-A(j,[1:j-1,j+1:N])*x0([1:j-1,j+1:N]))/A(j,j);
end
x0=x';
end
Jacobi_X=x'
%Gauss-Seidel method
for k=1:M
for j=1:N
if j==1
x(1)=(B(1)-A(1,2:N)*x0(2:N))/A(1,1);
elseif j==N
x(N)=(B(N)-A(N,1:N-1)*(x(1:N-1))')/A(N,N);
else
x(j)=(B(j)-A(j,1:j-1)*x(1:j-1)'-A(j,j+1:N)*x0(j+1:N))/A(j,j);
end
end
x0=x';
end
Gauss_Seidel_X=x'
(3)共轭梯度法,俺忘记了.
运行结果:
real_X =
1.0000
-2.0000
3.0000
-2.0000
1.0000
Jacobi_X =
1.0318
-2.0297
2.9451
-1.9920
0.9620
Gauss_Seidel_X =
1.0001
-2.0001
2.9998
-2.0000
0.9999
可见:Gauss_Seidel法收敛速度快.