Bonjour a tous,
je bloque actuellement sur la programmation de la méthode de simpson. Apres avoir pensé trouver la bonne formule voila que le msge d'erreur 'soustraction incohérente' apparait. Je n'arrive pas à trouver cette erreur qui doit etre vraiment idiote et donc j'aimerais avoir l'avis d'un regard nouveau sur cette affaire.
Voici le code
function y=simpson1(a,b,n,f);
h=(b-a)/n
ext=a+h*[1:n-1];
mil=a+(h/2)*(2*[1:n]-1);
valext=f(ext)
valmil=f(mil)
y=(h/6)*(f(a)+f(b)+2*sum(valext)+4*sum(valmil))
endfunction
Merci par avance de me répondre
dans ce cas la je veux bien que tu me donnes un exemple qui marche tres bien car crois-moi si je te dis que j'ai arpenté toutes les pages google qui y faisait référence
je n'ai pas trouvé très probant
mais ta méthode ne me parle pas trop
je découvre scilab à l'occasion de ton post et n'ai pas encore bien en main la manipulation de matrices,
alors voilà ma solution
// définir la fonction à intégrer
function y=fx(x), y=sqrt(x), endfunction
// définir le calcul de l'interpolation sur un intervalle élémentaire
function y=simpson1(a,b,f), y=(b-a)/6 * (f(a) + 4*f((a+b)/2) + f(b)), endfunction
// définir la boucle de parcourt sur l'intervalle souhaité
function y=simpson(a,b,n,f)
h=(b-a)/n
s=0
while a<b
s = s + simpson1(a,a+h,f)
a = a+h
end
y=s
endfunction
// appel de la fonction
simpson(1,2,10,fx)
résultat
ans =
1.2189514058106
Excellent , je n'avais pas pensé a créer au préalable une fonction pour un intervalle élementaire et ca change tout j'ai une erreur bien plus mince. Merci beaucoup ton aide a été précieuse
ah j'ai un petit soucis car ma fonction que je veux integrer entre 0 et 10 est définie sur R*. Ainsi f(0) provoque une division par 0 et donc une erreur dans la formule de simpson, je ne vois pas comment changer cela ...
difficile d'appliquer une méthode d'approximation numérique a une fonction qui dépend d'un paramètre... tu me fais quoi, là ? c'est quoi, exactement, le but ?
Ah ca oui c'est difficile ben il faut programmer la méthode simpson 1/3 pour calculer l'intégrale de cette fonction entre 0 et 10 .puis appliquer la méthode simpson 3/8
Comme c'étais assez compliqué comme ca j'ai fixé p=1 .
Je ne sais pas s'il existe un code pour empecher cette erreur de division par 0. Il me semble logique que pour approximer l'integrale de la fonction sur [a,b] la fonction soit elle meme continue sur [a,b]. Sinon ca ne marche pas et point barre. Je pense que c'est une erreur d'énoncé ou alors c'est un piege sacremment vicieux
je ne connais pas les "méthodes de simpson 1/3 ou 3/8"
mais non, ce n'est pas une erreur d'énoncé
pour les intégrales sur un intervalle où les images de certains points (bornes ou intérieur) ne sont pas définis, on parle d'intégrale "impropre"
elles n'ont rien de sale, c'est un simple nom qu'on leur donne
et on les traite ainsi :
on "isole" chaque intervalle où f est définie et on étudie la limite de l'intégrale aux bornes : si cette limite est définie, l'intégrale impropre est définie
ici : est définie si existe et est finie.
Oui je connais ce théorème
Mais cela n'explique pas comment trouver un code qui permet de prendre 0 comme valeur, je ne vois vraiment pas comment faire
ah tu connais
alors pourquoi affirmes tu que
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :