Utilisation de solve

Pour toute demande d'aide sur des exemples non finalisés, c'est ici.
Les exemples aboutis et intéressants seront ajoutés aux sous-forums qui suivent.

Règles du forum
Pour toute demande d'aide pour la conception (ou la confirmation d'un code) d'une figure Asymptote, c'est ici.

J'invite ceux qui ont régulièrement des questions à poser à aller dans leur panneau de l'utilisateur pour indiquer dans la signature de leurs messages :

  1. Nom du système d'exploitation (W7 ou Ubuntu 12.04 ou ...)
  2. Version d'Asymptote et éditeur utilisé pour les figures Asymptote
  3. Distribution LaTeX et éditeur utilisé pour les tex.


On va gagner du temps dans les réponses !
Francky
Messages : 40
Enregistré le : sam. 10 avr. 2010, 22:15
Localisation : Sud-Drôme

Utilisation de solve

Message non lu par Francky » dim. 9 mai 2010, 19:43

Ça peut servir dans diverses situations, donc je poste ici, mais j'en appelle à votre bon cœur pour le compléter.

Je sais qu'Asymptote sait résoudre des systèmes d'équations, mais je ne retrouve l'exemple.
Il me semble qu'un (ou deux) ici serait judicieux.

Encore une fois : à votre bon cœur,
ensuite je complèterai l'exemple de la distance mini entre un point et une conique, grâce à solve.

Merci.

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: Utilisation de solve

Message non lu par GM » dim. 9 mai 2010, 19:54

Et moi, je vais déplacer le sujet aussitôt... car si cela, ce n'est pas une demande d'aide... je ne sais pas ce que c'est.

Tu as lu ma phrase... en rouge pour qu'elle se voit bien ?
Pour toute demande d'aide sur des exemples non finalisés, c'est ici.
Les exemples aboutis et intéressants seront ajoutés aux sous-forums qui suivent.


Et comme je n'ai pas la réponse... ne sachant pas quelle équation tu veux résoudre... et comme je ne suis pas du tout sûr qu'on saura la résoudre... je déplace le sujet.

Les forums qui suivent sont pour des propositions finalisées... dont on pense qu'elles ne sont pas loin d'être les meilleures propositions.
A ce titre, certains messages qui y sont (sur arbre et espace)... vont retourner dans le forum "demande d'aide" tellement il y a eu de modifications : je remettrai des messages à la place avec les solutions retenues.
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

OG
V.I.P.
V.I.P.
Messages : 142
Enregistré le : dim. 7 mars 2010, 22:27

Re: Utilisation de solve

Message non lu par OG » dim. 9 mai 2010, 19:54

Pour les systèmes d'équations, cela ne concerne que les systèmes linéaires.
Pris dans la doc

Code : Tout sélectionner

  import math;
     real[][] a={{1,-2,3,0},{4,-5,6,2},{-7,-8,10,5},{1,50,1,-2}};
     real[] b={7,19,33,3};
     real[] x=solve(a,b);
     write(a); write();
     write(b); write();
     write(x); write();
     write(a*x);


Il faut en avoir l'utilité. Par exemple dans graph_splinetype.asy,
où on utilise la résolution d'un système triagonal (la routine fait le cas triagonal + périodique,
utile dans certains situations).

Code : Tout sélectionner

// Standard cubic spline interpolation with not-a-knot condition:
// s'''(x_2^-)=s'''(x_2^+) et s'''(x_(n_2)^-)=s'''(x_(n-2)^+)
// if n=2, linear interpolation is returned
// if n=3, an interpolation polynomial of degree <= 2 is returned:
// p(x_1)=y_1, p(x_2)=y_2, p(x_3)=y_3
real[] notaknot(real[] x, real[] y)
{
  int n=x.length;
  checklengths(n,y.length);
  checkincreasing(x);
  real[] d;
  if(n > 3) {
    real[] a=new real[n];
    real[] b=new real[n];
    real[] c=new real[n];
    real[] g=new real[n];
    b[0]=x[2]-x[1];
    c[0]=x[2]-x[0];
    a[0]=0;
    g[0]=((x[1]-x[0])^2*(y[2]-y[1])/b[0]+b[0]*(2*b[0]+3*(x[1]-x[0]))*
          (y[1]-y[0])/(x[1]-x[0]))/c[0];
    for(int i=1; i < n-1; ++i) {
      a[i]=x[i+1]-x[i];
      c[i]=x[i]-x[i-1];
      b[i]=2*(a[i]+c[i]);
      g[i]=3*(c[i]*(y[i+1]-y[i])/a[i]+a[i]*(y[i]-y[i-1])/c[i]);
    }
    c[n-1]=0;
    b[n-1]=x[n-2]-x[n-3];
    a[n-1]=x[n-1]-x[n-3];
    g[n-1]=((x[n-1]-x[n-2])^2*(y[n-2]-y[n-3])/b[n-1]+
            b[n-1]*(2*b[n-1]+3(x[n-1]-x[n-2]))*
            (y[n-1]-y[n-2])/(x[n-1]-x[n-2]))/a[n-1];
    d=tridiagonal(a,b,c,g);
  } else if(n == 2) {
    real val=(y[1]-y[0])/(x[1]-x[0]);
    d=new real[] {val,val};
  } else if(n == 3) {
    real a=(y[1]-y[0])/(x[1]-x[0]);
    real b=(y[2]-y[1])/(x[2]-x[1]);
    real c=(b-a)/(x[2]-x[0]);
    d=new real[] {a+c*(x[0]-x[1]),a+c*(x[1]-x[0]),a+c*(2*x[2]-x[0]-x[1])};
  } else abort(morepoints);
  return d;
}


