matlab迭代输出过程详解,matlab jacobi 要求用fprintf输出每一步迭代过程。

满意答案

00e27ab806e4881f8254fe7ae8741834.png

qin2710236

2016.05.20

00e27ab806e4881f8254fe7ae8741834.png

采纳率:40%    等级:10

已帮助:468人

你这个程序有几处错误,如函数有输出参数时,结果会自动出现,没必要用fprintf输出。如须要用fprintf输出到屏幕上,则定义函数时可把输出参数去掉,如:function jacobi(A,b,ep,it_max)

当x有多个值时,要单独用一次fprintf ,对你的程序改下:

function jacobi(A,b,ep,it_max)

%function [x,k]=jacobi(A,b,ep,it_max)

%利用jacobi 迭代法解线性方程组AX=b,

if nargin < 4

it_max=100;

end

if nargin<3

ep=1e-5;

end

d=diag(A);

L=-tril(A,-1);

U=-triu(A,1);

if min(abs(d))<1e-10

error ('%对角元素为0,计算失败!');

end

n=length(b);

x=zeros(n,1);

k=1;

invD=spdiags(1./d,0,n,n);

B=invD*(L+U);

f=invD*b;

while k

y=B*x+f;

if norm(y-x,inf)

break;

end

x=y;

k=k+1;

%fprintf('k=%2d,x=%.8e\n',k,x);

fprintf('k=%2d\n',k);

fprintf('x=%.8e\n',x);

end

%test.m clc; clear; A=[10 -1 2 0;-1 11 -1 3;2 -1 10 -1;1 3 -1 8]; b=[6 25 -11 15]';jacobi(A,b)

00分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值