Int elliptique, calcul numérique et approximation

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

int elliptique, calcul numérique et approximation

par fatal_error » 14 Sep 2019, 14:04

hi all,

en lisant: lycee/trigonometrie-t210019.html
en voulant troller Pisigma: Image
je suis tombé sur un problème (plus ou moins) intéressant:

Je souhaite résoudre en x

avec y(x) = 1/a*sin(x), a réel positif
t dans [0; pi]

MAIS je subdivise également l'intervalle [0; pi] en n+1 points, resp a_i pour i = 0 à n, et j'ai besoin des x_i associés.
J'appèle

Du coup, pour des raisons de perfs, je calcule , puis pour calculer , je pars de , et je cherche alors

Pour calculer l'intégrale, j'ai bêtement discrétisé d'un pas eps, et je longe la courbe en sommant eps, jusqu'à ce que la distance longée atteigne dx

Ce que je cherche, c'est définir eps de manière à minimiser mon erreur, mais sous contrainte de n itérations (ici 100).
Pour l'instant, j'ai déterminé eps ... à la main

Code: Tout sélectionner
var f = function(dx, oldx){ // oldx est ici x_j, et f retourne x_{j+1}
    var a = 1;
    var curve = x=>Math.sin(x)/a;
    var dcurve = x=>1/a * Math.cos(x);

    var x = oldx;
    var eps = 1e-4; //########## comment puis-je déterminer eps pour avoir une erreur minimale, mais avec un nombre de step inférieur à 100 ##############
    var step = 0;
    var dl = 0;
    while(dl < dx && step < 100){
        x+= eps;
        var yp = dcurve(x);
        var feps = eps*Math.sqrt(1 + Math.pow(yp,2));
        dl += feps;
        step++;
    }
    console.log('step', step)
    return x
}

exemple d'appel:
[code]
var dx = n/200
var x = 0
for(var i = 0; i<n; ++i){
    x = f(dx, x);
    //j'ai ma liste de x_i
}


pour le code ayant généré l'image, des fois que:
https://repl.it/repls/WoodenFatalVirtualmemory
la vie est une fête :)



GaBuZoMeu
Habitué(e)
Messages: 6020
Enregistré le: 05 Mai 2019, 10:07

Re: int elliptique, calcul numérique et approximation

par GaBuZoMeu » 14 Sep 2019, 14:51

"Quelqu'un pourrait-il ..", ça ferait plus joli.

Tu cherches à diviser un arc de sinusoïde en morceaux de longueurs égales ?

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

Re: int elliptique, calcul numérique et approximation

par fatal_error » 14 Sep 2019, 15:43

slt, gbzm,

> Tu cherches à diviser un arc de sinusoïde en morceaux de longueurs égales ?
oui, j'avais pas vu sous cet angle (sans jeu de mots...)

subsiste néanmoins ma première question:
est-ce que j'ai un moyen de déterminer combien d'itération à l'avance (avec un pas donné), je risque d'avoir besoin lorsque je calcule mon intégrale. La réponse est probablement non si je connais pas la tête de la fonction... mais ici on sait que c'est sqrt(1+kcos^2(u))
la vie est une fête :)

GaBuZoMeu
Habitué(e)
Messages: 6020
Enregistré le: 05 Mai 2019, 10:07

Re: int elliptique, calcul numérique et approximation

par GaBuZoMeu » 14 Sep 2019, 15:56

Et pourquoi calcules-tu la longueur de l'arc comme ça et pas comme une longueur de ligne brisée formée de petits segments entre des points de la forme (x, sin(x)/a) et (x+e, sin(x+e)/a) ?

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

Re: int elliptique, calcul numérique et approximation

par fatal_error » 14 Sep 2019, 16:03

oui c'est complètement possible aussi
mais je vois pas ce que ca apporte (à part avoir à éviter de connaitre la dérivée de sin(x))?
la vie est une fête :)

GaBuZoMeu
Habitué(e)
Messages: 6020
Enregistré le: 05 Mai 2019, 10:07

Re: int elliptique, calcul numérique et approximation

par GaBuZoMeu » 14 Sep 2019, 16:24

Ça ne fait pas une différence essentielle, je voulais juste savoir si tu as une raison de faire comme tu fais plutôt que d'utiliser une ligne brisée.

Essayons de fixer des notations pas trop bordéliques.

