Rung Kutta4 + fonction de transfert
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Rung Kutta4 + fonction de transfert



  1. #1
    invite8fa9cf02

    Rung Kutta4 + fonction de transfert


    ------

    Bonjour tout le monde, j'ai besoin d'écrire sur Matlab M-function qui résout l'équation différentielle qui décrit mon système avec la méthode de Rung kutta4). J'ai écrit le fichier fonction pour le Rung kutta 4, j'ai calculé ma fonction de transfert. mais je bloque sur la forme avec laquelle ou sous laquelle je dois écrire mon fonction ie: f=inline(' l'équation ou la fonction que je dois écrire et pour qui calculer les coefficients rung kutta .. ')
    J'ai transformé ma fonction de transfert en equation aux déffirences mais je ne crois pas que c'est la meilleure des choses à faire...
    Il me semble qu'avec la représentation d'état ça pourrait marcher mais je ne sais pas comment incorporer mes equation d'états dans mon ficher matlab.
    function [ i, y ] = runge_kutta4(Tmax, Ts)

    Tmax=input('donner Tmax')
    Ts=input('donner Ts')
    f=inline('x')
    h=Ts;
    n=Tmax;
    x=0;
    x(1)=1;
    t(1)=0;
    a=0;
    for i=1:n
    k1(i)=f(x(i));
    k2(i)=f(x(i)+h/2*k1(i));
    k3(i)=f(x(i)+h/2*k2(i));
    k4(i)=f(x(i)+h*k3(i));
    x(i+1)=x(i)+(h/6*(k1(i)+2*k2(i)+2*k3(i)+k4(i) ));
    t(i+1) = a + i*h
    end
    k1
    k2
    k3
    k4
    x;
    y=x
    plot(t,y)
    end

    -----

  2. #2
    erff

    Re : Rung Kutta4 + fonction de transfert

    Bonjour,

    Tout d'abord, ton but est-il d'aller vers la solution ou bien d'implémenter toi-même un solveur d'EDO pour des raisons pédagogiques ?
    Car matlab possède plusieurs solveurs numériques suffisamment performants selon la régularité de ton problème (ode45, ode23, etc.) qui seront bien + rapide et précis que ta propre implémentation (faire help ode45).

    En général, pour une équation du type Y'=f(t,Y), il faut coder dans un m-file la fonction f qui prend pour paramètres le scalaire t et le vecteur Y, et qui renvoie le vecteur Y' (représentation d'état).

  3. #3
    invite8fa9cf02

    Re : Rung Kutta4 + fonction de transfert

    Merci pour votre réponse, oui je dois l’implémenter moi même. Oui le problème je ne sais comment coder ma fonction.
    Ma fonction de transfert apres calcul est
    -200 s - 2e006
    ---------------------
    s^3 + 500 s^2 + 1e006


    A =

    -500 0 -1000000
    1 0 0
    0 1 0


    B =

    1
    0
    0


    C =

    0 -200 -2000000


    D =

    0

    je ne sais pas comment la coder et l'incoporer dans mon fichier function de rung kutta

  4. #4
    erff

    Re : Rung Kutta4 + fonction de transfert

    Re

    Il faut formuler ton problème en terme de système différentiel (*s ==> d/dt) dans un premier temps. Donc avec les matrices A et B. Les C et les D, tu n'es pas obligé de t'y intéresser pour le moment. Il suffira de les appliquer après la résolution ; ça ne changera pas grand chose au calcul.

    * Ensuite, tu codes une fonction matlab qui renvoit Y' en fonction de Y et de t (Y est ton vecteur de fonctions).
    * Parallèlement tu codes RK4 dans une autre fonction qui prend au minimum en entrée, un handle vers ta fonction inconnue et un vecteur de condition initiales ; sachant que c'est exactement ce qui est fait dans l'algo ode45 déjà existant --- > tu vas réinventer la roue en moins bien.

  5. A voir en vidéo sur Futura
  6. #5
    invite8fa9cf02

    Re : Rung Kutta4 + fonction de transfert

    Merci beaucoup, mais je bloque toujours làbas je ne sais pas comment le faire et comment faire les changements que vous venez de me dire.

  7. #6
    Yvan_Delaserge

    Re : Rung Kutta4 + fonction de transfert

    c'est expliqué en détail ici.
    Un civet, un plat de côtes et puis, glissez-moi une petite paupiette avec.( Lino Ventura)

  8. #7
    erff

    Re : Rung Kutta4 + fonction de transfert

    Re

    La méthode :

    1- Écris ton problème sous forme d'un système différentiel (avec des d/dt) où le vecteur inconnu est Y=[y'' ; y' ; y] (en colonne). La forme d'un tel système est Y'=A*Y+B où A est une matrice 3*3 et B est un vecteur 3*1 (les coefficients dépendent éventuellement du temps t). Maintenant, tu codes une fonction F1 qui prend pour paramètre le vecteur Y et l'instant t, et qui renvoie le vecteur Y'.

    2- Parallèlement, tu codes ta fonction matlab RK4, que j'ai citée dans mon précédent message, et que tu trouveras détaillée dans le pdf donné par Yvan_Delaserge (ainsi que dans n'importe quel bouquin de techniques numériques).

    Au risque de me répéter : le point 2 revient à recoder l'algorithme ode45 déjà présent dans matlab.

Discussions similaires

  1. Fonction de Transfert
    Par invite722e52ea dans le forum Électronique
    Réponses: 2
    Dernier message: 09/10/2012, 09h54
  2. Fonction de Transfert, Fonction d'Onde, bien des analogies
    Par invite7399a8aa dans le forum Physique
    Réponses: 5
    Dernier message: 11/06/2012, 06h56
  3. Méthode de Rung-Kutta d'ordre 4
    Par inviteb8a8585a dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 27/10/2010, 16h25
  4. fonction de transfert
    Par invite07426679 dans le forum Physique
    Réponses: 2
    Dernier message: 04/02/2010, 22h35
  5. Fonction de transfert
    Par invite5e5ea0fa dans le forum Électronique
    Réponses: 8
    Dernier message: 23/02/2007, 09h43
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...