Tu pourrais imaginer programmer les moindres carrés aussi (bien que pour des questions
de stabilité la méthode de Householder est préférable à celle de l'équation normal).

O.G.

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: Utilisation de solve

Message non lu par GM » dim. 9 mai 2010, 20:26

GM a écrit :Tu as lu ma phrase... en rouge pour qu'elle se voit bien ?

Je viens de rajouter une règle dans chaque forum thématique... pour ceux qui ne lisent pas tout. ;-) :mrgreen:
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

Francky
Messages : 40
Enregistré le : sam. 10 avr. 2010, 22:15
Localisation : Sud-Drôme

Re: Utilisation de solve

Message non lu par Francky » dim. 9 mai 2010, 23:03

J'avais bien lu !
Je répète que je n'avais pas trouvé la doc sur solve, et qu'un exemple serait hyper bien placé sur ce forum. (ça aidera diverses personnes, j'en suis sûr).
C'est toi le boss. Tu mets le fil où tu veux. Perso, avec l'exemple limpide d'OG, on peut dire que le fil est clos (enfin pour moi),
donc finalisé (à mes yeux).

Ce message s'autodétruira dans quelques jours, je n'aime pas polluer inutilement les fils (ni les miens, ni ceux des autres).
A+

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: Utilisation de solve

Message non lu par GM » dim. 9 mai 2010, 23:34

Francky a écrit :Je répète que je n'avais pas trouvé la doc sur solve,

Donc avec une demande préalable dans le forum d'aide ...
pour que l'on puisse te répondre, un truc du genre : voir la doc officielle : une recherche sur solve dans le pdf te donne en page 72 ceci ... ... cela ...
Francky a écrit :et qu'un exemple serait hyper bien placé sur ce forum. (ça aidera diverses personnes, j'en suis sûr).

... tu peux maintenant nous pondre une série d'exemples et créer un sujet dans le forum en question qui explique la fonction solve à tous. ;-)

Je te taquine... mais je rassure, il n'y a pas eu de pollution. ;-)

Mais je me devais de redire que les forums thématiques ne peuvent pas être les forums où on demande si quelqu'un d'autre ne pourrait pas éventuellement proposer un exemple... si on ne veut pas que cela devienne vite le "bin's".
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

Francky
Messages : 40
Enregistré le : sam. 10 avr. 2010, 22:15
Localisation : Sud-Drôme

Re: Utilisation de solve

Message non lu par Francky » lun. 10 mai 2010, 07:27

Bon, après réflexion (si ça m'arrive), tout ceci n'est pas satisfaisant.
OG l'a fait remarqué : solve, c'est pour le linéaire, donc insuffisant.

La solution que j'entrevois est de faire allier Asymptote avec XCAS ou Sage. Ça règlerait TOUT les problèmes mathématiques un peu sérieux.
XCAS repose sur giac, une bibliothèque écrite en C.
Sage repose sur les meilleures bibliothèques libres, et de fait les meilleures tout court, l'interface est proche du Python.
(moyennant des précautions, on peut faire du Cython, donc c'est compilable)

Dans un document tex, c'est tout à fait jouable de faire appel à sage ou XCAS.

Qui (si c'est possible) l'a déjà fait dans un document asy ?
Merci, pour cette demande d'aide. ;)

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: Utilisation de solve

Message non lu par GM » lun. 10 mai 2010, 08:17

Francky a écrit :Dans un document tex, c'est tout à fait jouable de faire appel à sage ou XCAS.

Qui (si c'est possible) l'a déjà fait dans un document asy ?
Merci, pour cette demande d'aide. ;)


Une recherche des mots Sage, Xcas et giac sur le forum officiel donne : Searching forums gives 0 results

Est-ce une réponse ? :mrgreen:

La solution que j'entrevois est...

... pour le problème initial (qui a généré cet intérêt pour solve) est, pour moi, une simple boucle optimisée... pour rechercher le cas limite d''intersection de la conique avec un cercle de centre le point donné, et de rayon variable.
Mais il faudrait déjà s'assurer de la nature de la courbe... qui n'était pas du tout évidente dans l'autre sujet.
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: Utilisation de solve

Message non lu par GM » lun. 10 mai 2010, 10:49

J'ai oublié une remarque.

Francky a écrit :Bon, après réflexion (si ça m'arrive), tout ceci n'est pas satisfaisant.
OG l'a fait remarqué : solve, c'est pour le linéaire, donc insuffisant.

Quelle équation/système veux-tu résoudre ?
Il n'y a pas moyen de susbstituer et d'avoir une équation de la forme f(x)=0 ?

Exemple

Code : Tout sélectionner

// Le système (x^2+xy+y^2=48 et x^2-5y=10)
// équivaut au système
// (y=(x^2-10)/5 et x^2+x*(x^2-10)/5+((x^2-10)/5)^2-48=0)

real f(real x){return x^2+x*(x^2-10)/5+((x^2-10)/5)^2-48;}
real fp(real x){return 2*x+(3*x^2-10)/5+(4*x*(x^2-10))/25;}
real g(real x){return 2*x+(3*x^2-10)/5+(4*x*(x^2-10))/25;}

real a= newton(iterations=10000, f, fp, x1=-5, x2=6, verbose=false);
write(a);

La valeur affichée 4.97121140069427 est la première valeur x d'un couple (x;y) solution.
... et on peut trouver le y ensuite.
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

Répondre