Tu es en un point de la courbe tu as une quantité fixée et tu veux trouver tel que la longueur de l'arc de sinusoïde entre et soit égale à . Pour cela tu choisis un pas aussi petit que possible et (je prends l'approche ligne brisée) tu calcules la longueur de la ligne brisée jusqu'au premier pour lequel cette longueur atteint ou dépasse le fixé. Tu prends alors (je mets vu que la longueur de la ligne brisée est une estimation par défaut de la longueur de courbe). La contrainte sur le choix de est que tu ne veux pas que dépasse 100. C'est bien ça ta problématique, ou je suis à côté de la plaque ?

Vraiment buggué, le compilateur LaTeX du forum ! Il n'acceote pas \epsilon tout seul, mais il veut bien de \varepsilon !

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

Re: int elliptique, calcul numérique et approximation

par fatal_error » 14 Sep 2019, 16:40

Oui, c'est exactement ca. Je comprends pas pourquoi pour h tu prends k-1 et non k, mais c'est un détail.

Edit, cest bon pour k, c'est celui pour lequel la longueur depasse d, et tu arretes de compter de fait au point d'avant
la vie est une fête :)

GaBuZoMeu
Habitué(e)
Messages: 6020
Enregistré le: 05 Mai 2019, 10:07

Re: int elliptique, calcul numérique et approximation

par GaBuZoMeu » 14 Sep 2019, 16:54

Je l'ai écrit pourtant ! Si je prends , la longueur de la ligne brisée va être au moins égale à la longueur désirée . Mais la longueur de la ligne brisée est strictement inférieure à la longueur de l'arc de courbe. La longueur de l'arc de courbe va encore plus dépasser . Donc je m'arrête plutôt une étape avant. Bon, c'est juste du bidouillage, à voir si c'est raisonnable en estimant l'erreur faite en remplaçant la longueur de la courbe par celle de la ligne brisée.
Un moyen de choisir pour être sûr de ne pas dépasser 100 est de choisir . Mais on peut être un peu plus sioux et tenir compte de la pente de la courbe, ce qui amène à prendre .

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

Re: int elliptique, calcul numérique et approximation

par fatal_error » 14 Sep 2019, 18:07

Pour d/100, je justifie ainsi:
x parcourant... l'axe des x, 0 à d,
mon parcours sur la sinusoide, à longueur égale à x s'arrête nécessairement en un point M(x2,sin(x2)), x2 < x
de fait divisant d par 100, au pire je parcours une distance d, et j'aurai bien dépassé ma longueur sur la sinusoïde

Pour le passage sioux, ce que je vois c'est que
quand x augmente de 1,
localement la longueur sur la sinusoide augmente de __à peu près__ sqrt(1+1/a^2cos^2(x))
avec un produit en croix:
1->sqrt(1+1/a^2cos^2(x))
d->dsqrt(1+1/a^2cos^2(x))
x->d
on déduit que x vaut ce qui revient à multiplier les epsilone (anciennement d/100) par

ya-t-il une rédaction plus "propre"?
Surtout, comment peut-on être sur que quand x a parcouru on a __au moins__ parcouru d sur la sinusoïde
la vie est une fête :)

GaBuZoMeu
Habitué(e)
Messages: 6020
Enregistré le: 05 Mai 2019, 10:07

Re: int elliptique, calcul numérique et approximation

par GaBuZoMeu » 14 Sep 2019, 18:35

Déjà une rédaction sans bug serait mieux, quand tu écris "ce qui revient à multiplier les epsilone (anciennement d/100) par " par exemple, ça ne va pas.
Le facteur correctif est . Il faudra peut-être avec ça un peu plus de 100 étapes (je n'ai pas compris si la limite est stricte, où si on se contente d'une petite marge). On peut jouer plus sûr en prenant le minimum de sur .

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

Re: int elliptique, calcul numérique et approximation

par fatal_error » 14 Sep 2019, 20:59

On peut jouer plus sûr en prenant le minimum de cos sur [x, x+d]

on joue plus sûr, certes, tu confirmes qu'on joue sûr?
la vie est une fête :)

GaBuZoMeu
Habitué(e)
Messages: 6020
Enregistré le: 05 Mai 2019, 10:07

Re: int elliptique, calcul numérique et approximation

par GaBuZoMeu » 14 Sep 2019, 21:36

Oui, sauf erreur.
Et toi, tu n'as pas répondu à propos du 100.

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

Re: int elliptique, calcul numérique et approximation

