Récupération de coordonnées

Utilisation de Xcas

Modérateur : xcasadmin

alusipdranreb
Messages : 5
Inscription : jeu. janv. 29, 2015 3:20 pm

Récupération de coordonnées

Message par alusipdranreb » dim. mai 10, 2020 7:19 pm

Bonsoir, j'ai besoin de récupérer sous forme de listes de tableur ( Excel ou autre ) les coordonnées des points d'une courbe 2D solution de l'équation différentielle suivante, dont on ne connaît pas de solution analytique :

Graph; plotode((-t*y(t))/(2+sin(t))+(exp(-t))*cos(t),[t=-pi/2...3*pi/2,y],[0,0],tstep=0.1, plan, affichage=bleu);

Comment faire? Cela doit être possible…
Amicalement.
alusipdranreb

frederic han
Messages : 1113
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: Récupération de coordonnées

Message par frederic han » lun. mai 11, 2020 5:40 pm

Bonjour,
je ne sais pas s'il y a plus pratique mais, si vous rangez ce dessin dans une variable

Code : Tout sélectionner

A:=plotode((-t*y(t))/(2+sin(t))+(exp(-t))*cos(t),[t=-pi/2...3*pi/2,y],[0,0],tstep=0.1, plan, affichage=bleu);
alors A[1] contient la liste des points sous forme de nombres complexes.
donc ensuite,

Code : Tout sélectionner

F:=fopen("tutu.csv")
for j in A[1]:
    fprint(F,Unquoted, re(j),",",im(j),"\n")
fclose(F)    
cela crée un .csv avec vos points sur les deux premieres colonnes.

Frederic

alusipdranreb
Messages : 5
Inscription : jeu. janv. 29, 2015 3:20 pm

Re: Récupération de coordonnées

Message par alusipdranreb » mar. mai 12, 2020 9:30 am

Bonjour Frédéric,
Merci pour la réponse, mais il y a un problème : j'obtiens un message d'erreur das la deuxième ligne de la boucle for.

:2: syntax error, unexpected T_FOR line 2 col 1 at for

:4: syntax error, unexpected T_UNARY_OP line 4 col 1 at fclose

Warning, input parsed as a constant function undef applied to F
Syntaxe en mode compatible xcas
Erreur grammaticale ligne 2 à for


of([undef])

Pouvez-vous regarder cela?
Amicalement.
Bernard

parisse
Messages : 5081
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Récupération de coordonnées

Message par parisse » mar. mai 12, 2020 9:51 am

Il faut ajouter un # seul sur une ligne avant le code de Frederic pour que la syntaxe Python soit reconnue. Ou bien utiliser la syntaxe Xcas:

Code : Tout sélectionner

F:=fopen("tutu.csv");
for j in A[1] do
    fprint(F,Unquoted, re(j),",",im(j),"\n");
od;
fclose(F)    

alusipdranreb
Messages : 5
Inscription : jeu. janv. 29, 2015 3:20 pm

Re: Récupération de coordonnées

Message par alusipdranreb » mar. mai 12, 2020 12:24 pm

Bonjour B.Parisse,
Merci pour votre réponse.
Je n'obtiens pas le résultat escompté.
Xcas utlise sans doute RK4, ou 5 ou 45, à pas variable ou constant. Une liste de coordonnées de points est donc calculée et est exploitée pour tracer la courbe solution numérique de l'équation différentielle.
C'est cette liste de coordonnées que je voudrais obtenir. Elle serait utilisée dans un tableur du type Excel.
Amicalement.
Bernard

parisse
Messages : 5081
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Récupération de coordonnées

Message par parisse » jeu. mai 14, 2020 6:42 am

Bon, je viens de retester, il y a une erreur dans la commande plotode, qui devrait etre

Code : Tout sélectionner

A:=plotode((-t*y)/(2+sin(t))+(exp(-t))*cos(t),[t=-pi/2...3*pi/2,y],[0,0],tstep=0.1, plan, affichage=bleu);
mais ensuite la commande

Code : Tout sélectionner

F:=fopen("tutu.csv");
for j in A[1] do
    fprint(F,Unquoted, re(j),",",im(j),"\n");
od;
fclose(F)    
ouvre le fichier tutu.csv et y place sur une ligne la valeur de t et la valeur de y correspondante, separes par une virgule.

Code : Tout sélectionner

-1.57079632679,-0.87010850126
-1.55068637544,-0.89687945669
-1.52466150826,-0.929402353736
-1.49828332012,-0.959922009457
-1.47152737821,-0.988362481686
-1.44436527495,-1.01464122439
-1.41676516164,-1.03866725508
-1.38869136451,-1.06034037627
-1.36010316915,-1.07955079613
-1.33095411857,-1.09617788003
-1.30119268206,-1.1100880613
...
Est-ce que le fichier tutu.csv est bien cree sur votre ordinateur? (Attention, ceci ne fonctionne pas avec Xcas pour Firefox, seulement avec Xcas sur PC).
Si le format n'est pas lisible par votre tableur, il faut modifier la commande fprint, par exemple rajouter un ";" en fin de ligne, etc.
La methode de resolution est une methode de Runge-Kutta d'ordre plus grand que RK4, c'est la methode de Prince-Dormand (https://en.wikipedia.org/wiki/Dormand%E ... nce_method)

alusipdranreb
Messages : 5
Inscription : jeu. janv. 29, 2015 3:20 pm

Re: Récupération de coordonnées

Message par alusipdranreb » sam. mai 16, 2020 3:47 am

Bonjour Bernard Parisse,
Le problème est réglé.
Grand-merci.
Xcas permet-il de traiter numériquement des ED du deuxième ordre directement, comme le fait Mathematica?
Et 3ème, 4ème ordre? ( Propriétés des matériaux, vibrations ).
Amicalement.
Bernard

parisse
Messages : 5081
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Récupération de coordonnées

Message par parisse » sam. mai 16, 2020 7:05 am

Non, mais on peut les reecrire comme des systemes du 1er ordre.

alusipdranreb
Messages : 5
Inscription : jeu. janv. 29, 2015 3:20 pm

Re: Récupération de coordonnées

Message par alusipdranreb » sam. mai 16, 2020 11:48 am

Tout-à-fait.
Je vais m'y employer.
3ème et 4ème ordre numérique, il doit y avoir de la documentation là-dessus rue d'Ulm.
Je n'ai encore rien trouvé de vraiment bien.
En tous cas, mon problème est résolu.
Merci.
Bernard

Répondre