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

用jacobi迭代法求解线性方程9x1-x2+x3=10-x1+10x2-2x3=7-2x1+x2+10x3=6,设迭代初值为0,精度为10^-6求助matlab大师啊,... 用jacobi迭代法求解线性方程
9x1-x2+x3=10 -x1+10x2-2x3=7 -2x1+x2+10x3=6,设迭代初值为0,精度为10^-6
求助matlab大师啊,,急啊!!!!
展开
tianxiawulang
推荐于2017-11-26 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2549万
展开全部

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

 

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位数字的要求。

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
TableDI
2024-07-18 广告
VLOOKUP是Excel中用于垂直查找的函数,其基本用法包括四个参数:1. 查找值:即在数据表首列中需要搜索的值。2. 数据表:包含查找值的单元格区域或数组。3. 返回值所在列数:指定返回查询区域中第几列的值。4. 查找方式:选择精确匹配... 点击进入详情页
本回答由TableDI提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式