Frage

Ich habe einige Probleme auf Einstellung von n-linearen Gleichungen in matlab.I weiß nicht, wie kann ich in matlab.I erklären Matlab-Code für Einstellung von n-linearen Gleichungen müssen ..

War es hilfreich?

Lösung

Sie können n-lineare Gleichungen als eine Matrixgleichung schreiben, es zu lösen. Hier können Sie gutes Beispiel finden: http: //blogs.mathworks .com / / 2007/09/13 / Matlab-Grundlagen-Video-Lösung-lineare Gleichungen / (Video!) wählt

Siehe auch diese Seiten:
http://en.wikipedia.org/wiki/System_of_linear_equations
http://en.wikipedia.org/wiki/Matrix_equation

Andere Tipps

Sie können ein lineares System auf verschiedene Weise lösen, je nachdem, ob es eine eindeutige Lösung existiert oder nicht.

Ein einfacher Weg ist, indem es reduziert gestaffelte Form (Rref) reduziert wird.

, um das System vor:

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

Sie können die Koeffizientenmatrix A schreiben, und die RHS, B wie folgt: (' ist die transponierte Operator)

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

A =

     1     5
     2    -1

>> B = [4 1]'

B =

     4
     1

Sie können es als eine erweiterte Matrix schreiben (A | B):

>> horzcat(A,B)

ans =

     1     5     4
     2    -1     1

Und dann findet die REF (A | B)

>> rref(ans)

ans =

    1.0000         0    0.8182
         0    1.0000    0.6364

Und daher x ~ 0,8182, y ~ 0,6364.

Der absolut schnellste Weg lineare Gleichungen in MATLAB zu lösen, ist einfach Ihre Gleichung zur Einrichtung auf dem Formular

AX = B

und dann lösen, indem

X = A\B

Sie können ausgeben

help mldivide

Weitere Informationen über die Matrix Division zu finden und welche Grenzen es hat.

A-Code für iteratives Verfahren Guase Seidel Tol ist Fehlertoleranz x0 erste Vermutung für Lösung


 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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top