Question

J'ai quelques problèmes pour définir des équations n-linéaires dans matlab.Je ne sais pas comment puis-je déclarer dans matlab.J'ai besoin d'un code matlab pour définir des équations n-linéaires ..

Était-ce utile?

La solution

Vous pouvez écrire des équations n-linéaires comme une équation matricielle pour la résoudre. Ici vous pouvez trouver un bon exemple: http: //blogs.mathworks .com / pick / 2007/09/13 / matlab-bases-video-resolution-linear-equations / (video!)

Voir aussi ces pages:
http://fr.wikipedia.org/wiki/System_of_linear_equations
http://en.wikipedia.org/wiki/Matrix_equation

Autres conseils

Vous pouvez résoudre un système linéaire de différentes manières, selon qu’il existe ou non une solution unique.

Un moyen simple consiste à le réduire à une forme à échelle réduite (rref).

Considérez le système:

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

Vous pouvez écrire la matrice de coefficients A et le RHS, B comme suit: ( ' est l'opérateur de transposition)

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

A =

     1     5
     2    -1

>> B = [4 1]'

B =

     4
     1

Vous pouvez l'écrire sous forme de matrice augmentée (A | B):

>> horzcat(A,B)

ans =

     1     5     4
     2    -1     1

Et ensuite trouver le REF (A | B)

>> rref(ans)

ans =

    1.0000         0    0.8182
         0    1.0000    0.6364

Et donc x ~ 0,8182, y ~ 0,6364.

Le moyen le plus rapide de résoudre des équations linéaires dans MATLAB consiste simplement à configurer votre équation sur le formulaire

AX = B

puis résoudre par

X = A\B

Vous pouvez émettre

help mldivide

pour trouver plus d'informations sur la division de la matrice et ses limitations.

Un code pour la méthode itérative Guase Seidel tol est une tolérance d'erreur x0 est le premier à deviner solution

 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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top