Apprendre Maple Index du Forum Apprendre Maple
Site dédié au logiciel de calcul formel Maple
 
  Page d'accueilPage d'accueil   FAQFAQ    RechercherRechercher    Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs 
S'enregistrerS'enregistrer    ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

produit de N matrice

 
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Séquences, listes, ensembles, tables ou tableaux...
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
wouroud



Inscrit le: 15 Juin 2006
Messages: 10

MessagePosté le: 16 Juin 2006 13:38    Sujet du message: produit de N matrice Répondre en citant

Bonjour

je suis bloqué dans le calcul du produit de N=55 matrices. il n' y personne qui peut m'aider? Crying or Very sad

le programme se bloque au 11eme matrice voit ci le code

M1:= matrix([[cos(phi1),-I*n1*sin(phi1)], [(-I/n1)*sin(phi1), cos(phi1)]]);
M2:= matrix([[cos(phi2),-I*n2*sin(phi2)], [(-I/n2)*sin(phi2), cos(phi2)]]);

##########################
l1:=10;
##############intialisation
F0[1]:=1; F0[2]:=1;
###############nombre de couches
for t by 1 from 2 to l1-1 do
F0[t+1]:=F0[t]+F0[t-1]; od;
################ Nombre total des couches ############
N:=F0[l1]; d:=N*(n1*d1+n2*d2);
################ les matrices de base ############
M[1]:= evalm(M2);
M[2]:= evalm(M1);
################ Produit des matrices ############

for i by 1 from 3 to N do M[i]:=linalg[multiply](M[i-1],M[i-2]); od;

S[N]:= evalm(M[l1]);
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Administrateur
Administrateur - Site Admin


Inscrit le: 11 Sep 2006
Messages: 18

MessagePosté le: 16 Juin 2006 15:12    Sujet du message: Répondre en citant

Chez moi, il calcule plus loin que pour la valeur 12. pb de mémore sans doute?
Et en rajoutant des evalf dans les expressions? ça ne simplifierait pas?
Merci de rester dans le premier fil que vous avez ouvert.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Envoyer un e-mail
wouroud



Inscrit le: 15 Juin 2006
Messages: 10

MessagePosté le: 16 Juin 2006 15:48    Sujet du message: Répondre en citant

les quels des expression? car pour les matrices le MAPLE 5 n'accepte pas evalf mais il accepte evalm!
en maple exisite il une fonction de simplification les matrices ou bien des element de matrice?
pour le memoire mon pc a une memoir de 256Mb est ce c'est insiffusant?
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 16 Juin 2006 18:40    Sujet du message: Répondre en citant

Bonsoir, est-il vraiment indispensable d'avoir les matrices avec leurs coeff en formel? C'est ce qui conduit au plantage du programme Maple car les formules deviennent trop lourdes à gérer en mémoire.
Ne vaudrait-il pas mieux remplacer les variables des coefficients par les valeurs numériques qui vous intéresse avant de déclencher la boucle où est calculée M[i]:=linalg[multiply](M[i-1],M[i-2]);


Donc je commencerais par définir les matrices initiales comme des fonctions de n1,phi1 et de n2,phi2


Code:

> M1:=(n1,phi1)-> matrix([[cos(phi1),-I*n1*sin(phi1)], [(-I/n1)*sin(phi1), cos(phi1)]]);
> M2:= (n2,phi2)->matrix([[cos(phi2),-I*n2*sin(phi2)], [(-I/n2)*sin(phi2), cos(phi2)]]);

                            [ cos(phi1)      -I n1 sin(phi1)]
                            [                               ]
        M1 := (n1, phi1) -> [-I sin(phi1)                   ]
                            [------------       cos(phi1)   ]
                            [     n1                        ]


                            [ cos(phi2)      -I n2 sin(phi2)]
                            [                               ]
        M2 := (n2, phi2) -> [-I sin(phi2)                   ]
                            [------------       cos(phi2)   ]
                            [     n2                        ]

