[Matlab] esplicitare una funzione con max
Ciao a tutti,
sono Jacopo, sono uno studente di ingegneria e sono nuovo del forum, che ho scoperto giusto oggi e trovo una fantastica iniziativa.
Ho provato ha cercare un po' nel forum ma non ho trovato nulla che mi aiutasse quindi apro una nuova discussione spero di non sbagliare ne nell'aprire una discussione su un argomento già discusso ne nella sezione di inserimento.
il mio problema è nato mentre scrivevo un progettino su matlab e mi sono trovato a scrivere un equazione di questo genere:
$(B*h)+((max(0,h-H))*(2Rh))=V$
dove B, H e R sono costanti.
Ho scritto questa equazione a partire da un ragionamento fisico però io ho bisogno di trovare h avendo V quindi scrivendo in matlab dovrei scrivere un qualcosa del genere h=f(V) ma con il max lì di mezzo non ho proprio idea di come invertire l'equazione, è possibile? sapete indicarmi dove trovare qualche indicazione su come fare?
un grazie anticipato
e un Riciao a tutti
sono Jacopo, sono uno studente di ingegneria e sono nuovo del forum, che ho scoperto giusto oggi e trovo una fantastica iniziativa.
Ho provato ha cercare un po' nel forum ma non ho trovato nulla che mi aiutasse quindi apro una nuova discussione spero di non sbagliare ne nell'aprire una discussione su un argomento già discusso ne nella sezione di inserimento.
il mio problema è nato mentre scrivevo un progettino su matlab e mi sono trovato a scrivere un equazione di questo genere:
$(B*h)+((max(0,h-H))*(2Rh))=V$
dove B, H e R sono costanti.
Ho scritto questa equazione a partire da un ragionamento fisico però io ho bisogno di trovare h avendo V quindi scrivendo in matlab dovrei scrivere un qualcosa del genere h=f(V) ma con il max lì di mezzo non ho proprio idea di come invertire l'equazione, è possibile? sapete indicarmi dove trovare qualche indicazione su come fare?
un grazie anticipato
e un Riciao a tutti
Risposte
Io l'ho fatta così ed ha funzionato
1) ho creato la funzione:
function y=fun(x)
global B H V R
y=B*x+max(0,x-H)*(2*R*x)-V;
2) ho lanciato un fsolve:
close all
clear all
clc
global B H V R
V=10;
B=1;
H=3;
R=5;
x0=2;
epsilon=1e-8;
max_iter=50;
options = optimset('TolFun',epsilon,'MaxIter',max_iter);
[X]=fsolve(@fun,x0,options)
e matlab ha calcolato x ( ovvero h ) senza problemi
1) ho creato la funzione:
function y=fun(x)
global B H V R
y=B*x+max(0,x-H)*(2*R*x)-V;
2) ho lanciato un fsolve:
close all
clear all
clc
global B H V R
V=10;
B=1;
H=3;
R=5;
x0=2;
epsilon=1e-8;
max_iter=50;
options = optimset('TolFun',epsilon,'MaxIter',max_iter);
[X]=fsolve(@fun,x0,options)
e matlab ha calcolato x ( ovvero h ) senza problemi
grazie mille