Satz von n-linearen Gleichungen in Matlab
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 ..
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