Q2 exam 30avril 2011
5 participants
Page 1 sur 1
Q2 exam 30avril 2011
Re,
En fait j'ai fait comme pour l'exercice1 de la séance3 (j'ai trouvé un nouveau N avec l'erreur) mais je ne trouve pas du tout la bonne valeur de l'intégrale. J'ai utilisé la méthode des trapères:
Quelqu'un sait m'aider?
%Question 2 exam 2011
clear;clc;format long;
f=@(u)cos(u)-(1./cos(u));
fp=@(u)(f(u+0.001)-f(u))./0.001;
fpp=@(u)(fp(u+0.001)-fp(u))./0.001;
a=0;b=(pi/4);N=1000;
h=(b-a)/N;
u=linspace(a,b,N+1);
y=f(u);
y2=(h/2)*y(2:end-1);
Integrale=(h/2)*(y(1)+sum(y2)+y(end))
max(abs(fpp(u)))
erreur=(h^2*(b-a).*max(abs((fpp(u))))/12)
h=((10^-12)*12)./((b-a).*abs(max((fpp(u)))^(0.5)))
N=(b-a)/h
round(N+1)
Integralenew=(h/2)*(y(1)+sum(y2)+y(end))
reponsequad=quad(f,a,b,10^-12)
Et mes réponses sont:
Integrale = -3.118428899798174e-004
ans = 4.964643449234529
erreur =2.004363390703175e-007
h = 1.080378949146075e-011
N = 7.269654448730444e+010
ans = 7.269654448800000e+010
Integralenew = -4.289652172315796e-012
reponsequad = -0.174266805832998
Merciii!
En fait j'ai fait comme pour l'exercice1 de la séance3 (j'ai trouvé un nouveau N avec l'erreur) mais je ne trouve pas du tout la bonne valeur de l'intégrale. J'ai utilisé la méthode des trapères:
Quelqu'un sait m'aider?
%Question 2 exam 2011
clear;clc;format long;
f=@(u)cos(u)-(1./cos(u));
fp=@(u)(f(u+0.001)-f(u))./0.001;
fpp=@(u)(fp(u+0.001)-fp(u))./0.001;
a=0;b=(pi/4);N=1000;
h=(b-a)/N;
u=linspace(a,b,N+1);
y=f(u);
y2=(h/2)*y(2:end-1);
Integrale=(h/2)*(y(1)+sum(y2)+y(end))
max(abs(fpp(u)))
erreur=(h^2*(b-a).*max(abs((fpp(u))))/12)
h=((10^-12)*12)./((b-a).*abs(max((fpp(u)))^(0.5)))
N=(b-a)/h
round(N+1)
Integralenew=(h/2)*(y(1)+sum(y2)+y(end))
reponsequad=quad(f,a,b,10^-12)
Et mes réponses sont:
Integrale = -3.118428899798174e-004
ans = 4.964643449234529
erreur =2.004363390703175e-007
h = 1.080378949146075e-011
N = 7.269654448730444e+010
ans = 7.269654448800000e+010
Integralenew = -4.289652172315796e-012
reponsequad = -0.174266805832998
Merciii!
CharlotteBD- Dopamine
-
Nombre de messages : 78
Année d'étude : MA1
Section : Bioingénieur
Date d'inscription : 27/12/2010
Re: Q2 exam 30avril 2011
J'ai employé la méthode de simpson personnellement==> le graphe est une demi parabole et simpson approxime la courbe par des paraboles donc c'est plus efficace.
Sinon, pour le bug dans le programme je sais pas trop t'aider: je comprends pas trop le " h=((10^-12)*12)./((b-a).*abs(max((fpp(u)))^(0.5)))" enfin je suppose que tu détermines un nouveau h sur base de l'erreur que tu dois avoir mais bon...je trouve ça compliqué :p
Moi je ferais plutôt une boucle faisant varier N (et donc h = (b-a)/N) alors tu fais comme M. Tolley et tu prédéfinis une matrice contenant plusieurs N différents puis tu fais un for i.... qui parcourt les différents N et dans cette boucle tu mets un if qui va checker si ton erreur est <10^-12 et qui arrête le programme si c'est le cas.
Dans le même esprit tu peux faire une boucle for N=100:x:50000000... faut mettre un pas x assez grand pcq sinon ton programme va tourner un certain temps et peut-être même faire planter le pc.
Sinon, pour le bug dans le programme je sais pas trop t'aider: je comprends pas trop le " h=((10^-12)*12)./((b-a).*abs(max((fpp(u)))^(0.5)))" enfin je suppose que tu détermines un nouveau h sur base de l'erreur que tu dois avoir mais bon...je trouve ça compliqué :p
Moi je ferais plutôt une boucle faisant varier N (et donc h = (b-a)/N) alors tu fais comme M. Tolley et tu prédéfinis une matrice contenant plusieurs N différents puis tu fais un for i.... qui parcourt les différents N et dans cette boucle tu mets un if qui va checker si ton erreur est <10^-12 et qui arrête le programme si c'est le cas.
Dans le même esprit tu peux faire une boucle for N=100:x:50000000... faut mettre un pas x assez grand pcq sinon ton programme va tourner un certain temps et peut-être même faire planter le pc.
Corentin*- Psychotrope
-
Nombre de messages : 251
Année d'étude : MA2
Section : Bioingénieur
Option : Chimie et bioindustries - Option génétique
Date d'inscription : 04/10/2010
Re: Q2 exam 30avril 2011
t'as vérifié ta dérivée ?
J'ai fais comme toi (en gros) et moi j'arrive à la moitié de la réponse quad :p je sais pas ou j'ai faux(certainement dans la dérivé).
Et j'ai aussi fait avec les boucles coco, mais c'est quasi impossible a deviner ou est ce que tu dois t’arrêter pour avoir une précision de 10^-12( et effectivement avec cette méthode mon pc a réfléchit pdt 30min, j'ai cru que il allait exploser).
Si ça peut t'aider charlotte voila mon programme:
clc;clear;
x0=0;xf=pi/4;
N=200;
i=1;
erreur=10^(-12);
fpp=@(t)-cos(t)+(cos(t).^3+2.*sin(t).^2.*cos(t))./cos(t).^4;
t=0:0.001:pi/4;
plot(t,fpp(t));
grid on;hold on;
N=10000;
%f''(x)max=3.6
m=max(fpp(t));
h=(12*erreur/((xf-x0)*m))^(1/2);
x=x0:h:xf;
f=cos(x)-(1./cos(x));
f(2:end-1)=2*f(2:end-1);
int=h/2*sum(f);
R=[int erreur h]
format long g
f=@(x)cos(x)-(1./cos(x));
repquad=quad(f,x0,xf,10^-12)
réponses:
R =
-0.174266805832998 1e-012 2.08073064663787e-006
repquad =
-0.174266805832998
je l''ai éditer mnt il fonctionne ^^
J'ai fais comme toi (en gros) et moi j'arrive à la moitié de la réponse quad :p je sais pas ou j'ai faux(certainement dans la dérivé).
Et j'ai aussi fait avec les boucles coco, mais c'est quasi impossible a deviner ou est ce que tu dois t’arrêter pour avoir une précision de 10^-12( et effectivement avec cette méthode mon pc a réfléchit pdt 30min, j'ai cru que il allait exploser).
Si ça peut t'aider charlotte voila mon programme:
clc;clear;
x0=0;xf=pi/4;
N=200;
i=1;
erreur=10^(-12);
fpp=@(t)-cos(t)+(cos(t).^3+2.*sin(t).^2.*cos(t))./cos(t).^4;
t=0:0.001:pi/4;
plot(t,fpp(t));
grid on;hold on;
N=10000;
%f''(x)max=3.6
m=max(fpp(t));
h=(12*erreur/((xf-x0)*m))^(1/2);
x=x0:h:xf;
f=cos(x)-(1./cos(x));
f(2:end-1)=2*f(2:end-1);
int=h/2*sum(f);
R=[int erreur h]
format long g
f=@(x)cos(x)-(1./cos(x));
repquad=quad(f,x0,xf,10^-12)
réponses:
R =
-0.174266805832998 1e-012 2.08073064663787e-006
repquad =
-0.174266805832998
je l''ai éditer mnt il fonctionne ^^
Dernière édition par florian duchatel le Jeu 17 Mai - 17:36, édité 1 fois
florian duchatel- Mitochondrie
-
Nombre de messages : 68
Année d'étude : BA2
Section : Bioingénieur
Date d'inscription : 16/10/2010
Re: Q2 exam 30avril 2011
Corentin, tolley utilise quand le for et break car nous on a jamais utilisé cette technique :s
CharlotteBD- Dopamine
-
Nombre de messages : 78
Année d'étude : MA1
Section : Bioingénieur
Date d'inscription : 27/12/2010
Re: Q2 exam 30avril 2011
C'est l'algorithme de Tolley pour simpson:
% Calcul d'une intégrale par la méthode de Simpson
% Attention, si les intervalles sont trop petits on perd en précision
% N=500 donne un résultat plus précis que N=5000000 !
clear; clc
format long
f= inline('cos(pi*(x.^2)/2)');
a=0; b=1;
Nb_intervalles=[50 100 500 1000 50000 100000 5000000];
for n=1:length(Nb_intervalles)
N=Nb_intervalles(n);
h=(b-a)/N;
x=linspace(a,b,N+1);
y=f(x);
y4=4*y(2:2:end-1);
y2=2*y(3:2:end-2);
I(n)=h/3*(y(1)+sum(y4)+sum(y2)+y(end));
end
I'
J=quad(f,a,b,1e-15)
Voilà voilà
% Calcul d'une intégrale par la méthode de Simpson
% Attention, si les intervalles sont trop petits on perd en précision
% N=500 donne un résultat plus précis que N=5000000 !
clear; clc
format long
f= inline('cos(pi*(x.^2)/2)');
a=0; b=1;
Nb_intervalles=[50 100 500 1000 50000 100000 5000000];
for n=1:length(Nb_intervalles)
N=Nb_intervalles(n);
h=(b-a)/N;
x=linspace(a,b,N+1);
y=f(x);
y4=4*y(2:2:end-1);
y2=2*y(3:2:end-2);
I(n)=h/3*(y(1)+sum(y4)+sum(y2)+y(end));
end
I'
J=quad(f,a,b,1e-15)
Voilà voilà
Corentin*- Psychotrope
-
Nombre de messages : 251
Année d'étude : MA2
Section : Bioingénieur
Option : Chimie et bioindustries - Option génétique
Date d'inscription : 04/10/2010
Re: Q2 exam 30avril 2011
Pour le break c'est l'autre assistante qui nous a montré ça:
"if erreur (que tu définis avant) < 10^-12
break (ça arrête la boucle précédente donc le for)=====> ça te permet de pas faire tourner ton programme inutilement
end"
C'est surtout utile si tu veux voir le nombre d'intervalles nécessaire pour avoir une certaine erreur et pour voir quel nombre tu dois rajouter "Nombre_intervalle=N" entre le break et le if (sans mettre de point virgule) comme ça il te le mettra dans les output.
"if erreur (que tu définis avant) < 10^-12
break (ça arrête la boucle précédente donc le for)=====> ça te permet de pas faire tourner ton programme inutilement
end"
C'est surtout utile si tu veux voir le nombre d'intervalles nécessaire pour avoir une certaine erreur et pour voir quel nombre tu dois rajouter "Nombre_intervalle=N" entre le break et le if (sans mettre de point virgule) comme ça il te le mettra dans les output.
Corentin*- Psychotrope
-
Nombre de messages : 251
Année d'étude : MA2
Section : Bioingénieur
Option : Chimie et bioindustries - Option génétique
Date d'inscription : 04/10/2010
Re: Q2 exam 30avril 2011
Moi j'arrive au bon résultat, mais j'ai une précision caca.
Voilà mon prog :
clear;clc; format long
a=0; b=pi/4; %Bornes d'intégration
N=1000000:1000000:3000000; %Permet de faire varier le nombre d'intervalles
for Nb_intervalles=N
h=(b-a)/Nb_intervalles; %Pas de discrétisation
x=linspace(a,b,Nb_intervalles+1); %Abscisses de tous les points d'intégration
f=cos(x)-1./cos(x); %fonction à intégrer
f(2:2:end-2)=4*f(2:2:end-2);%Contribution des termes 2*f
f(3:2:end-1)=2*f(3:2:end-1);%Contribution des termes 4*f
Integrale=h/3*sum(f);%Calcul de l'intégrale via Simpson
end
g=@(x) cos(x)-1./cos(x);
Integrale_via_Simpson=Integrale
reponse_via_quad=quad(g,a,b,10e-12)
Réponses :
Integrale_via_Simpson =
-0.174266620713013
reponse_via_quad =
-0.174266805833021
Que faire ? Faudrait passer par Romberg en fait ? -_-
Voilà mon prog :
clear;clc; format long
a=0; b=pi/4; %Bornes d'intégration
N=1000000:1000000:3000000; %Permet de faire varier le nombre d'intervalles
for Nb_intervalles=N
h=(b-a)/Nb_intervalles; %Pas de discrétisation
x=linspace(a,b,Nb_intervalles+1); %Abscisses de tous les points d'intégration
f=cos(x)-1./cos(x); %fonction à intégrer
f(2:2:end-2)=4*f(2:2:end-2);%Contribution des termes 2*f
f(3:2:end-1)=2*f(3:2:end-1);%Contribution des termes 4*f
Integrale=h/3*sum(f);%Calcul de l'intégrale via Simpson
end
g=@(x) cos(x)-1./cos(x);
Integrale_via_Simpson=Integrale
reponse_via_quad=quad(g,a,b,10e-12)
Réponses :
Integrale_via_Simpson =
-0.174266620713013
reponse_via_quad =
-0.174266805833021
Que faire ? Faudrait passer par Romberg en fait ? -_-
V.- Mitochondrie
-
Nombre de messages : 59
Année d'étude : Diplomé(e)
Section : Bioingénieur
Option : Chimie et bioindustries - Option génétique
Date d'inscription : 31/01/2009
Re: Q2 exam 30avril 2011
Non , tu fixe ton h avec l'erreur que le prof donne
florian duchatel- Mitochondrie
-
Nombre de messages : 68
Année d'étude : BA2
Section : Bioingénieur
Date d'inscription : 16/10/2010
Re: Q2 exam 30avril 2011
Quoi faut faire avec le majorant de la dérivée quatrième là ? Raaah beurk... -_-
V.- Mitochondrie
-
Nombre de messages : 59
Année d'étude : Diplomé(e)
Section : Bioingénieur
Option : Chimie et bioindustries - Option génétique
Date d'inscription : 31/01/2009
Re: Q2 exam 30avril 2011
Vas y flo' trouve le h avec la formule de l'erreur pour Simpson! :p
Ici, si tu emploies simpson, le seul truc que tu peux faire pour l'erreur, c'est faire plusieurs calcul avec des N différents, les comparer avec quad et voir quel N te donne une précision à la 12 décimale. Puis tu mets comme Tolley dans ses programmes "%on remarque que la précision demandée est atteint pour N>10 000"
Sinon, si tu mets un trop grand N ça peut faire foirer Simpson Virgine (cfr programme de Tolley)
Ici, si tu emploies simpson, le seul truc que tu peux faire pour l'erreur, c'est faire plusieurs calcul avec des N différents, les comparer avec quad et voir quel N te donne une précision à la 12 décimale. Puis tu mets comme Tolley dans ses programmes "%on remarque que la précision demandée est atteint pour N>10 000"
Sinon, si tu mets un trop grand N ça peut faire foirer Simpson Virgine (cfr programme de Tolley)
Corentin*- Psychotrope
-
Nombre de messages : 251
Année d'étude : MA2
Section : Bioingénieur
Option : Chimie et bioindustries - Option génétique
Date d'inscription : 04/10/2010
Re: Q2 exam 30avril 2011
Ah ouais je viens de comprendre avec tes explications le truc de l'algorithme que tu as posté.
En gros je suis obligée de prendre plusieurs valeurs pour N, d'un faire un vecteur,
mais aussi d'afficher chaque résultat d'intégrale et de comparer chaque valeur avec quad ?
Puis de dire pour N=x bah j'ai une super précision ?
Si oui merci beaucoup, c'était mon dernier petit soucis avec matlab :p
En gros je suis obligée de prendre plusieurs valeurs pour N, d'un faire un vecteur,
mais aussi d'afficher chaque résultat d'intégrale et de comparer chaque valeur avec quad ?
Puis de dire pour N=x bah j'ai une super précision ?
Si oui merci beaucoup, c'était mon dernier petit soucis avec matlab :p
V.- Mitochondrie
-
Nombre de messages : 59
Année d'étude : Diplomé(e)
Section : Bioingénieur
Option : Chimie et bioindustries - Option génétique
Date d'inscription : 31/01/2009
Re: Q2 exam 30avril 2011
Je ne vois pas comment faire autrement...de manière faisable...maintenant ici la dérivée 4e est super ch*ante à calculer mais sinon y'aurait moyen de la calculer et de trouver le pas en fonction de l'erreur mais bon!
Corentin*- Psychotrope
-
Nombre de messages : 251
Année d'étude : MA2
Section : Bioingénieur
Option : Chimie et bioindustries - Option génétique
Date d'inscription : 04/10/2010
Re: Q2 exam 30avril 2011
Doù le fait que quand on l'a fait au tp, on a utilisé la formule des trapèzes..... c'est plus facile pour l'histoire du calcul d'erreur... et en même temps, la dérivée 4ème, si tu l'approches comme d'habitude, c'est pas si difficile
soit... et nous avec Tolley au tp, il nous a bien fait recalculer h avec l'erreur qu'on veut avoir.... et on peut utiliser l'histoire max(abs(dérivée xéme(x))) pour trouver le majorant de la dérivée plutôt que d'essayer de résoudre ça tout seuls
soit... et nous avec Tolley au tp, il nous a bien fait recalculer h avec l'erreur qu'on veut avoir.... et on peut utiliser l'histoire max(abs(dérivée xéme(x))) pour trouver le majorant de la dérivée plutôt que d'essayer de résoudre ça tout seuls
Berengere- Neurotransmetteur
-
Nombre de messages : 153
Année d'étude : MA2
Section : Bioingénieur
Option : Chimie et bioindustries - Option génétique
Date d'inscription : 17/09/2010
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|