最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

数值分析实验报告 jacobi迭代和seidel迭代分析

来源:动视网 责编:小OO 时间:2025-10-02 07:26:26
文档

数值分析实验报告 jacobi迭代和seidel迭代分析

数值分析实验报告一、实验目的1、了解熟悉jacobi迭代法和seidel迭代法的解法2、将原理与matlab语言结合起来,编程解决问题3、分析实验结果二、实验题目设线性方程组为考察用jacobi迭代法和seidel迭代法求解该线性方程组的收敛情况。如果收敛,给出误差满足的解。三、实验原理将A作如下分解这里Jacobi迭代矩阵为Seidel迭代矩阵为它们的迭代格式都可化为则迭代格式对任何初值都瘦脸的充要条件是迭代矩阵谱半径Jacobi迭代矩阵的特征方程为Seidel迭代矩阵的特征方程为四、实验内
推荐度:
导读数值分析实验报告一、实验目的1、了解熟悉jacobi迭代法和seidel迭代法的解法2、将原理与matlab语言结合起来,编程解决问题3、分析实验结果二、实验题目设线性方程组为考察用jacobi迭代法和seidel迭代法求解该线性方程组的收敛情况。如果收敛,给出误差满足的解。三、实验原理将A作如下分解这里Jacobi迭代矩阵为Seidel迭代矩阵为它们的迭代格式都可化为则迭代格式对任何初值都瘦脸的充要条件是迭代矩阵谱半径Jacobi迭代矩阵的特征方程为Seidel迭代矩阵的特征方程为四、实验内
数值分析实验报告

一、实验目的

1、了解熟悉jacobi迭代法和seidel迭代法的解法

2、将原理与matlab语言结合起来,编程解决问题

3、分析实验结果

二、实验题目

设线性方程组为

 

考察用jacobi迭代法和seidel迭代法求解该线性方程组的收敛情况。如果收敛,给出误差满足的解。

三、实验原理

将A 作如下分解

这里

Jacobi迭代矩阵为

Seidel迭代矩阵为

它们的迭代格式都可化为

则迭代格式对任何初值都瘦脸的充要条件是迭代矩阵谱半径

Jacobi迭代矩阵的特征方程为

Seidel迭代矩阵的特征方程为

四、实验内容

用matlab编写计算jacobi迭代矩程序,建立m文件如下:

function[M]=BJ(A)

D=diag(diag(A));        

L=tril(-A)+D;           

U=triu(-A)+D;          

M=inv(D)*(L+U);       

输入:

>> A=[20 1 -3 -1;3 18 0 7;-1 2 40 -2;1 0 -1 5];

>> [M]=BJ(A)

M:

M =

         0   -0.0500    0.1500    0.0500

   -0.1667         0         0   -0.38

    0.0250   -0.0500         0    0.0500

   -0.2000         0    0.2000         0

则jacobi迭代矩阵为:

用matlab求jacobi迭代矩阵的特征根的算法如下:

>> 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.12 + 0.0450i  -0.12 - 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.08i        0                  0                  0          

        0            -0.1774 - 0.08i        0                  0          

        0                  0             0.2194                  0          

        0                  0                  0             0.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令A=D-L-U,计算矩阵D

L令A=D-L-U,计算矩阵L

U令A=D-L-U,计算矩阵U

M计算迭代矩阵

g计算迭代格式中的常数项

%下面是迭代过程

while n<=nm

    x=M*X+g;         %用迭代格式进行迭代

if norm(x-X,2)disp('迭代次数为');n

 方程组的解为');x

 上面:达到精度要求就结束程序,输出迭代次数和方程组的解

end

%下面:如果达到最大迭代次数仍不收敛,输出警告语句及迭代的最终结果(并不是方程组的解)

disp('在最大迭代次数内不收敛!');

输入数据:

>> A=[20 1 -3 -1;3 18 0 7;-1 2 40 -2;1 0 -1 5];

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.0687

    0.15

    0.2352

   -0.1667

n =

     6

x =

    0.0687

    0.15

    0.2352

   -0.1667

所以,满足精度的根为x = 0.0687  0.15  0.2352  -0.1667  迭代次数为6次

用matlab编程计算seidel迭代矩阵算法为:

function[M]=BS(A)

D=diag(diag(A));            

