2012-06-14 5 views
0

Проблема в коде MATLAB для решения нужного 'n' числа одновременных уравнений типа Ax = b при условии, что решение включает в себя метод верхняя треугольная матрица, а значения A и b развиваются в Aprime и bprime вместе со значениями x.Код MATLAB для решения нужного 'n' числа одновременных уравнений типа Ax = b

Проблема заключается в написании кода, который может решить «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 

б = [3; 7; 14]

б =

3 
7 
14 

[х, апрель IME, bprime] = решена (А, б)

х =

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

Второй тип,

А = [1 2 3; 4 5 6]

А =

1  2  3 
4  5  6 

б = [7; 8; 9; 10]

б =

7 
8 
9 
10 

[x, Aprime, bprime] = resolved (A, b) ОШИБКА !! Матричные размеры должны совпадать. Ошибка в решении (строка 2) n = размер (A); Выходной аргумент «x» (и, возможно, другие), не назначенный во время вызова «C: \ Users \ Hari \ Documents \ resolved.m> resolved».

+0

Вы можете исправить форматирование, о котором вы говорите? На данный момент очень трудно читать. –

+0

Если я понимаю ваш вопрос, все, что вам нужно сделать, это установить x, Aprime и bprime на что-то (например, x = [];), где вы показываете ошибку – ioums

+0

Я не понимаю, какое форматирование вы имеете в виду! Вопрос состоит в том, чтобы решить одновременные уравнения типа Ах = Ь, используя верхнюю треугольную матрицу! –

ответ

0

Вместо использования disp, используйте функцию error сообщить об ошибке. Это позволит MATLAB не пытаться продолжить выполнение после ошибки. Кроме того, стиль будет соответствовать встроенным ошибкам MATLAB.

+0

с использованием «error» вместо «disp» возвращает ту же ошибку ... правильная ли логика с программой? –

+0

Нет, когда я заменяю 'disp ('ERROR !! Матричные измерения должны совпадать.')' С 'error ('Матричные измерения должны совпадать.')', Мой вывод теперь просто печатает сообщение об ошибке и номер строки. Когда вы спрашиваете «правильно ли логика», что значит? В вашем вопросе говорится: «Код работает нормально, за исключением сообщения об ошибке». Есть ли что-то еще, с чем вы хотите помочь? Если да, отредактируйте свой вопрос, чтобы четко сформулировать свой вопрос. – Peter

+0

да, это работает !! Я не спас в последний раз, когда я запустил его! теперь все в порядке! о логике, я имел в виду, если программа подходит для решения n нет. одновременных уравнений типа Ах = Ь, используя верхнюю треугольную матрицу! –