Bonsoir,

J'utilise Octave mais le forum d'Octave est très peu actif, et j'ai besoin d'une réponse rapide alors, si vous le permettez

J'ai une matrice 3D (nommée II) qui est en fait une fonction de trois variables. Je veux intégrer cette fonction par rapport à une seule variable uniquement (la troisième) en utilisant quadgk. Pour ce faire, j'ai fait deux boucles for pour parcourir toutes les valeurs de t et de k (les deux autres variables) et ensuite intégrer par rapport à la variable qui reste (théta) (il y certainement un moyen plus intelligent de faire cela, mais si ce code marche, c'est suffisant )

Voici mon 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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
%**************************Constantes***************************
%**************************************************************
Va = 0.2;
ft = 1000;
N = 1.0 ;
E0 =1.6842; 
k0 = 6.0 ; 
nu = 0.0025;
 
 
 
k=logspace(0.01,3,100);
theta=linspace(0,pi,100);
t=linspace(0,10,100);
%t=10;
%**************************************************************
%**************************************************************
S0 = 4.0 * E0 * (k/k0).^2.0 .* exp((-k/k0).^2.0)/(k0*sqrt(pi));
 
for i=1:100
  for j=1:100
    for l=1:100
    II1(i,j,l) = cos(2.*t(i)*Va.*k(j).*cos(theta(l))).*sin(theta(l));
    II2(i,j,l) = cos(2.0*t(i).*sqrt(Va*Va.*(k(j)*k(j)).*cos(theta(l)).^2.0+N*N.*sin(theta(l)).^2.0)).*sin(theta(l));
    endfor
  endfor
endfor
 
II = II1 + II2; % c'est la fonction à intégrer par rapport à théta:  II(t,k,theta)
 
for i=1:100
  for j=1:100
    f=@(theta) II(i,j,<img src="images/smilies/icon_smile.gif" border="0" alt="" title=":)" class="inlineimg" />;
    M(i,j)=quadgk(f,0,pi);
  endfor
endfor


Seulement, ça me donne ce message d'erreur:

error: reshape: can't reshape 150x1x100 array to 10x15 array
error: called from
quadgk>__quadgk_eval__ at line 445 column 5
quadgk at line 333 column 18
spectres_int at line 35 column 11



Merci d'avance pour votre aide !



Edit : Résolu en écrivant l'expression de f en fonction de théta.