matlab迭代输出过程详解,用MATLAB对高斯赛德尔迭代法仿真,怎样把解x1,x2,x3输出在同一坐标系中,怎样输出每一次迭代值....

共回答了16个问题采纳率:100%

你没把G-S方法迭代的流程图法出来,其实表4.2中的迭代数据是有问题的(少了一步).

可以生成你所给图中数据的程序:

A = [4 -1 1; 4 -8 1; -2 1 5];

b = [7; -21; 15];

x0 = zeros(3,1);

eps=1.0e-7;

D=diag(diag(A));%求A的对角矩阵

L=-tril(A,-1);%求A的下三角阵

U=-triu(A,1);%求A的上三角阵

G=(D-L)U;

f=(D-L)b;

Y = [1 zeros(1,3)];

y=G*x0+f;

n=1;%迭代次数

while norm(y-x0)>=eps

x0=y;

y=G*x0+f;

n=n+1;

Y(n,:) = [n y'];

end

% 生成图4.2

plot(Y(:,1),Y(:,2:4))

axis([1 12 0 5])

grid on

set(gca,'xtick',2:2:12,'ytick',0:5)

% 输出表4.2

fprintf('%it%.14ft%.14ft%.14fn',Y.')

20451f627d239e4dc49b6d7790ba0700.png

1 0.00000000000000 0.00000000000000 0.00000000000000

2 1.87500000000000 3.93750000000000 2.96250000000000

3 1.99375000000000 3.99218750000000 2.99906250000000

4 1.99828125000000 3.99902343750000 2.99950781250000

5 1.99987890625000 3.99987792968750 2.99997597656250

6 1.99997548828125 3.99998474121094 2.99999324707031

7 1.99999787353516 3.99999809265137 2.99999953088379

8 1.99999964044189 3.99999976158142 2.99999990386047

9 1.99999996443024 3.99999997019768 2.99999999173256

10 1.99999999461628 3.99999999627471 2.99999999859157

而正确的迭代过程应该是这样的(图形及数据输出部分相同,略):

A = [4 -1 1; 4 -8 1; -2 1 5];

b = [7; -21; 15];

x0 = zeros(3,1);

eps=1.0e-7;

D=diag(diag(A));%求A的对角矩阵

L=-tril(A,-1);%求A的下三角阵

U=-triu(A,1);%求A的上三角阵

G=(D-L)U;

f=(D-L)b;

% Y = [1 zeros(1,3)];

n=1;%迭代次数

while true

Y(n,:) = [n x0'];

y=G*x0+f;

if norm(y-x0)n=n+1;

x0=y;

end

输出数据如下(比你给的表格中多了第二行):

1 0.00000000000000 0.00000000000000 0.00000000000000

2 1.75000000000000 3.50000000000000 3.00000000000000

3 1.87500000000000 3.93750000000000 2.96250000000000

4 1.99375000000000 3.99218750000000 2.99906250000000

5 1.99828125000000 3.99902343750000 2.99950781250000

6 1.99987890625000 3.99987792968750 2.99997597656250

7 1.99997548828125 3.99998474121094 2.99999324707031

8 1.99999787353516 3.99999809265137 2.99999953088379

9 1.99999964044189 3.99999976158142 2.99999990386047

10 1.99999996443024 3.99999997019768 2.99999999173256

1年前

追问

2

4968145801

过程很好,只是我用的是MATLAB,我想用MATLAB输出,最好用能用word

形式,要是能发到我邮箱2634179500@qq.com.我有MATLAB的程序,但是运行不出来,如图一和二

运行出结果,但是波形和数表不能显示,求大神指点了

c17826d66ebd09af59ff95ffda204489.png

ba7845aa6fa93ea668ab18e66e8c34e2.png

4968145801

没看明白你的意思——我给的程序就是MATLAB的脚本,可以直接运行出结果,有什么问题吗?

你如果改成函数的话,应该把输出部分的代码放在while循环的外面,而不是里面。还有就是记录每步迭代结果的语句Y(n,:) = [n y'];不能随便删(当然,你可以改成别的变量)。另外,最后面一句的fprintf就是输出表格的,你没有那句怎么输出?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值