Fsolve

di il
1 risposte

Fsolve

Salve, uso da poco matlab e sono poco pratica.
Devo risolvere un sistema di equazioni non lineari
Ho visto l'utilizzo della funzione fsolve sull'help ma anche ripentendo lo stesso esempio mi da:

Input argument "x" is undefined.

Error in ==> myfun at 3
F = [2*x(1) - x(2) - exp(-x(1));

Error in ==> run at 57
evalin('caller', [s ';'])

lo script che ho usato, uguale a quello dell'help è:

function F = myfun(x)

F = [2*x(1) - x(2) - exp(-x(1));
-x(1) + 2*x(2) - exp(-x(2))];



x0 = [-5; -5]; % Make a starting guess at the solution
options=optimset('Display','iter'); % Option to display output
[x] = fsolve(@myfun,x0,options); % Call solver


inoltre il mio sistema da risolvere è:

% calcolo conversione

clc
clear

function F = a(x)

T0=300;
deltaH=-6000;
cpa=15;
V=500;
Fa0=0.2;
ca0=0.1;
A=193017.97;
E=10000;
R=1.987;
k=A*exp(E/R*x(1));

ra=k*(ca0^2)*((1-x(2))^2);

F=[x(1)-T0+((x(2)*deltaH)/(2*cpa));x(2)-((ra*V)/Fa0)];
x0=[300;0];
options=optimset('Display','iter'); % Option to display output
x = fsolve(@a,x0,options); % Call solver

e mi da il seguente errore:

??? Error: File: a.m Line: 6 Column: 1
Function definitions are not permitted in this context.

Error in ==> run at 57
evalin('caller', [s ';']);

perchè non mi fa definire la function???
grazie mille!!!

1 Risposte

  • Re: Fsolve

    Ciao,
    se vuoi definire una funzione, nel file .m non puoi scrivere prima altri comandi.

    clc e clear li dovrai quindi definire DOPO la dichiarazione della funzione.

    Pertanto il tuo codice dovrà essere del tipo:

    function F = f(x)

    clc
    clear

    %...
    % corpo della funzione

    Spero di esserti stato di aiuto.

    Ciao
Devi accedere o registrarti per scrivere nel forum
1 risposte