Mi sono accorto in realtà di aver commesso un errore. Quello che devo fare è trovare la curva 3D che meglio approssima un set di punti, condizionando il problema alla seguente equazione parametrica per la curva da trovare:
[unparseable or potentially dangerous latex formula]
dove i parametri da stimare sono i tre angoli

,

,

, e inoltre

,

e

.
Dunque direi, se non faccio errori, che io devo minimizzare l'errore quadratico medio su due curve separatamente, [unparseable or potentially dangerous latex formula] e [unparseable or potentially dangerous latex formula], eliminando il parametro tempo:
[unparseable or potentially dangerous latex formula]
[unparseable or potentially dangerous latex formula]
Fin qui ti torna o vedi errori di impostazione del problema?
Se è giusto, allora in Matlab lo farei così:
- Code: Seleziona tutto
x_fittype = fittype('(v_0*sin(beta)+9.8/k)/(v_0*cos(beta))*( (x-d_0*cos(alpha))/(cos(phi)) ) + 9.8/(k^2)*log( (1-k*(x-d_0*cos(alpha))/(cos(phi)*v_0*cos(beta))) )','independent','x','dependent','z')
opt=fitoptions('Method','NonlinearLeastSquares');
%specifico in ordine: alpha,beta,d_0,k,phi,v_0
opt.Lower = [-pi/4 pi/4-5*pi/180 2000 1e-4 pi-10*pi/180 100];
opt.StartPoint = [0 pi/4 3000 1e-3 pi 150];
opt.Upper = [pi/4 pi/4+5*pi/180 4500 1e-2 pi+10*pi/180 200];
z_fit = fit(x_data,z_data,x_fittype,opt)
e analogamente poi anche per [unparseable or potentially dangerous latex formula].
Dandogli in pasto una traiettoria con

, la stima su [unparseable or potentially dangerous latex formula] avviene benissimo, mentre quella su [unparseable or potentially dangerous latex formula] restituisce:
Complex value computed by model function, fitting cannot continue.
Try using or tightening upper and lower bounds on coefficients.
che sicuramente dipende da quel [unparseable or potentially dangerous latex formula] nel logaritmo.
Come si potrebbe gestire questo problema? Lui sta ricevendo tanti valori di z e corrispondentemente tanti valori di

.
Grazie.