Sto facendo un programma che integri il moto del pendolo doppio,ma ho qualche problema, infatti confrontando con un programma che so per certo funzioni, trovo risultati diversi.Vi volevo chiedere se potete darmi una mano a trovare l'errore visto che a me sembra tutto giusto,l'errore sarà sicuramente concettuale.
Vi posto solamente il ciclo che calcola la traiettoria:
codice:
for(i=0;i<c->t_max/c->dt;i++){
t1=p1->theta;
w1=p1->w;
t2=p2->theta;
w2=p2->w;
tmpt11=w1*c->dt;
tmpw11=alfa1(t1,t2,w1,w2)*c->dt;
tmpt12=tmpw11*c->dt;
tmpw12=alfa1(t1+tmpt11/2,t2,w1+tmpw11/2,w2)*c->dt;
tmpt13=tmpw12*c->dt;
tmpw13=alfa1(t1+tmpt12/2,t2,w1+tmpw12/2,w2)*c->dt;
tmpt14=tmpw13*c->dt;
tmpw14=alfa1(t1+tmpt13,t2,w1+tmpw13,w2)*c->dt;
p1->theta+=(tmpt11+2*tmpt12+2*tmpt13+tmpt14)/6.;
p1->w+=(tmpw11+2*tmpw12+2*tmpw13+tmpw14)/6.;
tmpt21=w2*c->dt;
tmpw21=alfa2(t1,t2,w1,w2)*c->dt;
tmpt22=tmpw21*c->dt;
tmpw22=alfa2(t1,t2+tmpt21/2,w1,w2+tmpw21/2)*c->dt;
tmpt23=tmpw22*c->dt;
tmpw23=alfa2(t1,t2+tmpt22/2,w1,w2+tmpw22/2)*c->dt;
tmpt24=tmpw23*c->dt;
tmpw24=alfa2(t1,t2+tmpt23,w1,w2+tmpw23)*c->dt;
p2->theta+=(tmpt21+2*tmpt22+2*tmpt23+tmpt24)/6.;
p2->w+=(tmpw21+2*tmpw22+2*tmpw23+tmpw24)/6.;
t+=c->dt;
fprintf(stdout,"%lg\t%lg\t%lg\t%lg\t%lg\n",t,p1->theta,p2->theta,p1->w,p2->w); }
Ciao a tutti!!