en lisant: lycee/trigonometrie-t210019.html
en voulant troller Pisigma:
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