> ##########################
> l1:=10;
> ##############intialisation
> F0[1]:=1; F0[2]:=1;
> ###############nombre de couches
> for t by 1 from 2 to l1-1 do
> F0[t+1]:=F0[t]+F0[t-1]; od;
> ################ Nombre total des couches ############
> N:=F0[l1]; d:=N*(n1*d1+n2*d2);
> ################ les matrices de base ############
> M[1]:= evalm(M2(0.0001,0.125));  # valeurs que vous modifierez
> M[2]:= evalm(M1(0.004,0.075));
> ################ Produit des matrices ############
>
> for i by 1 from 3 to N do M[i]:=linalg[multiply](M[i-1],M[i-2]); od;
>
> S[N]:= evalm(M[l1]);
>

                               l1 := 10


                              F0[1] := 1


                              F0[2] := 1


                              F0[3] := 2


                              F0[4] := 3


                              F0[5] := 5


                              F0[6] := 8


                             F0[7] := 13


                             F0[8] := 21


                             F0[9] := 34


                             F0[10] := 55


                               N := 55


                       d := 55 n1 d1 + 55 n2 d2


                   [ 0.9921976672     -0.00001246747334 I]
           M[1] := [                                     ]
                   [-1246.747334 I       0.9921976672    ]


                    [ 0.9971888181     -0.0002997188291 I]
            M[2] := [                                    ]
                    [-18.73242682 I       0.9971888181   ]


                    [ 0.6157347680     -0.0003098127480 I]
            M[3] := [                                    ]
                    [-1261.828770 I       0.9891748731   ]


                    [ 0.6082002810     -0.0004934891117 I]
            M[4] := [                                    ]
                    [-1276.811186 I       0.6082002811   ]


                    [-0.2482086999     -0.0006765752298 I]
            M[5] := [                                    ]
                    [-1553.621652 I       0.2060440537   ]


                    [ -1.014819423     -0.0002890049541 I]
            M[6] := [                                    ]
                    [-1207.992478 I      -0.6413793176   ]


                     [-0.1971173446    0.0006270539320 I]
             M[7] := [                                  ]
                     [1296.295038 I      -0.9494501830  ]


                    [0.9575149431     -0.0003452115339 I]
            M[8] := [                                   ]
                    [-168.576704 I       0.9835933985   ]


                     [0.2587531955     0.0009281746640 I]
             M[9] := [                                  ]
                     [1308.256634 I      -0.8281662471  ]


                     [0.4042286769     0.0008236218847 I]
            M[10] := [                                  ]
                     [1392.284812 I      -0.3629535741  ]


                    [-0.9729133331     -0.0003069010289 I]
           M[11] := [                                    ]
                    [-114.5782770 I      -0.9916975887   ]


                    [ 0.0340141719     -0.0006899218878 I]
           M[12] := [                                    ]
                    [-1427.041316 I       0.4543093606   ]


                     [-0.1121429025    0.0006737548882 I]
            M[13] := [                                  ]
                     [1336.333539 I      -0.8884979456  ]


                     [0.9576616143     0.0003834629955 I]
            M[14] := [                                  ]
                     [1313.377557 I      0.5183128244   ]


                     [-0.6198294149    0.0003045231102 I]
            M[15] := [                                  ]
                     [545.3528396 I      -1.345414429   ]


                    [-0.9935406566     -0.0000798434108 I]
           M[16] := [                                    ]
                    [-1244.773635 I      -0.9064681862   ]


                     [0.6593685547     -0.0001951336139 I]
            M[17] := [                                   ]
                     [277.2023145 I       1.598637716    ]


                     [-0.8980066447     0.0001242361787 I]
            M[18] := [                                   ]
                     [-2265.353851 I      -1.426981453   ]


                     [-0.6265558997     0.0003738399229 I]
            M[19] := [                                   ]
                     [-1889.265656 I      -2.723273055   ]


                     [ 1.409531070     -0.0006113035471 I]
            M[20] := [                                   ]
                     [7865.750215 I       4.120775287    ]


                     [ -2.038064805     0.002191685464 I]
            M[21] := [                                  ]
                     [-12713.57143 I      -14.16252775  ]


                      [ -20.11196608     0.01027731954 I]
             M[22] := [                                 ]
                      [-129319.0796 I     -66.13244566  ]


                    [   171.6509263        -0.1896319269 I]
           M[23] := [                                     ]
                    [               7                     ]
                    [0.1104340236 10  I      1220.029344  ]


                    [   -27975.26386        14.30493452 I]
           M[24] := [                                    ]
                    [                9                   ]
                    [-0.1799835253 10  I    -92033.18179 ]


                  [                 8                       ]
                  [ -0.2059949472 10         22757.44307 I  ]
         M[25] := [                                         ]
                  [                12                      9]
                  [-0.1325302845 10   I    -0.1464138051 10 ]


                 [                13                     10  ]
                 [ 0.4672241131 10       -0.2389114318 10   I]
        M[26] := [                                           ]
                 [               17                      14  ]
                 [0.3005964247 10   I     0.1537076538 10    ]


                 [                 21                    18  ]
                 [ -0.4128758068 10       0.4561275796 10   I]
        M[27] := [                                           ]
                 [                25                      22 ]
                 [-0.2656305355 10   I    -0.2934572849 10   ]


                 [                 35                    31  ]
                 [ -0.1564008729 10       0.7997437511 10   I]
        M[28] := [                                           ]
                 [                39                      35 ]
                 [-0.1006231098 10   I    -0.5145284791 10   ]


                 [                56                     53  ]
                 [ 0.2770104975 10       -0.3060293814 10   I]
        M[29] := [                                           ]
                 [               60                      57  ]
                 [0.1782193230 10   I     0.1968891060 10    ]


                 [                 91                    88  ]
                 [ -0.3512609641 10       0.1796145736 10   I]
        M[30] := [                                           ]
                 [                95                      92 ]
                 [-0.2259895990 10   I    -0.1155580313 10   ]


                [                 147                    144  ]
                [ -0.4174108515 10        0.4611377038 10    I]
       M[31] := [                                             ]
                [                151                      148 ]
                [-0.2685482324 10    I    -0.2966806319 10    ]


                [                239                     235  ]
                [ 0.1188743386 10        -0.6078547242 10    I]
       M[32] := [                                             ]
                [               242                      239  ]
                [0.7647978813 10    I     0.3910734738 10     ]


                [                 386                    383  ]
                [ -0.2128577506 10        0.2351561632 10    I]
       M[33] := [                                             ]
                [                390                      387 ]
                [-0.1369455836 10    I    -0.1512916392 10    ]


                [                 625                    622  ]
                [ -0.2051502597 10        0.1049019966 10    I]
       M[34] := [                                             ]
                [                629                      625 ]
                [-0.1319868408 10    I    -0.6749044890 10    ]


               [                1011                     1008  ]
               [ 0.1873264743 10         -0.2069502982 10     I]
      M[35] := [                                               ]
               [               1015                      1012  ]
               [0.1205196112 10     I     0.1331449255 10      ]


               [                 1636                    1633  ]
               [ -0.3115772354 10         0.1593226065 10     I]
      M[36] := [                                               ]
               [                1640                      1637 ]
               [-0.2004584104 10     I    -0.1025028558 10     ]


               [                 2647                    2644  ]
               [ -0.2503816509 10         0.2766109675 10     I]
      M[37] := [                                               ]
               [                2651                      2648 ]
               [-0.1610872106 10     I    -0.1779622788 10     ]


               [                4283                     4280  ]
               [ 0.6325031710 10         -0.3234255983 10     I]
      M[38] := [                                               ]
               [               4287                      4284  ]
               [0.4069314629 10     I     0.2080812523 10      ]


               [                 6930                    6927  ]
               [ -0.6793644629 10         0.7505328791 10     I]
      M[39] := [                                               ]
               [                6934                      6931 ]
               [-0.4370804566 10     I    -0.4828678440 10     ]


              [                 11214                    11211  ]
              [ -0.3483854601 10          0.1781442072 10      I]
     M[40] := [                                                 ]
              [                11218                      11215 ]
              [-0.2241395956 10      I    -0.1146120465 10      ]


              [                18145                     18142  ]
              [ 0.1015314215 10          -0.1121675835 10      I]
     M[41] := [                                                 ]
              [               18148                      18145  ]
              [0.6532193322 10      I     0.7216488539 10       ]


              [                 29359                    29356  ]
              [ -0.2867840391 10          0.1466447976 10      I]
     M[42] := [                                                 ]
              [                29363                      29359 ]
              [-0.1845072941 10      I    -0.9434637601 10      ]


              [                 47504                    47501  ]
              [ -0.1249088079 10          0.1379939228 10      I]
     M[43] := [                                                 ]
              [                47507                      47504 ]
              [-0.8036216458 10      I    -0.8878069144 10      ]


              [                76863                     76860  ]
              [ 0.2904307054 10          -0.1485094922 10      I]
     M[44] := [                                                 ]
              [               76867                      76863  ]
              [0.1868534376 10      I     0.9554605833 10       ]


             [                 124367                    124364  ]
             [ -0.1556227957 10           0.1719254263 10       I]
    M[45] := [                                                   ]
             [                124371                      124368 ]
             [-0.1001225208 10       I    -0.1106110901 10       ]


             [                 201230                    201227  ]
             [ -0.3664462075 10           0.1873794305 10       I]
    M[46] := [                                                   ]
             [                201234                      201231 ]
             [-0.2357592785 10       I    -0.1205536814 10       ]


             [                325597                     325594  ]
             [ 0.2446363926 10           -0.2702638511 10       I]
    M[47] := [                                                   ]
             [               325601                      325598  ]
             [0.1573909027 10       I     0.1738787557 10        ]


             [                 526827                    526824  ]
             [ -0.7268181837 10           0.3716528499 10       I]
    M[48] := [                                                   ]
             [                526831                      526828 ]
             [-0.4676105993 10       I    -0.2391090589 10       ]


             [                 852424                    852421  ]
             [ -0.7627539539 10           0.8426580323 10       I]
    M[49] := [                                                   ]
             [                852428                      852425 ]
             [-0.4907304764 10       I    -0.5421380978 10       ]


            [                1379252                     1379249  ]
            [ 0.4494741718 10            -0.2298351372 10        I]
   M[50] := [                                                     ]
            [               1379256                      1379253  ]
            [0.2891767042 10        I     0.1478682684 10         ]


            [                 2231677                    2231674  ]
            [ -0.1470709266 10            0.1624776862 10        I]
   M[51] := [                                                     ]
            [                2231680                      2231678 ]
            [-0.9462053325 10        I    -0.1045327290 10        ]


            [                 3610929                    3610926  ]
            [ -0.5359522009 10            0.2740550077 10        I]
   M[52] := [                                                     ]
            [                3610933                      3610930 ]
            [-0.3448137863 10        I    -0.1763178595 10        ]


            [                5842606                     5842603  ]
            [ 0.3381352965 10            -0.3735574520 10        I]
   M[53] := [                                                     ]
            [               5842610                      5842607  ]
            [0.2175449820 10        I     0.2403344164 10         ]


            [                 9453536                    9453532  ]
            [ -0.1469301950 10            0.7513161747 10        I]
   M[54] := [                                                     ]
            [                9453539                      9453536 ]
            [-0.9452999129 10        I    -0.4833717903 10        ]


            [                15296142                   15296139  ]
            [-0.2131273488 10         ,  0.2354540037 10         I]
   M[55] := [                                                     ]
            [                15296146                     15296143]
            [-0.1371190340 10         I , -0.1514832598 10        ]


                     [0.4042286769     0.0008236218847 I]
            S[55] := [                                  ]
                     [1392.284812 I      -0.3629535741  ]

Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
wouroud



