2012-06-14 58 views
0

MATLAB中的問題用於求解期望的'n'類型的聯立方程的數量Ax = b假設求解涉及上三角矩陣,A和b的值與x值一起演變爲Aprime和bprime。用於求解期望'n'類型聯立方程的MATLAB代碼Ax = b

問題是要編寫一個代碼,可以使用上三角矩陣求解類型爲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 4月IME,bprime] =解決(A,B)

X =

1 
2 
3 

Aprime =

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

bprime =

3.0000 

-0.5000 - 11。0000

第二種類型是,

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] =求解(A,b) 錯誤!矩陣尺寸應該一致。 (第2行) n =大小(A); 在調用 「C:\ Users \ Hari \ Documents \ solve.m>」時未分配輸出參數「x」(也可能是其他人)。

+0

你能解決你的問題的格式嗎?目前很難閱讀。 –

+0

如果我理解你的問題,你所要做的就是將x,Aprime和bprime設置爲某些東西(如x = [];),你在哪裏顯示錯誤 – ioums

+0

我不明白你的意思是什麼格式!問題是使用上三角矩陣求解類型Ax = b的聯立方程! –

回答

0

代替使用disp的,使用函數error通信錯誤。這將告訴MATLAB不要在錯誤發生後繼續執行。另外,該風格將匹配內置的MATLAB錯誤。

+0

使用「錯誤」而不是「顯示」返回相同的錯誤...是程序的邏輯正確嗎? –

+0

不,當我替換'disp('ERROR !!矩陣尺寸應該同意'')'有'錯誤'('矩陣尺寸應該同意')',我的輸出現在只是輸出錯誤信息和行號。當你問「邏輯是否正確」時,意味着什麼?你的問題說:「代碼工作正常,除了錯誤消息」。還有什麼你想要幫忙的嗎?如果是這樣,請編輯您的問題以清楚說明您的問題。 – Peter

+0

是的,它的工作原理!當我運行它時,我沒有保存最後一次!現在很好!關於邏輯,我的意思是如果程序適合解決n號。使用上三角矩陣的Ax = b類型的同時等式! –