Scilab et intégrale par quadrature
Discutez d'informatique ici !
-
Lantha
- Messages: 4
- Enregistré le: 09 Fév 2012, 12:02
-
par Lantha » 09 Fév 2012, 12:06
Bonjour, j'ai un petit soucis pour le calcul de l'intégral entre -1 et 1 de 4/(1+x²), qui devrait faire atan(1)-atan(-1) donc un peu plus de 6.
La formule de quadrature donné en énoncé est pi/(n+1) * SOMME[f(cos((2i+1)*pi / 2n+2))]
Voila mon code :
function y = f(x)
y = 4/(1+x^2)
endfunction
function k=tcheby(n)
k=0;
for i=0:n
k=k+(%pi/(n+1))*(f(cos((2*i+1)*%pi/(2*n+2))));
end
endfunction
Si vous pouviez m'aider ce serait super sympa.
-
Dlzlogic
- Membre Transcendant
- Messages: 5273
- Enregistré le: 14 Avr 2009, 12:39
-
par Dlzlogic » 09 Fév 2012, 15:25
Bonjour,
n vaut combien ?
-
Lantha
- Messages: 4
- Enregistré le: 09 Fév 2012, 12:02
-
par Lantha » 09 Fév 2012, 17:41
n est un entier que l'utilisateur doit entrer. Logiquement plus il est grand plus la valeur obtenue est précise.
-
Dlzlogic
- Membre Transcendant
- Messages: 5273
- Enregistré le: 14 Avr 2009, 12:39
-
par Dlzlogic » 09 Fév 2012, 17:51
Lantha a écrit:n est un entier que l'utilisateur doit entrer. Logiquement plus il est grand plus la valeur obtenue est précise.
Je n'ai pas vu de faute, mais j'avoue que je ne comprend pas la formule indiquée (j'ai d'ailleurs pas cherché).
Essayez de le calculer avec un petit n, par exemple n=4 ou n=10, en imprimant des valeurs intermédiaires. Je ne vois pas l'utilité de la fonction y=f(x), puisque cette fonction n'est pas utilisée.
-
Doraki
- Habitué(e)
- Messages: 5021
- Enregistré le: 20 Aoû 2008, 11:07
-
par Doraki » 09 Fév 2012, 18:00
Lantha a écrit:La formule de quadrature donné en énoncé est pi/(n+1) * SOMME[f(cos((2i+1)*pi / 2n+2))]
!!!??
Donc tu fais une subdivision pas régulière (selon les cos((2i+1)pi/2n)) mais avec des poids réguliers ?
Ben ça fait que tu calcules à une constante près l'intégrale de 0 à pi de f(cos(x))dx au lieu de l'intégrale de -1 à 1 de f(x)dx. Donc c'est sûr que tu vas pas avoir le bon résultat...
-
Lantha
- Messages: 4
- Enregistré le: 09 Fév 2012, 12:02
-
par Lantha » 09 Fév 2012, 18:15
C'est la formule que nous a donné le prof, et comme je n'ai pas assez de connaissance en analyse numérique je sais pas si elle est vrai ou fausse :/
De plus f(x) est utilisé juste avant le cos dans la somme.
-
Dlzlogic
- Membre Transcendant
- Messages: 5273
- Enregistré le: 14 Avr 2009, 12:39
-
par Dlzlogic » 09 Fév 2012, 18:29
Lantha a écrit:C'est la formule que nous a donné le prof, et comme je n'ai pas assez de connaissance en analyse numérique je sais pas si elle est vrai ou fausse :/
De plus f(x) est utilisé juste avant le cos dans la somme.
Oui, j'avais pas repéré le f(...)
Si j'avais à calculer cette intégrale, je ne me casserais pas la tête.
D'abord, c'est une fonction paire, donc on calcule entre 0 et 1 et on double.
Les lignes trigo coûtent cher en informatique, donc je calculerais de petits éléments de surface de largeur "pas" et de hauteur y=f(xi) pour xi de 0 à 1 avec un pas de "pas".
-
Lantha
- Messages: 4
- Enregistré le: 09 Fév 2012, 12:02
-
par Lantha » 09 Fév 2012, 18:37
J'ai déjà la valeur exacte de l'intégrale, qui est évidente, et je l'avais calculé avec la méthode des rectangles (classique):
function I=rectangle(a,b,n)
I=0;
for k=0:n-1
x=a+(k/n)*(b-a);
I=I+((b-a)/n)*f(x);
end
endfunction
La ça fonctionne très bien, mais avec la méthode du prof (la formule que j'ai donné au début) impossible d'obtenir le résultat.
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 7 invités