数值分析迭代法 数值分析实验报告 jacobi迭代和seidel迭代分析.doc
文本预览下载声明
数值分析迭代法 数值分析实验报告 jacobi迭代和seidel迭代分析
导读:就爱阅读网友为您分享以下“数值分析实验报告 jacobi迭代和seidel迭代分析”资讯,希望对您有所帮助,感谢您对92的支持!
数值分析实验报告
一、 实验目的
1、了解熟悉jacobi迭代法和seidel迭代法的解法
2、将原理与matlab语言结合起来,编程解决问题
3、分析实验结果
二、实验题目
设线性方程组为
?201?3?1??x1??1???????7??x2??2??3180
??1240?2??x???10?
???3????10?15??x???1????4???
考察用jacobi迭代法和seidel迭代法求解该线性方程组的收敛情况。如果收敛,给出误差满足x(k)?x(k?1)
??10?4的解。
三、实验原理
将A 作如下分解
A?D?L?U
这里
?a11?
D?????a22??0???a?,L??21??????ann???an100??an2?0??0?a12??a1n??0??0?0??a2n?,U??? ?????????????0?00?0??Jacobi迭代矩阵为BJ?D?1(L?U)
Seidel迭代矩阵为BS?(D?L)?1U
它们的迭代格式都可化为x(k?1)?Bx(k)?g
则迭代格式对任何初值都瘦脸的充要条件是迭代矩阵谱半径?(B)?max?k?1,其中,?k是矩阵B的n个特征值,k?1,2?,n 1?k?n
Jacobi迭代矩阵的特征方程为det(?I?BJ)?0
Seidel迭代矩阵的特征方程为det(?I?BS)?det(?(D?L)?U)?0
四、实验内容
用matlab编写计算jacobi迭代矩程序,建立m文件如下:
function[M]=BJ(A)
D=diag(diag(A));
L=tril(-A)+D;
U=triu(-A)+D;
M=inv(D)*(L+U);
输入:
gt;gt; A=[20 1 -3 -1;3 18 0 7;-1 2 40 -2;1 0 -1 5];
gt;gt; [M]=BJ(A)
M:
M =
0 -0.0500 0.1500 0.0500
-0.1667 0 0 -0.3889
0.0250 -0.0500 0 0.0500
-0.2000 0 0.2000 0
0?0.050.150.05?????0.166700?0.3889??则jacobi迭代矩阵为:BJ?? 0.025?0.0500.05?????0.2?00.20??
用matlab求jacobi迭代矩阵的特征根的算法如下:
gt;gt; A=[0 -0.05 0.15 -0.05;-0.67 0 0 -0.39;0.025 -0.05 0 0.05;-0.2 0 0.2 0];[V,D]=eig(A)
V =
-0.1892 + 0.0450i -0.1892 - 0.0450i -0.3812 -0.5005
-0.9467 -0.9467 0.8867 0.5461 -0.1528 - 0.1181i -0.1528 + 0.1181i -0.2099 -0.0466 -0.1056 + 0.1325i -0.1056 - 0.1325i 0.1561 0.6701
D =
-0.1774 + 0.0864i 0 0 0 0 -0.1774 - 0.0864i 0 0 0 0 0.2194 0 0 0 0 0.1355 则最大特征根为:0.2194 则?(BJ)?0.2194?1,所以jacobi迭代法收敛
用matlab编程jacobi迭代法求根的算法:
function [n,x]=jacobi(A,b,X,nm,w)
%用雅克比迭代法求解方程组A
显示全部