par fatal_error » 14 Sep 2019, 21:55

dans le cas présent, la limite peut être dépassée.

si tu regardes le code, tu vois que pour les points M(x,y_x) trouvés, je prends R(x), R arrondi à l'entier le plus proche. (je manipule des pixels)
Donc en fait, l'erreur en dépassant la limite est négligeable par rapport à l'arrondi.

On peut observer des artefacts lorsqu'on fait varier a: on peut voir des raies verticales blanches (sur l'image déformée), liées aux arrondis.

j'ai juste mis un strictement inférieur car c'est plus simple (pour moi) de m'arrêter bêtement, plutot que regarder si le M(x+ke) me rapproche plus de la somme que M(x+(k-1)e)
la vie est une fête :)

GaBuZoMeu
Habitué(e)
Messages: 6020
Enregistré le: 05 Mai 2019, 10:07

Re: int elliptique, calcul numérique et approximation

par GaBuZoMeu » 14 Sep 2019, 22:39

[Merci des précisions.
quote]on peut voir des raies verticales blanches (sur l'image déformée), liées aux arrondi[/quote]
Je ne vois rien (pas d'image). Normal ?

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

Re: int elliptique, calcul numérique et approximation

par fatal_error » 14 Sep 2019, 22:54

Dans le lien vers repl.it( https://repl.it/repls/WoodenFatalVirtualmemory ), il faut que tu cliques sur run (ou play si tu es sur un mobile)

Si c'est ce que tu as fait, non c'est pas normal, sous ff et chrome c'est ok pour moi cela dit.
la vie est une fête :)

GaBuZoMeu
Habitué(e)
Messages: 6020
Enregistré le: 05 Mai 2019, 10:07

Re: int elliptique, calcul numérique et approximation

par GaBuZoMeu » 14 Sep 2019, 23:21

Ah oui, j'ai bien l'image mais à vrai dire je ne vois pas trop le rapport entre l'image et les calculs ci-dessus (et vraiment pas envie de me plonger dans le code, désolé).

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

Re: int elliptique, calcul numérique et approximation

par fatal_error » 14 Sep 2019, 23:51

En fait, quand tu vois les photos de manuel scolaire, la page est jamais plate. Elle est toujours bombée à cause de la reliure.

J'ai voulu représenter cette bombure.. à l'aide d'une sinusoïde. En vrai, je voulais un truc plus style queue de poisson, mais j'aimais pas le pic du début et bézier trop relou alors j'ai fait basique.

Si tu regardes le bouquin de face, une ligne sur la largeur (axe des x) la lecture de haut en bas (axe des y) et lépaisseur, axe des z, je représente z par z(x)=sin(x).
Je dis que ma ligne est projetée sur cette courbe, d'où la raison de cherche l'abscisse des points M que tu as définis (image de ma projection).
Normalement on observe des caractères plus espacés au centre de l'image(j'ai mis la largeur à l'échelle de pi)

L'ombrage, c'est juste un pourcentage calculé par rapport à la normale à la courbe et le rayon lumineux partant du regard
la vie est une fête :)

GaBuZoMeu
Habitué(e)
Messages: 6020
Enregistré le: 05 Mai 2019, 10:07

Re: int elliptique, calcul numérique et approximation

par GaBuZoMeu » 15 Sep 2019, 09:45

Ça y est, j'ai compris ce que tu fais. Mais je doute fort de la pertinence de ta modélisation.

Image

Ça, une sinusoïde ?

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

Re: int elliptique, calcul numérique et approximation

par fatal_error » 15 Sep 2019, 10:04

Lol, cest pour ca que jai mis le facteur a xD. Mais de toute manière, la pertinence de ma modélisation est nulle, ya absolument aucune valeur délivrée, si ce n'est de voir ce que ca fait si je projo sur une courbe: je m'en carrais un peu de la fonction pourvu que je passe pas 50ans à la définir..

Si tu as une fonction, je prends, mais de toute façon, l'idée est, si je continue, de permettre à l'utilisateur de dessiner sa fonction lui meme...
la vie est une fête :)

GaBuZoMeu
Habitué(e)
Messages: 6020
Enregistré le: 05 Mai 2019, 10:07

Re: int elliptique, calcul numérique et approximation

par GaBuZoMeu » 15 Sep 2019, 11:31

Le facteur a n'arrange pas grand chose. Une fonction simple comme donne déjà quelque chose de plus satisfaisant.

Image

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 38 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite