0

MATLAB 代码中的问题,用于求解所需的“n”个 Ax = b 类型的联立方程,前提是求解涉及上三角矩阵的方法,并且 A 和 b 的值与 x 值一起演变为 Aprime 和 bprime。

问题是编写一个代码,可以使用上三角矩阵求解“n”个 Ax = b 类型的联立方程。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]

一个=

 1     1     0
 2     1     1
 1     2     3

b= [3;7;14]

b =

 3
 7
14

[x, Aprime, bprime] = 已解决(A, b)

x =

 1
 2
 3

素=

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

bprim =

3.0000

-0.5000 -11.0000

第二种是,

A = [1 2 3; 4 5 6]

一个=

 1     2     3
 4     5     6

b = [7;8;9;10]

b =

 7
 8
 9
10

[x, Aprime, bprime] = 已解决(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 回答