Bonjour,
je suis entrain de programmer avec matlab les fonctions de wigner à n-modes
Comment je peut faire une intégration double et triple ??
merci de votre collaboration
Bonjour,
je suis entrain de programmer avec matlab les fonctions de wigner à n-modes
Comment je peut faire une intégration double et triple ??
merci de votre collaboration
Slt.
Calcul symbolique ou numérique ?une intégation double et triple ???
C'est dans la doc : dblquad et triplequad
Bonjour,
Je voudrais savoir quelle est la méthode numérique utilisée pour la commande (dblquad) : est-ce la méthode de trapèze si non j'aime savoir son algortihme
Comment je peux avoir le code source d'une fonction exemple le code de la fonction (dblquad) pour que je puisse savoir le type de la méthode d'intégration
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part doc dblquad
Note : toutes les fonctions de MATLAB ne sont pas forcément éditables, certains sont cryptées et ne peuvent donc pas êtres lues.
Code : Sélectionner tout - Visualiser dans une fenêtre à part edit dblquad
j'ai cette fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 F=exp(A.*(-(q-moyenne_Q0).^2/(2*delta_Q0^2)-(p-... moyenne_P0).^2/(2*delta_P0^2))).*exp(B.*(-((q01-q)-... moyenne_Q0).^2/(2*delta_Q0^2)-((p01-p)-... moyenne_P0).^2/(2*delta_P0^2))*
elle est en fonction de p et q
j'ai voulu faire une integration double suivant p et q avec la fonction (dblquad)
mais pas de resultat
voila ma proposition de code
est-il possible de m'aider a corriger ce code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 N0=1; Z=1/(2*pi*N0); rendement=0.9; t=sqrt(rendement); r=sqrt(1-rendement); A=1/sqrt(1-rendement); B=1/rendement; eta=1/rendement*(1-rendement); i=0; for q01=0:10, i=i+1; j=0; for p01=0:10, j=j+1; F=dblquad(exp(A.*(-(q-moyenne_Q0).^2/(2*delta_Q0^2)-(p-moyenne_P0).^2/(2*delta_P0^2))).*exp(B.*(-((q01-q)-moyenne_Q0).^2/(2*delta_Q0^2)-((p01-p)-moyenne_P0).^2/(2*delta_P0^2)))),-10,10,-10,10); out=eta*Z*Z.*F; end, end,
Salut,
Voici un exemple :
++ bonne chance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 % Exemple f(x) = a*(x^2) + y %-- Variables a = 2; %-- Fonction myFun = @(x,y)(a*(x.^2) + y); %-- Intergration varIntegral = dblquad(myFun,0,2,1,2) % Su tu veux changer MYFUN dans une boucle FOR : varIntegral = []; for u =1:10 a = u; myFun = @(x,y)(a*(x.^2) + y); % MYFUN sera mise à jour varIntegral(u) = dblquad(myFun,0,2,1,2); end
j'ai suivit vos conseil
voila le code de la double integration mais pas de resultat
il ne faut pas oublier que j'ai deux variables q01 et p01.
svp aider moi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100 clear all close all N0=1; Z=1/(2*pi*N0); % transmission = t % reflection = r rendement=0.9; t=sqrt(rendement); r=sqrt(1-rendement); a=r^2+t^2; A=1/sqrt(1-rendement); B=1/rendement; eta=1/rendement*(1-rendement); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% delta_P0=1; delta_Q0=N0/delta_P0; moyenne_Q0=1; moyenne_P0=1; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% delta_P1=1; delta_Q1=N0/delta_P0; moyenne_Q1=2; moyenne_P1=2; %%%%%%%%%%%%%% 1 er mode %%%% i=0; for q=0:0.1:5, i=i+1; j=0; for p=0:0.1:5, j=j+1; X01=(q-moyenne_Q0).^2/(2*delta_Q0^2); X00=(p-moyenne_P0).^2/(2*delta_P0^2); w0(i,j)=r.*Z.*exp(-X00-X01); end, end, %%%%%%%%%%% 2 ieme mode %% i=0; for q=0:0.1:5, i=i+1; j=0; for p=0:0.1:5, j=j+1; X11=(q-moyenne_Q1).^2/(2*delta_Q1^2); X10=(p-moyenne_P1).^2/(2*delta_P1^2); w1(i,j)=t.*Z.*exp(-X10-X11); end, end, %%%%%%% double integration %%%%% qmin=-10; qmax=10; pmin=-10; pmax=10; varIntegral = []; for q01=-10:10, % q01=q1; for p01=-10:10, % p01=p1; myfun=@(p,q)(exp(A*(-(q-moyenne_Q0)^2/(2*delta_Q0^2)-(p-moyenne_P0)^2/(2*delta_P0^2)))*exp(B.*(-((q01-q)-moyenne_Q1)^2/(2*delta_Q1^2)-((p01-p)-moyenne_P1)^2/(2*delta_P1^2)))); varIntegral(q01,p01)=dblquad(myfun,qmin,qmax,pmin,pmax); w01=varIntegral.*Z^2.*X; end, end, %%%%%%%%%% graphique %%%%%%%%%% q=0:0.1:5; p=0:0.1:5; mesh(q,p,w) figure(1) imagesc(q,p,w1),grid figure(2) imagesc(q,p,w0),grid figure(3) imagesc(q,p,w01),grid
Partager