数值分析实验三

题目

随机生成一个n阶方阵与n阶向量构成Ax=b
1、分别判断J法和GS法的收敛性
• 是否能收敛
• 报告中应生成部分不收敛的矩阵
• 估计J法和GS法收敛速度哪个更快
2、实现用J法和GS法解该方程组
3、实验判断J法和GS法的收敛速度,并与理论估计作对比

代码

main.m

%% A*x = b ,J法和GS法求解x
clear all %初始化,清空变量
close all
clc %清空窗口命令
 
%% 随机生成方阵和矩阵
n=3;  %阶数
A=rand(n);  %方阵
disp('A=');
disp(A);
b=rand(n,1);  %向量
 
%雅可比迭代法
fprintf('**********雅可比迭代法**********\n');
x=Jacobi(A,b,n,1e-4,500);
 
%高斯-塞德尔迭代法
fprintf('**********高斯-塞德尔迭代法**********\n');
x=Gauss(A,b,n,1e-4,500);

Jacobi.m

function x=Jacobi(A,b,n,ep,maxN)
%%雅可比迭代法解线性方程组Ax=b
%A为系数矩阵,b为右端向量,x0为初始解向量
%ep为精度,maxN为最大迭代次数,x返回近似解向量
 
x0=zeros(n,1);     %初值
x=zeros(n,1);     %给x赋值
k=0;
 
while(k<maxN)
    for i=1:n
        x(i)=(b(i)-A(i,[1:i-1,i+1:n])*x0([1:i-1,i+1:n]))/A(i,i);
    end
    if norm(x-x0)<ep
        break;
    end
    x0=x;
    k=k+1;
end
 
if k==maxN
    disp('迭代次数已到达上限!');
else
    disp(['迭代次数 k=',num2str(k)]);
disp('x=');      %输出结果
disp(x);      %输出结果
end

Gauss.m

function x=Gauss(A,b,n,ep,maxN)
%高斯-塞德尔迭代法解线性方程组Ax=b
%A为系数矩阵,b为右端向量,x0为初始解向量
%ep为精度,maxN为最大迭代次数,x返回近似解向量
 
x0=zeros(n,1);     %初值
x=zeros(n,1);     %给x赋值
k=0;
 
while k<maxN
   for i=1:n
        if i==1
            x(1)=(b(1)-A(1,2:n)*x0(2:n))/A(1,1);
        elseif i==n
                x(n)=(b(n)-A(n,1:n-1)*x(1:n-1))/A(n,n);
        else
                x(i)=(b(i)-A(i,1:i-1)*x(1:i-1)-A(i,i+1:n)*x0(i+1:n))/A(i,i);
        end
   end
   if norm(x-x0)<ep
       break;
   end
   x0=x;
   k=k+1;
end
 
if k==maxN
    disp('迭代次数已到达上限!');
else
    disp(['迭代次数 k=',num2str(k)]);
disp('x=');      %输出结果
disp(x);      
end

结果

1、第一次

(1)草稿纸计算雅可比迭代法下的谱半径为0.592,高斯-塞德尔迭代法下的谱半径为0.354,因为后者更小,所以GS法收敛速度更快。
(2)解方程组的结果如上。
(3)由实验结果可知GS法迭代次数为7,小于J法的迭代次数19,所以收敛更快,与理论估计一致。

2、第二次

(2)草稿纸计算雅可比迭代法下的谱半径为5.424,高斯-塞德尔迭代法下的谱半径为28.1114,都大于1,所以两个方法都不收敛。
(2)解方程组的结果如上。
(3)由实验结果可知J法和GS法都不收敛,与理论估计一致。

3、第三次

(3)草稿纸计算雅可比迭代法下的谱半径为0.743,高斯-塞德尔迭代法下的谱半径为0.533,因为后者更小,所以GS法收敛速度更快。
(2)解方程组的结果如上。
(3)由实验结果可知GS法迭代次数为7,小于J法的迭代次数32,所以收敛更快,与理论估计一致。

4、第四次

(4)草稿纸计算雅可比迭代法下的谱半径为1.448,高斯-塞德尔迭代法下的谱半径为2.133,都大于1,所以两个方法都不收敛。
(2)解方程组的结果如上。
(3)由实验结果可知J法和GS法都不收敛,与理论估计一致。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少年李富贵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值