guillaume0077
Inscrit le: 27 Mai 2004 Messages: 5
|
Posté le: 03 Juin 2004 10:16 Sujet du message: tracer une fonction programmee |
|
|
sauriez vous comment tracer la fonction f(t) avec des points asssez proches pour que l'on ne voit pas la discontinuité mais assez éloigné pour que l'ordinateur puisse calculer car en utilisant plot l'ordinateur plante et je pense que cla vient du fait qu il calcule trop de points.
Rx:=(x,y,Vx,Vy)->evalf(-x/(x^2+y^2)^(3/2)-(x-59.4)/((x-59.4)^2+y^2)^(3/2)*1/200+6*10^(-5)*Vx/(Vx^2+Vy^2)^(3/2));
Rx := (x, y, Vx, Vy) -> evalf(
x x - 59.4 3/50000 Vx
- ------------ - 1/200 --------------------- + --------------)
2 2 3/2 2 2 3/2 2 2 3/2
(x + y ) ((x - 59.4) + y ) (Vx + Vy )
> Ry:=(x,y,Vx,Vy)->evalf(-y/(x^2+y^2)^(3/2)-y/((x-59.4)^2+y^2)^(3/2)*1/200+6*10^(-5)*Vy/(Vx^2+Vy^2)^(3/2));
Ry := (x, y, Vx, Vy) -> evalf(
y y 3/50000 Vy
- ------------ - 1/200 --------------------- + --------------)
2 2 3/2 2 2 3/2 2 2 3/2
(x + y ) ((x - 59.4) + y ) (Vx + Vy )
> Runge1:=proc(x,y,z,r,t,N)
> local X,Y,Z,R,i,Kx1,Kx2,Kx3,Kx4,Ky1,Ky2,Ky3,Ky4,Jx1,Jx2,Jx3,Jx4,Jy1,Jy2,Jy3,Jy4,x1,y1,z1,r1,h;
> X:=x: Y:=y: Z:=z: R:=r:
> h:=t/N:
for i from 0 to N-1 do
> Kx1:=evalf(h*Z);
> Ky1:=evalf(h*R);
> Jx1:=evalf(h*Rx(X,Y,Z,R));
> Jy1:=evalf(h*Ry(X,Y,Z,R));
> Kx2:=evalf(h*(Z+Jx1/2));
> Ky2:=evalf(h*(R+Jy1/2));
> Jx2:=evalf(h*Rx(X+Kx1/2,Y+Ky1/2,Z+Jx1/2,R+Jy1/2));
> Jy2:=evalf(h*Ry(X+Kx1/2,Y+Ky1/2,Z+Jx1/2,R+Jy1/2));
> Kx3:=evalf(h*(Z+Jx2/2));
> Ky3:=evalf(h*(R+Jy2/2));
> Jx3:=evalf(h*Rx(X+Kx2/2,Y+Ky2/2,Z+Jx2/2,R+Jy2/2));
> Jy3:=evalf(h*Ry(X+Kx2/2,Y+Ky2/2,Z+Jx2/2,R+Jy2/2));
> Kx4:=evalf(h*(Z+Jx3));
> Ky4:=evalf(h*(R+Jy3));
> Jx4:=evalf(h*Rx(X+Kx3,Y+Ky3,Z+Jx3,R+Jy3));
> Jy4:=evalf(h*Ry(X+Kx3,Y+Ky3,Z+Jx3,R+Jy3));
> x1:=X;X:=evalf(x1+1/6*(Kx1+2*Kx2+2*Kx3+Kx4));
y1:=Y;Y:=evalf(y1+1/6*(Ky1+2*Ky2+2*Ky3+Ky4));
> z1:=Z;Z:=evalf(z1+1/6*(Jx1+2*Jx2+2*Jx3+Jx4));
> r1:=R;R:=evalf(r1+1/6*(Jy1+2*Jy2+2*Jy3+Jy4));
> end do;
> X
> end:
f:=t->Runge1(5,0,0,5,t,10);
merci par avance |
|