L=tril(-A)+D;               

U=triu(-A)+D;               

M=inv(D-L)*U; 

             

输入:

>> A=[20 1 -3 -1;3 18 0 7;-1 2 40 -2;1 0 -1 5];

>> [M]=BS(A)

M =

         0   -0.0500    0.1500    0.0500

         0    0.0083   -0.0250   -0.3972

         0   -0.0017    0.0050    0.0711

         0    0.0097   -0.0290    0.0042

则seidel迭代矩阵为:

用matlab编程求得seidel矩阵的算法为:

>> A=[0 -0.05 0.15 0.05;0 0.0083 -0.025 -0.3972;0 -0.0017 0.005 0.0711;0 0.0097 -0.029 0.0042];[V,D]=eig(A)

V =

   1.0000            -0.1596 + 0.6750i  -0.1596 - 0.6750i  -0.9104          

        0             0.6965             0.6965             0.3924          

        0            -0.1250 + 0.0028i  -0.1250 - 0.0028i   0.1313          

        0             0.0070 - 0.1348i   0.0070 + 0.1348i   0.0000          

D =

        0                  0                  0                  0          

        0             0.0088 + 0.0768i        0                  0          

        0                  0             0.0088 - 0.0768i        0          

        0                  0                  0            -0.0001          

则特征根为  0.008+0.0768i  0.0088-0.0768i  -0.0001

则,所以seidel迭代法收敛

用seidel迭代法求根的算法为:

function [n,x]=gaussseidel(A,b,X,nm,w)

%用高斯-赛德尔迭代法求解方程组Ax=b

%输入:A为方程组的系数矩阵,b为方程组右端的列向量,X为迭代初值构成的列向量,nm为最大迭代次数,w为误差精度

%输出:x为求得的方程组的解构成的列向量,n为迭代次数

n=1;

m=length(A);

I生成m*m阶的单位矩阵

D令A=D-L-U,计算矩阵D

L令A=D-L-U,计算矩阵L

U令A=D-L-U,计算矩阵U

M计算迭代矩阵

g=inv(I-inv(D)*L)*(inv(D)*b);  %计算迭代格式中的常数项

%下面是迭代过程

while n<=nm

    x=M*X+g;              %用迭代格式进行迭代

 迭代次数为');n

 方程组的解为');x

 上面:达到精度要求就结束程序,输出迭代次数和方程组的解

end

%下面:如果达到最大迭代次数仍不收敛,输出警告语句及迭代的最终结果(并不是方程组的解)

disp('在最大迭代次数内不收敛!');

disp('最大迭代次数后的结果为');x

输入数据:

>> A=[20 1 -3 -1;3 18 0 7;-1 2 40 -2;1 0 -1 5];

b=[1;2;10;-1];

X=[0;0;0;0];

nm=100;

w=1e-4;

[n,x]=gaussseidel(A,b,X,nm,w)

迭代次数为

n =

     5

方程组的解为

x =

    0.0687

    0.15

    0.2352

   -0.1667

n =

     5

x =

    0.0687

    0.15

    0.2352

   -0.166

满足精度的根为x =0.0687   0.15  0.2352  -0.1667  迭代次数为5次

五、实验分析

从实验过程可以看到求出满足精度的根,seidel迭代要比jacobi迭代快,这是因为在jacobi迭代计算中,计算向量时是按分量的角标由小到大依次计算的。如果随着k的增大不断靠近解,可以期盼分量,于是seidel迭代法的收敛速度比jacobi迭代法的收敛速度快,所以迭代次数少。

文档

数值分析实验报告 jacobi迭代和seidel迭代分析

数值分析实验报告一、实验目的1、了解熟悉jacobi迭代法和seidel迭代法的解法2、将原理与matlab语言结合起来,编程解决问题3、分析实验结果二、实验题目设线性方程组为考察用jacobi迭代法和seidel迭代法求解该线性方程组的收敛情况。如果收敛,给出误差满足的解。三、实验原理将A作如下分解这里Jacobi迭代矩阵为Seidel迭代矩阵为它们的迭代格式都可化为则迭代格式对任何初值都瘦脸的充要条件是迭代矩阵谱半径Jacobi迭代矩阵的特征方程为Seidel迭代矩阵的特征方程为四、实验内
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top