ODE en matlab
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

ODE en matlab



  1. #1
    cpalperou

    ODE en matlab


    ------

    Bonjour, je suis face à un problème que je ne sais pas programmer.
    Voici ce problème:
    j'ai un vecteur T de dimension 500, un vecteur L de dimension 500. Chaque valeur de T et de L étant fonction du temps t. Je calcule la fonction

    Jusque là, pas de problème.
    Je sais ensuite que cette expression est égale à une dérivée du temps:

    Je dois alors retrouver la fonction en utilisant un solveur d'équation différentielle (ode45 par exemple), ceci est imposé.
    Je n'y arrive pas, pouvez vous m'aider SVP?
    merci

    -----

  2. #2
    Arzhur

    Re : ODE en matlab

    Bonjour,

    si je me souviens bien ( j'utilise pas matlab tt les jours)

    pour ode45, tu dois écrire une fonction qui te donne la dérivée de la "fonction cherchée" en fonction de la valeur de la "fonction cherchée" et de la variable.... y' = mafonction(t,y)

    Puis tu appelles ode45 en lui passant le nom de ta fonction (avec la plage des valeurs de t et la condition initiale).

    exemple :
    http://www.eng.auburn.edu/~tplacek/c...45waterloo.pdf

  3. #3
    cpalperou

    Re : ODE en matlab

    Merci,
    j'ai écris une fonction faisant le calcul dumembre de droite:
    function dy = rigid(t,y,Tr,L)
    dy = 1./(L.*Tr)-1./L;


    pis, je l'appelle avec ode45 ainsi:
    tspan= [0 20];
    IC=1e-2;
    [T,Y]=ode45(@(t,y) rigid(t,y,Tr,L),tspan,IC);
    et j'obtiens une erreur:
    Error using odearguments (line 93)
    @(T,Y)RIGID(T,Y,Tr,L) returns a vector of length 500, but the length of initial conditions vector is 1. The vector returned by @(T,Y)RIGID(T,Y,Tr,L) and the initial conditions vector must have the same number of elements.

    Error in ode23 (line 113)
    [neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...

    je ne trouve pas ma bêtise

  4. #4
    Arzhur

    Re : ODE en matlab

    Je ne sais pas à quoi correspond @(t,y)...donc là je sais pas trop.


    ensuite ta fonction ( rigid) n'est pas bonne : elle doit être du type y ' = f (t, y) là t'as y' = f ( t , y, Tr , L)....aussi comme tu résous qu'une seule équation du premier ordre, 'rigit' devrait retourner un réel ( et non un vecteur)

    L'appel à ode45 me semble pas correct, il faut mettre : nom de la fonction , plage , condition initiale.


    Regarde l'exemple ça peut t'aider.


    Edit : pour le coup du nombre d'argument de f.....je suis pas vraiment sur de mon coup puisque matlab ne te met pas d'erreur dessus....à voir
    Dernière modification par Arzhur ; 13/01/2014 à 13h26.

  5. A voir en vidéo sur Futura

Discussions similaires

  1. [matlab] programmation : peut-on générer un arbre des fonctions d'un code Matlab ?
    Par bratisla dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 09/07/2015, 10h12
  2. MATLAB: acquisition de donnée via une interface graphique matlab
    Par inviteaeee671e dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 08/05/2011, 16h54
  3. Passage de matlab 7.0 à matlab 7.9
    Par Gawel dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 05/01/2011, 10h20
  4. matlab
    Par invite237e86c2 dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 16/03/2006, 15h34
  5. [MatLab] Sb2Sl => Matlab classique = pb intégration.
    Par invite6e6d5361 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 03/08/2005, 21h02