0

Ax = b 型の希望する 'n' 個の連立方程式を解くための MATLAB コードの問題で、解法に上三角行列の方法が含まれ、A と b の値が x の値と共に Aprime と bprime に展開されます。

問題は、上三角行列を使って Ax = b 型の n 個の連立方程式を解くコードを書くことです。A と b の値は、コマンド ウィンドウで行列として指定されます。プログラムが正常に実行されると、コードは応答として Aprime、bprime、および x の値を返す必要があります。コードはまた、特定の方程式に対して「エラー、行列の次元が一致しません」(または何でも!) として出力を与える必要があります! 上記のエラーメッセージとともにエラーが表示されることを除いて、コードは正常に機能します。

私が使用したコードは次のとおりです。

function [x, Aprime, bprime]=solved(A,b)
    n = size(A);
    % Assign the size of A to n.
    if (n(1)~= n(2)) || (det(A) == 0)
        % Checking through the determinant method for dimension error.
        disp('ERROR!! Matrix dimensions should agree.')
    else
        for j=1 %:n-1
            % Fix the first value of j to 1.
            if A(j,j)==0
                u=A(j,:);
                A(j,:)=A(j+1,:);
                A(j+1,:)=u;
                %using u as a temperary value "u", to save the row,to swap the positions of two rows.
                v=b(j);
                b(j)=b(j+1);
                b(j+1)=v;
                %using u as a temperary variable "v", to save the row,to interchange the positions of two rows in b matrix.
            end

            for i=j+1:n
                if A(i,j)~=0
                    %If the first number of the particular row  be zero.
                    b(i)=b(j)+(b(i)*(-A(j,j)/A(i,j)));
                    A(i,:) = A(j,:)+(A(i,:)*(-A(j,j)/A(i,j)));
                end
                %After this 'for'loop, the matrix becomes a upper triangle matrix.
            end

            Aprime=A;
            bprime=b;
            x=A\b;
            % Using this command the values of x,y,z can be found.
        end
    end
end

適切な修正を提供してください....

コマンド ウィンドウで得られた結果、

A = [1 1 0;2 1 1;1 2 3]

A =

 1     1     0
 2     1     1
 1     2     3

b= [3;7;14]

b =

 3
 7
14

[x, Aprime, bprime] = 解決済み(A, b)

×=

 1
 2
 3

アプリメ=

1.0000    1.0000         0
     0    0.5000   -0.5000
     0   -1.0000   -3.0000

bprime =

3.0000

-0.5000 -11.0000

2番目のタイプは、

A = [1 2 3; 4 5 6]

A =

 1     2     3
 4     5     6

b = [7;8;9;10]

b =

 7
 8
 9
10

[x, Aprime, bprime] = solve(A, b) エラー!! 行列の次元は一致する必要があります。解決済みのエラー (2 行目) n = size(A); "C:\Users\Hari\Documents\solved.m>solved" への呼び出し中に、出力引数 "x" (およびおそらくその他) が割り当てられません。

4

1 に答える 1

0

を使用する代わりにdisp、関数を使用しerrorてエラーを通知します。これにより、MATLABはエラー後に実行を続行しないようになります。さらに、スタイルは組み込みのMATLABエラーと一致します。

于 2012-06-14T13:43:40.353 に答える