154Matrice _laplacien_mat_pas_prevu(
int n,
int l,
double echelle,
int puis) {
155 cout <<
"laplacien pas prevu..." << endl ;
156 cout <<
"n : " << n << endl ;
157 cout <<
"l : " << l << endl ;
158 cout <<
"puissance : " << puis << endl ;
159 cout <<
"echelle : " << echelle << endl ;
172Matrice _laplacien_mat_r_jaco02 (
int n,
int l,
double,
int) {
174 const int nmax = 200 ;
176 static int nb_dejafait = 0 ;
177 static int l_dejafait[nmax] ;
178 static int nr_dejafait[nmax] ;
183 for (
int conte=0 ; conte<nb_dejafait ; conte ++)
184 if ((l_dejafait[conte] == l) && (nr_dejafait[conte] == n))
189 if (nb_dejafait >= nmax) {
190 cout <<
"_laplacien_mat_r_jaco02 : trop de matrices" << endl ;
196 l_dejafait[nb_dejafait] = l ;
197 nr_dejafait[nb_dejafait] = n ;
203 tab[nb_dejafait] =
new Matrice(d2 + 2.*sxd -(l*(l+1))*sx2) ;
205 indice = nb_dejafait ;
209 return *tab[indice] ;
218Matrice _laplacien_mat_r_chebp (
int n,
int l,
double,
int) {
220 const int nmax = 200 ;
222 static int nb_dejafait = 0 ;
223 static int l_dejafait[nmax] ;
224 static int nr_dejafait[nmax] ;
229 for (
int conte=0 ; conte<nb_dejafait ; conte ++)
230 if ((l_dejafait[conte] == l) && (nr_dejafait[conte] == n))
235 if (nb_dejafait >= nmax) {
236 cout <<
"_laplacien_mat_r_chebp : trop de matrices" << endl ;
242 l_dejafait[nb_dejafait] = l ;
243 nr_dejafait[nb_dejafait] = n ;
249 tab[nb_dejafait] =
new Matrice(d2 + 2.*sxd -(l*(l+1))*sx2) ;
251 indice = nb_dejafait ;
255 return *tab[indice] ;
265Matrice _laplacien_mat_r_chebi (
int n,
int l,
double,
int) {
267 const int nmax = 200 ;
269 static int nb_dejafait = 0 ;
270 static int l_dejafait[nmax] ;
271 static int nr_dejafait[nmax] ;
276 for (
int conte=0 ; conte<nb_dejafait ; conte ++)
277 if ((l_dejafait[conte] == l) && (nr_dejafait[conte] == n))
282 if (nb_dejafait >= nmax) {
283 cout <<
"_laplacien_mat_r_chebi : trop de matrices" << endl ;
289 l_dejafait[nb_dejafait] = l ;
290 nr_dejafait[nb_dejafait] = n ;
296 tab[nb_dejafait] =
new Matrice(d2 + 2.*sxd - (l*(l+1))*sx2) ;
297 indice = nb_dejafait ;
301 return *tab[indice] ;
311Matrice _laplacien_mat_r_chebu(
int n,
int l,
double,
int puis) {
316 res = _laplacien_mat_r_chebu_quatre (n, l) ;
319 res = _laplacien_mat_r_chebu_trois (n, l) ;
322 res = _laplacien_mat_r_chebu_deux (n, l) ;
325 res = _laplacien_mat_r_chebu_cinq (n, l) ;
335Matrice _laplacien_mat_r_chebu_quatre (
int n,
int l) {
337 const int nmax = 200 ;
339 static int nb_dejafait = 0 ;
340 static int l_dejafait[nmax] ;
341 static int nr_dejafait[nmax] ;
346 for (
int conte=0 ; conte<nb_dejafait ; conte ++)
347 if ((l_dejafait[conte] == l) && (nr_dejafait[conte] == n))
352 if (nb_dejafait >= nmax) {
353 cout <<
"_laplacien_mat_r_chebu_quatre : trop de matrices" << endl ;
359 l_dejafait[nb_dejafait] = l ;
360 nr_dejafait[nb_dejafait] = n ;
365 tab[nb_dejafait] =
new Matrice(dd-(l*(l+1))*xx) ;
366 indice = nb_dejafait ;
370 return *tab[indice] ;
374Matrice _laplacien_mat_r_chebu_trois (
int n,
int l) {
376 const int nmax = 200 ;
378 static int nb_dejafait = 0 ;
379 static int l_dejafait[nmax] ;
380 static int nr_dejafait[nmax] ;
385 for (
int conte=0 ; conte<nb_dejafait ; conte ++)
386 if ((l_dejafait[conte] == l) && (nr_dejafait[conte] == n))
391 if (nb_dejafait >= nmax) {
392 cout <<
"_laplacien_mat_r_chebu_trois : trop de matrices" << endl ;
398 l_dejafait[nb_dejafait] = l ;
399 nr_dejafait[nb_dejafait] = n ;
404 tab[nb_dejafait] =
new Matrice(xd2 -(l*(l+1))*sx) ;
406 indice = nb_dejafait ;
410 return *tab[indice] ;
415Matrice _laplacien_mat_r_chebu_deux (
int n,
int l) {
417 const int nmax = 200 ;
419 static int nb_dejafait = 0 ;
420 static int l_dejafait[nmax] ;
421 static int nr_dejafait[nmax] ;
426 for (
int conte=0 ; conte<nb_dejafait ; conte ++)
427 if ((l_dejafait[conte] == l) && (nr_dejafait[conte] == n))
432 if (nb_dejafait >= nmax) {
433 cout <<
"_laplacien_mat_r_chebu_deux : trop de matrices" << endl ;
439 l_dejafait[nb_dejafait] = l ;
440 nr_dejafait[nb_dejafait] = n ;
445 tab[nb_dejafait] =
new Matrice(x2dd - (l*(l+1))*
id) ;
447 indice = nb_dejafait ;
451 return *tab[indice] ;
455Matrice _laplacien_mat_r_chebu_cinq (
int n,
int l) {
457 const int nmax = 200 ;
459 static int nb_dejafait = 0 ;
460 static int l_dejafait[nmax] ;
461 static int nr_dejafait[nmax] ;
466 for (
int conte=0 ; conte<nb_dejafait ; conte ++)
467 if ((l_dejafait[conte] == l) && (nr_dejafait[conte] == n))
472 if (nb_dejafait >= nmax) {
473 cout <<
"_laplacien_mat_r_chebu_cinq : trop de matrices" << endl ;
479 l_dejafait[nb_dejafait] = l ;
480 nr_dejafait[nb_dejafait] = n ;
486 tab[nb_dejafait] =
new Matrice( x2dd + 6.*xd1 + (6-l*(l+1))*
id ) ;
488 indice = nb_dejafait ;
492 return *tab[indice] ;
500Matrice _laplacien_mat_r_cheb (
int n,
int l,
double echelle,
int) {
502 const int nmax = 200 ;
504 static int nb_dejafait = 0 ;
505 static int l_dejafait[nmax] ;
506 static int nr_dejafait[nmax] ;
507 static double vieux_echelle = 0;
510 if (vieux_echelle != echelle) {
511 for (
int i=0 ; i<nb_dejafait ; i++) {
513 nr_dejafait[i] = -1 ;
518 vieux_echelle = echelle ;
524 for (
int conte=0 ; conte<nb_dejafait ; conte ++)
525 if ((l_dejafait[conte] == l) && (nr_dejafait[conte] == n))
530 if (nb_dejafait >= nmax) {
531 cout <<
"_laplacien_mat_r_cheb : trop de matrices" << endl ;
537 l_dejafait[nb_dejafait] = l ;
538 nr_dejafait[nb_dejafait] = n ;
548 new Matrice(x2d2 + (2*echelle)*xd2 + (echelle*echelle)*d2
549 + 2*xd1 + (2*echelle)*d1 - (l*(l+1))*
id) ;
550 indice = nb_dejafait ;
554 return *tab[indice] ;
561Matrice laplacien_mat(
int n,
int l,
double echelle,
int puis,
int base_r)
572 laplacien_mat[i] = _laplacien_mat_pas_prevu ;
575 laplacien_mat[
R_CHEB >>
TRA_R] = _laplacien_mat_r_cheb ;
576 laplacien_mat[
R_CHEBU >>
TRA_R] = _laplacien_mat_r_chebu ;
577 laplacien_mat[
R_CHEBP >>
TRA_R] = _laplacien_mat_r_chebp ;
578 laplacien_mat[
R_CHEBI >>
TRA_R] = _laplacien_mat_r_chebi ;
582 return laplacien_mat[base_r](n, l, echelle, puis) ;
Class for the elementary differential operator (see the base class Diff ).
Class for the elementary differential operator (see the base class Diff ).
Class for the elementary differential operator Identity (see the base class Diff ).
Class for the elementary differential operator division by (see the base class Diff ).
Class for the elementary differential operator division by (see the base class Diff ).
Class for the elementary differential operator (see the base class Diff ).
Class for the elementary differential operator (see the base class Diff ).
Class for the elementary differential operator (see the base class Diff ).
Class for the elementary differential operator (see the base class Diff ).
#define MAX_BASE
Nombre max. de bases differentes.
#define R_CHEBU
base de Chebychev ordinaire (fin), dev. en 1/r
#define R_JACO02
base de Jacobi(0,2) ordinaire (finjac)
#define R_CHEBI
base de Cheb. impaire (rare) seulement
#define TRA_R
Translation en R, used for a bitwise shift (in hex).
#define R_CHEB
base de Chebychev ordinaire (fin)
#define R_CHEBP
base de Cheb. paire (rare) seulement