romanticide
Inscrit le: 13 Mar 2005 Messages: 47
|
Posté le: 23 Mai 2005 10:08 Sujet du message: point singulier |
|
|
bonjour
mon prof a estimé que notre méthode pour trouver les points singuliers n'est pas en fait une méthode
voici ce qu'il nous a proposé pour trouver les racines d'une fonction
[code]
> PrntAlgoRacDicho:=proc(f,a,b,epsilon)
> local c,d,fc,fd,m,fm,i,Atteinte,delta,Go,Rac;
> print(` `);
> print(`Algorithme dichotomique`);
> print(`f=`,f,` a=`,a,` b=`,b);
> print(`epsilon:`,epsilon);
> i:=0;Go:=true;c:=a;d:=b; fc:=Evalf(f,c); fd:=Evalf(f,d);
> while Go do
> i:=i+1;
> m:=evalf((c+d)/2);
> fm:=Evalf(f,m);
> Atteinte:=evalb(abs(fm)<epsilon);
> print(`i=`,i,` m=`,m,` fm=`,fm,` Atteinte=`,Atteinte);
> if Atteinte then Go:=false else
> if evalb(fc*fm<0) then d:=m;fd:=fm else c:=m;fc:=fm fi;
> delta:=d-c;
> Go:=evalb(delta>epsilon);
> print(`Affinement dichotomique i=`,i,` c=`,c,` d=`,d,` delta=`,delta,` Go=`,Go);
> fi;
> od;
> print(`Racine=`,m,` valeur=`,fm);
> m;
> end:
[/code]
ma version
[code]
Point singulier
> singulier:=proc(Expr,Intdef,epsilon)
> local g1,g2,d1,d2,d1a,d1b,d1m,a,b,Go,m,Racin,delta,dd;
> g1:=op(1,Expr);g2:=op(2,Expr);
> d1:=diff(g1,t);d2:=diff(g2,t);
> a:=op(1,Intdef);b:=op(2,Intdef);
> Go:=true;
> d1a:=subs(t=a,d1);d1b:=subs(t=b,d1);
> while Go do
> m:=evalf((a+b)/2);
> d1m:=evalf(subs(t=m,d1));
> dd:=abs(d1m);
> Racin:=evalb(dd<epsilon);
> if Racin then Go:=false;
> else if (d1a*d1m)<0
> then b:=m;d1b:=d1m;
> else a:=m;d1a:=d1m;
> delta:=b-a;
> Go:=evalb(delta>epsilon);
> fi;
> fi;
> od;
> m;
> end:
> w:=[(1+cos(t))*cos(t),(1+cos(t))*sin(t)];Intdef:=[0,2*pi];
w := [(1 + cos(t)) cos(t), (1 + cos(t)) sin(t)]
Intdef := [0, 2 pi]
> singulier(w,Intdef,10^(-3));
Error, (in singulier) cannot determine if this expression is true or false: abs(1.*sin(pi)*cos(pi)+1.*(1.+cos(pi))*sin(pi)) < 1/1000
[/code]
je ne comprends pas d'où vient l'erreur
j'ai pourtant bien mis with (linalg)
cette procédure doit nous permettre de trouver les racines de la fonction
ici on étudie une courbe paramétrée donc on a deux fonctions g1 et g2
pour le moment j'ai juste essayé pour g1
merci |
|