欢迎来到天天文库
浏览记录
ID:48308018
大小:82.01 KB
页数:7页
时间:2019-11-06
《数值分析实验报告 jacobi迭代和seidel迭代分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数值分析实验报告一、实验目的1、了解熟悉jacobi迭代法和seidel迭代法的解法2、将原理与matlab语言结合起来,编程解决问题3、分析实验结果二、实验题目设线性方程组为考察用jacobi迭代法和seidel迭代法求解该线性方程组的收敛情况。如果收敛,给出误差满足的解。三、实验原理将A作如下分解这里Jacobi迭代矩阵为Seidel迭代矩阵为它们的迭代格式都可化为则迭代格式对任何初值都瘦脸的充要条件是迭代矩阵谱半径Jacobi迭代矩阵的特征方程为Seidel迭代矩阵的特征方程为四、实验内容用matlab编写计
2、算jacobi迭代矩程序,建立m文件如下:function[M]=BJ(A)D=diag(diag(A));L=tril(-A)+D;U=triu(-A)+D;M=inv(D)*(L+U);输入:>>A=[201-3-1;31807;-1240-2;10-15];>>[M]=BJ(A)M:M=0-0.05000.15000.0500-0.166700-0.38890.0250-0.050000.0500-0.200000.20000则jacobi迭代矩阵为:用matlab求jacobi迭代矩阵的特征根的算法如下:>
3、>A=[0-0.050.15-0.05;-0.6700-0.39;0.025-0.0500.05;-0.200.20];[V,D]=eig(A)V=-0.1892+0.0450i-0.1892-0.0450i-0.3812-0.5005-0.9467-0.94670.88670.5461-0.1528-0.1181i-0.1528+0.1181i-0.2099-0.0466-0.1056+0.1325i-0.1056-0.1325i0.15610.6701D=-0.1774+0.0864i0000-0.1774-0
4、.0864i00000.219400000.1355则最大特征根为:0.2194则,所以jacobi迭代法收敛用matlab编程jacobi迭代法求根的算法:function[n,x]=jacobi(A,b,X,nm,w)%用雅克比迭代法求解方程组Ax=b%输入:A为方程组的系数矩阵,b为方程组右端的列向量,X为迭代初值构成的列向量,nm为最大迭代次数,w为误差精度%输出:x为求得的方程组的解构成的列向量,n为迭代次数n=1;m=length(A);D=diag(diag(A));%令A=D-L-U,计算矩阵DL=
5、tril(-A)+D;%令A=D-L-U,计算矩阵LU=triu(-A)+D;%令A=D-L-U,计算矩阵UM=inv(D)*(L+U);%计算迭代矩阵g=inv(D)*b;%计算迭代格式中的常数项%下面是迭代过程whilen<=nmx=M*X+g;%用迭代格式进行迭代ifnorm(x-X,2)6、的最终结果(并不是方程组的解)disp('在最大迭代次数内不收敛!');输入数据:>>A=[201-3-1;31807;-1240-2;10-15];b=[1;2;10;-1];X=[0;0;0;0];>>nm=100;>>w=1e-4;>>[n,x]=jacobi1(A,b,X,nm,w)迭代次数为n=6方程组的解为x=0.06870.16450.2352-0.1667n=6x=0.06870.16450.2352-0.1667所以,满足精度的根为x=0.06870.16450.2352-0.1667迭代次数为67、次用matlab编程计算seidel迭代矩阵算法为:function[M]=BS(A)D=diag(diag(A));L=tril(-A)+D;U=triu(-A)+D;M=inv(D-L)*U;输入:>>A=[201-3-1;31807;-1240-2;10-15];>>[M]=BS(A)M=0-0.05000.15000.050000.0083-0.0250-0.39720-0.00170.00500.071100.0097-0.02900.0042则seidel迭代矩阵为:用matlab编程求得seidel矩8、阵的算法为:>>A=[0-0.050.150.05;00.0083-0.025-0.3972;0-0.00170.0050.0711;00.0097-0.0290.0042];[V,D]=eig(A)V=1.0000-0.1596+0.6750i-0.1596-0.6750i-0.910400.69650.69650.39240-0.1250+0.0028i
6、的最终结果(并不是方程组的解)disp('在最大迭代次数内不收敛!');输入数据:>>A=[201-3-1;31807;-1240-2;10-15];b=[1;2;10;-1];X=[0;0;0;0];>>nm=100;>>w=1e-4;>>[n,x]=jacobi1(A,b,X,nm,w)迭代次数为n=6方程组的解为x=0.06870.16450.2352-0.1667n=6x=0.06870.16450.2352-0.1667所以,满足精度的根为x=0.06870.16450.2352-0.1667迭代次数为6
7、次用matlab编程计算seidel迭代矩阵算法为:function[M]=BS(A)D=diag(diag(A));L=tril(-A)+D;U=triu(-A)+D;M=inv(D-L)*U;输入:>>A=[201-3-1;31807;-1240-2;10-15];>>[M]=BS(A)M=0-0.05000.15000.050000.0083-0.0250-0.39720-0.00170.00500.071100.0097-0.02900.0042则seidel迭代矩阵为:用matlab编程求得seidel矩
8、阵的算法为:>>A=[0-0.050.150.05;00.0083-0.025-0.3972;0-0.00170.0050.0711;00.0097-0.0290.0042];[V,D]=eig(A)V=1.0000-0.1596+0.6750i-0.1596-0.6750i-0.910400.69650.69650.39240-0.1250+0.0028i
此文档下载收益归作者所有