Inscrit le: 15 Juin 2006
Messages: 10

MessagePosté le: 19 Juin 2006 10:57    Sujet du message: Répondre en citant

Merci beaucoup pour votre idee.
En fait j'ai besoin de laisser les matrices en fonction du variable f qui varie entre f1 et f2 car apres j'ai besoin de faire une une derivation par rapport a f puis chercher les valeurs numeriques.

donc pour determiner T (T= (ab(t))^2 et t = X + iY) je peut replacer f par sa valeur mais comment je peut faire pour determier Vg = d*T / (Y'*X -X'*Y) ?


restart;
c:=3*10^8:
> f1:=evalf(c/(1500*10^(-9)));
> f2:=evalf(c/(800*10^(-9)));
> lam:=0.8e-6;
> n1:=1.6;
> n2:=3.428;
> d1:=lam/(4*n1);
> d2:=lam/(4*n2);
> #f:=f1;
> lam0:=c/f;
>
> phi1:=(2*Pi*n1*d1/lam0);
> phi2:=(2*Pi*n2*d2/lam0);
>
>
> M1:=(n1,phi1)-> matrix([[cos(phi1),-I*n1*sin(phi1)], [(-I/n1)*sin(phi1), cos(phi1)]]);
> M2:= (n2,phi2)->matrix([[cos(phi2),-I*n2*sin(phi2)], [(-I/n2)*sin(phi2), cos(phi2)]]);
>
> ############# Ordre d'iteration ##########################
> l1:=10;
> ##############intialisation
> F0[1]:=1: F0[2]:=1:
> ###############nombre de couches
> for t by 1 from 2 to l1-1 do
> F0[t+1]:=F0[t]+F0[t-1]: od:
> ################ Nombre total des couches ############
> N:=F0[l1];
> ################ epaisseur du systeme global ############
> d[1]:=n1*d1:
> d[2]:=n2*d2:
> for i by 1 from 3 to N do d[i]:=d[i-1]+d[i-2]: od:
> d:=d[N];
> ################ Matrice des couches ############
>
> M[1]:= evalm(M2(n1,phi1));
> M[2]:= evalm(M1(n2,phi2));
>
> ################ Produit des matrices ############
>
> for i by 1 from 3 to N do M[i]:=evalf(linalg[multiply](M[i-1],M[i-2])); od;
>
> S[N]:= simplify(evalm(M[N]));
> ################ expression de la transmission ############
>
> t:=2/(S[N][1,1]+S[N][1,2]+S[N][2,1]+S[N][2,2]);
> ################ Transmittance ############
> T:=evalc(abs(t)^2);
>
> ################ t est complex: t= X+IY ############
>
> X:=Re(t);
> Y:=Im(t);
> XDf:=(diff(X,f));
> YDf:=diff(Y,f);
>
> ################ Vg= d.T/(Y'*X-X'*Y ############
> dinoVg:=YDf*X-XDf*Y;
> numVg:=d*T;
> Vg:=abs(numVg/dinoVg);
>
> plot(Vg,f=f1..f2);
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 19 Juin 2006 12:29    Sujet du message: Répondre en citant

Pour dériver expr par rapport à une variable f par exemple, utiliser
> diff(expr,f)
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
wouroud



Inscrit le: 15 Juin 2006
Messages: 10

MessagePosté le: 19 Juin 2006 14:01    Sujet du message: Répondre en citant

je l'ai deja utilisé et le probleme est dans le calcul du produit de matrice car ce produit doit donner un matrice en fonction de f pour que je puisse deriver apres.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Séquences, listes, ensembles, tables ou tableaux... Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


phpBB

Développé par phpBB © 2001, 2006 phpBB Group
Traduction par : phpBB-fr.com


Apprendre Maple - ©  - Alain Le Stang - Navigation optimisée pour une résolution 1024 x 768.