用matlab求解jacobi,用jacobi迭代法求解线性方程,求助matlab大师

问题描述:

用jacobi迭代法求解线性方程,求助matlab大师

用jacobi迭代法求解线性方程

9x1-x2+x3=10 -x1+10x2-2x3=7 -2x1+x2+10x3=6,设迭代初值为0,精度为10^-6

1个回答

分类:

综合

2014-11-30

问题解答:

我来补答

找了段代码,稍加改造,供参考:

function [x,n]=jacobi(A,b,eps,x0)

% Jacobi迭代法求解线性方程组,其中

%  A --- 方程组的系数矩阵

%  b --- 方程组的右端项

%  eps --- 精度要求,缺省为1e-6

%  x0 --- 解的初值,可省略

%  x ---  方程组的解

%  n ---  迭代次数

if nargin < 2,error('输入参数数量不足'); end

if nargin < 4,x0 = zeros(length(b),1); end

if nargin < 3,eps= 1.0e-6; end

M = 200;         % 最大迭代次数

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

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

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

B=D\(L+U);

f=D\b;

x=B*x0+f;

n=1; %迭代次数

while norm(x-x0)>=eps

x0=x;

x=B*x0+f;

n=n+1;

if(n>=M)

disp('Warning:迭代次数太多,可能不收敛!');

return;

end

end

调用示例:

A = [

9  -1 3

-1 10 -2

-2 1  10

];

b=[10; 7; 6];

jacobi(A,b,1e-6)

得到结果:

ans =

0.98126975286522

0.93860544813362

0.70239327635714

直接用A\b求

ans =

0.98126951092612

0.93860561914672

0.70239334027055

可以看到,精度满足小数点后6位数字的要求.

展开全文阅读

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值