Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Risoluzione Sistema Equazioni non lineari

Analisi, geometria, algebra, topologia...

Moderatori: Foto UtentePietroBaima, Foto UtenteIanero

0
voti

[1] Risoluzione Sistema Equazioni non lineari

Messaggioda Foto Utenteminidiable » 2 apr 2013, 16:29

Ragazzi la domanda che volevo fare in un post precedente era in realta' questa.

Ho da risolvere il sistema di equazioni non lineari seguente e non so come fare in MATLAB:

x_1x_3-0.5x_1x_2^2x_3=F_x
x_1x_2x_3=F_y
x_3-0.5x_1^2x_3=F_x

Mi potreste aiutare? GRAZIE
Avatar utente
Foto Utenteminidiable
5 1 2 5
Stabilizzato
Stabilizzato
 
Messaggi: 425
Iscritto il: 7 gen 2009, 14:08

0
voti

[2] Re: Risoluzione Sistema Equazioni non lineari

Messaggioda Foto Utenteminidiable » 2 apr 2013, 17:05

Ho provato in questo modo (la funzione Jfun e' lo jacobiano di quella Ffun e calcolo la soluzione del sistema con la funzione newtonsys):

Codice: Seleziona tutto
function J = Jfun( x )
%UNTITLED3 Summary of this function goes here
%   Detailed explanation goes here
J(1,1)=x(3)-x(2)^2*x(3)/2;
J(1,2)=x(1)*x(2)*x(3);
J(1,3)=x(1)-x(1)*x(2)^2/2;

J(2,1)=x(2)*x(3);
J(2,2)=x(1)*x(3);
J(2,3)=x(1)*x(2);

J(3,1)=-x(1)*x(3);
J(3,2)=0;
J(3,3)=1-x(1)^2/2;
end


function F = Ffun( x )
%UNTITLED4 Summary of this function goes here
%   Detailed explanation goes here
F(1,1)=x(1)*x(3)-x(1)*x(2)^2*x(3)/2-0.0131;
F(2,1)=x(1)*x(2)*x(3)-7.72e-04;
F(3,1)=x(3)-x(1)^2*x(3)/2-0.6245;
end

%% I valori di F_x F_y e F_z sono valori reali misurati in un certo istante

function [ x,F,niter ] = newtonsys( Ffun,Jfun,x0,tol,nmax,varargin )
%UNTITLED2 Summary of this function goes here
%   Detailed explanation goes here
niter=0;
err=tol+1;
x=x0;
while err>= tol && niter<=nmax
    J=feval(Jfun,x,varargin{:});
    F=feval(Ffun,x,varargin{:});
    delta=-J\F;
    x=x+delta;
    err=norm(delta);
    niter=niter+1;
end

F=norm(feval(Ffun,x,varargin{:}));
if(niter==nmax && err>tol)
    fprintf({'Il metodo non converge nel massimo numero di iterazioni',...
        'la ultima iterata calcolata ha residuo relativo pari a %e \n'},F)
else
    fprintf('Il metodo converge');
end

end


Il problema e' che mi da una soluzione, mi dice che esiste, ma la soluzione (logicamente) varia al variare del punto di partenza dell'algoritmo, come si fa a trovare la soluzione "vera" di questo sistema?

Grazie
Avatar utente
Foto Utenteminidiable
5 1 2 5
Stabilizzato
Stabilizzato
 
Messaggi: 425
Iscritto il: 7 gen 2009, 14:08

3
voti

[3] Re: Risoluzione Sistema Equazioni non lineari

Messaggioda Foto Utentedimaios » 3 apr 2013, 17:38

minidiable ha scritto:Il problema e' che mi da una soluzione, mi dice che esiste, ma la soluzione (logicamente) varia al variare del punto di partenza dell'algoritmo, come si fa a trovare la soluzione "vera" di questo sistema?


Stai cercando di risolvere un problema di ottimizzazione globale con un algoritmo tipicamente utilizzato per la ricerca di minimi locali.
Ingegneria : alternativa intelligente alla droga.
Avatar utente
Foto Utentedimaios
30,2k 7 10 12
G.Master EY
G.Master EY
 
Messaggi: 3381
Iscritto il: 24 ago 2010, 14:12
Località: Behind the scenes

0
voti

[4] Re: Risoluzione Sistema Equazioni non lineari

Messaggioda Foto UtenteMasterCud » 30 apr 2013, 9:09

Quando si risolvono problemi di questo tipo la prima cosa da fare è valutare il condizionamento del sistema, questo lo puoi fare semplicemente calcolando la norma 2. Purtroppo non esiste un metodo matematico unico e valido per risolvere il tuo sistema, l'unica cosa da fare è provarne diversi e valutare se le soluzioni sono simili.
Dato il numero limitato delle equazioni io proverei prima ad applicare un metodo standard ( utilizzando la matrice di Jordan anche se ha un condizionamento stratosferico, prova con una QR o una SVD), successivamente proverei un metodo di tipo iterativo (come hai fatto tu), Jacobi o Gauss-Seidel e poi confronterei le due soluzioni. Se sono simili bene altrimenti significa che hai un condizionamento talmente alto che ti sballa la soluzione e a quel punto i metodi classici servono a ben poco.
Avatar utente
Foto UtenteMasterCud
61 2
New entry
New entry
 
Messaggi: 69
Iscritto il: 23 apr 2013, 10:15


Torna a Matematica generale

Chi c’è in linea

Visitano il forum: Nessuno e 36 ospiti