2009-11-26 2 views
-5

У меня есть некоторые проблемы с установкой n-линейных уравнений в matlab.I не знаю, как я могу объявить в matlab.I нужен код matlab для установки n-линейных уравнений ..набор n-линейных уравнений в matlab

+2

Не дублирует свои комментарии, и добавить домашнее задание тега, если это необходимо. –

ответ

3

Вы можете написать n-линейные уравнения как одно матричное уравнение для его решения. Здесь вы можете найти отличный пример: (! Видео) http://blogs.mathworks.com/pick/2007/09/13/matlab-basics-video-solving-linear-equations/

Смотрите так же эти страницы:
http://en.wikipedia.org/wiki/System_of_linear_equations
http://en.wikipedia.org/wiki/Matrix_equation

+0

У меня есть n-уравнения и n-неизвестные. Что я должен сделать, так это определить эти уравнения, чтобы при вводе ввода был задан выход. Это пример ввода и вывода нашей программы. Это поможет распознать нашу проблему. A1X1 + A2X2 .... + AnXn = B1. , , AnXn ............... = Bn, что мы имеем n-неизвестные и n уравнений, и я должен определить эти уравнения в matlab. –

+2

ТАК? В чем проблема? Прочитайте wiki ... TUrning n-уравнений в матричное уравнение является одной из основных задач линейной алгебры. Если вы не можете этого сделать, то ваша проблема в плохую математику, а не matlab ... – Gacek

1

Вы можете решить линейную систему по-разному, в зависимости от того, существует ли единственное решение или нет.

Простым способом является сокращение его до уменьшенного эшелона (rref).

Рассмотрим систему:

x + 5y = 4 
2x - y = 1 

можно записать коэффициент матрицы А, а РИТ, В следующим образом: (' оператор транспонирования)

>> A = [1 5; 2 -1] 

A = 

    1  5 
    2 -1 

>> B = [4 1]' 

B = 

    4 
    1 

Вы можете написать его как увеличенная матрица (A | B):

>> horzcat(A,B) 

ans = 

    1  5  4 
    2 -1  1 

А затем найти REF (A | B)

>> rref(ans) 

ans = 

    1.0000   0 0.8182 
     0 1.0000 0.6364 

И, следовательно, x ~ .8182, y ~ .6364.

+0

У меня есть n-уравнения и n-неизвестные. Что я должен сделать, так это определить эти уравнения, чтобы при вводе ввода выход будет дан.Это пример ввода и вывода нашей программы. Это поможет распознать нашу проблему. A1X1 + A2X2 .... + AnXn = B1 . . . AnXn ............... = Bn что у нас есть n-неизвестные и n уравнений, и я должен определить эти уравнения в Matlab. –

1

Абсолютно быстрый способ решения линейных уравнений в MATLAB просто настроить ваше уравнение в форме

AX = B 

, а затем решить,

X = A\B 

Вы можете оформить

help mldivide 

, чтобы найти дополнительную информацию о делении матрицы и ограничениях, которые она имеет.

+0

Но это будет работать, только если есть уникальное решение. (Ie A обратим). –

+1

@Alex: Да, и это произведет предупреждение, сказав это. Он будет работать лучше, чем inv (A) * B. Я также проверил ваше решение, и он испытывает такую ​​же проблему (пока он длиннее). –

0

код для итерационного метода Зейделя Guase тола толерантности ошибки x0 является первой догадкой для решения


function seidel(A,b,x0,tol,itmax) 
%Solve the system Ax=b using the Gauss-Seidel iteration method. 
clc 
% ======================================================= 
% Programmer : A. Ziaee mehr 
% 

help seidel 
n=length(b); 
x=zeros(n,1); 
%fprintf('\n') 
disp('The augumented matrix is = ') 
Augm=[A b] 
Y=zeros(n,1); 
Y=x0; 
for k=1:itmax +1 
    for ii=1:n 
     S=0; 
     for jj=1:ii-1 
      S=S+A(ii,jj)*x(jj); 
     end 
     for jj=ii+1:n 
      S=S+A(ii,jj)*x0(jj); 
     end 
     if (A(ii,ii)==0) 
      break 
     end 
     x(ii)=(-S+b(ii))/A(ii,ii); 
    end 
    err=abs(norm(x-x0)); 
    rerr=err/(norm(x)+eps); 
    x0=x; 
    Y=[Y x]; 
    if(rerr<tol) 
     break; 
    end 
end 
% Print the results 
if (A(ii,ii)==0) 
    disp('division by zero') 
elseif (k==itmax+1) 
    disp('No convergence') 
else 
    %fprintf('\n') 
    disp('The solution vector are : ') 
    fprintf('\n') 
    disp('iter 0  1   2   3   4 ... '); 
    fprintf('\n') 
    for ii=1:n 
     fprintf('%1.0f= ',ii); 
     fprintf('%10.6f ',Y(ii,1:k+1)); 
     fprintf('\n') 
    end 
    fprintf('\n') 
    disp(['The method converges after ',num2str(k),' iterations to']) 
    x 
end 
+0

itmax - максимальное количество итераций, которые препятствуют тому, чтобы программа переходила к циклу noninishrd. – Abolfazl