回覆列表
  • 1 # 使用者2158356699597

    找了段程式碼,稍加改造,供參考:

    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

  • 中秋節和大豐收的關聯?
  • 被朋友騙的負債累累是一種什麼感覺?