IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Fortran Discussion :

produit de kronecker


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 14
    Par défaut produit de kronecker
    Bonjour,

    j'essaye actuellement de faire un produit de Kronecker en fortran 90.

    Voici le code de ma fonction:

    MODULE kronec

    !
    ! Calcul du produit de kronecker par la fonction kron
    !

    !IMPLICIT NONE


    CONTAINS

    FUNCTION kron(A,B)

    IMPLICIT NONE

    !!
    !!! Calcul du produit de kronecker, equivalent de la fonction kron matlab
    !!


    REAL, dimension( : , : ) , intent(in) :: A,B


    REAL, dimension(size(B,1),size(B,2),size(A,1),size(A,2)) :: C
    REAL, dimension(size(A,1)*size(A,2),size(B,1)*size(B,2)) :: kron

    INTEGER :: i, j, m, n, p, q, ii, jj
    INTEGER :: ind1, ind2, ip, jq, mp, nq


    m = size(A,1)
    n = size(A,2)
    p = size(B,1)
    q = size(B,2)

    !m=2
    !n=3
    !p=4
    !q=5


    mp = m*p
    nq = n*q


    DO i = 1,m
    DO j = 1,n
    DO ii = 1,p
    DO jj = 1,q
    C(ii,jj,i,j) = A(i,j)*B(ii,jj)
    END DO
    END DO
    END DO
    END DO


    DO i = 1,m
    ind1 = (i-1)*p+1
    ip = i*p
    DO j = 1,n
    ind2 = (j-1)*q+1
    jq = j*q
    kron(ind1:ip,ind2:jq) = C(:,:,i,j)
    END DO
    END DO



    WRITE(*, *) 'C=', C

    WRITE(*, *) 'C(:,:,1,1)=',C(:,:,1,1)



    END FUNCTION kron



    END MODULE kronec

    Je sais que je calcule bien ce qu'il faut avec le tableau C. Cependant lorsque je veux ranger les valeurs dans la matrice kron, il y a un problème: à partir de la deuxième colonne (jusqu'à la fin) et pour les deux premières lignes le récupère les valeurs sur les deux dernières lignes depuis la première colonne jusqu'à l'avant dernière.

    Donc je sais que c'est un problème d'indice, mais je n'arrive pas à le résoudre.

    Si quelqu'un à une idée, je suis preneur, merci d'avance

  2. #2
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 32
    Par défaut
    Bonjour,
    Voici une subroutine que j'avais écrite il y a quelque temps, sans garantie:
    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
    subroutine kron_prod(tab,tab2,tab3)
      ! Kronecker product
      Implicit none
      Integer :: i,j,k,l,m,n,o,p
      Real, dimension(:,:) :: tab, tab2
      real, allocatable:: tab3(:,:)
      ! Matrix tab of size (m*n), matrix tab2 of size (o*p)
      m=size(tab, dim=1)
      n=size(tab, dim=2)
      o=size(tab2, dim=1)
      p=size(tab2, dim=2)
      Allocate(tab3(m*o , n*p))
      tab3=0
      Do i=1,m  ! tab(i,.)
            Do j=1,n  ! tab(i,j)
                  Do k=1,o
                        Do l=1,p
                               tab3((i-1)*o+k,(j-1)*p+l)=tab(i,j)*tab2(k,l)
                         Enddo
                   Enddo
             Enddo
      enddo
    end subroutine kron_prod
    En espérant que cela puisse t'aider...

Discussions similaires

  1. error 80020009 une exception s'est produite
    Par Riouxe21 dans le forum ASP
    Réponses: 6
    Dernier message: 21/12/2004, 11h01
  2. erreur :"une exception s'est produite"
    Par leborg dans le forum ASP
    Réponses: 11
    Dernier message: 02/03/2004, 15h09
  3. [info]Licence des produits Java
    Par XavierZERO dans le forum Général Java
    Réponses: 12
    Dernier message: 16/01/2004, 16h27
  4. Faire le produit de 2 colonnes
    Par toure32 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 07/11/2003, 20h47
  5. [Dev-Pascal] Ne produit pas d'exe
    Par portix dans le forum Autres IDE
    Réponses: 8
    Dernier message: 02/07/2003, 15h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo