matlab

matlab - Divers - Programmation

Marsh Posté le 17-02-2005 à 14:33:35    

Bonjour,
 
Je réalise sous matlab un programme permettant de résoudre une EDO de Runge Kutta d'ordre 4. Il s'agit d'une EDO de thermique.
 
Mais Matlab détecte des erreurs que je ne comprends pas
 
Les erreurs sont:
-la fonction ' f ' n'est pas défini
-il y a une erreur à la ligne a=feval(f,t,T)
-de même pour la ligne [t,T]=f_rangeK(' f ',t0,T0,tf,h)  
 
Ci-dessous le fichier de commande et le fichier de la fonction
 
Pouvez vous me dire que signifie ces erreurs
merci beaucoup
 
%*************************************************************************%
%   PROJET MATLAB
%  
% Problème 1 : Etude thermique d'un fusible en plomb
 
%*************************************************************************%
 
%*************************************************************************%
%          FICHIER DE COMMANDE  c_probleme1.m
%*************************************************************************%
 
 
% paramètres du fusible
 
I=1;
 
Cp = 130;  % capacité calorifique massique du plomb (J/kg/K)
u = 11300;  % masse volumique du plomb (kg/m^3)
k = 2.5;    % paramètre du terme de convection
o = 5.67*10^(-8);  % paramètre du terme de rayonnement
 
rho = 20.7*10^(-8);  % resistivité electrique ( ohm.m)
r = 10^(-3);  % rayon du fusible (m)
Pv = rho*(I/(pi*r.^2)).^2;  % puissance volumique
 
 
 
% condition initiale
 
T0 = 298; % Température initiale du fusible (K)
Tf = 600; % température de fusion du plomb (K)
 
t0= 0; % borne inférieure de l'intervalle de temps
tf = 80; % borne supérieure de l'intervalle de temps
 
f = 'Pv./(Cp.*u)-2*(k.*(T-T0).^(5/4)+o.*(T.^4-T0.^4))./(r.*Cp.*u)';
 
 
h=1;
 
[t,T] = f_rangeK('f',t0,T0,tf,h);
 
% tracé de T(t)
 
figure(1);
hold on
plot(t,T)
title('evolution de la température en fonction du temps');
xlabel('Temps');
ylabel('Température (K)');
 
 
 
 
 
%*************************************************************************%
%   PROJET MATLAB
%  
% Problème 1 : Etude thermique d'un fusible en plomb
 
%*************************************************************************%
 
%*************************************************************************%
%          FICHIER DE FONCTION f_RangeK.m
%*************************************************************************%
 
 
% RESOLUTION D'EDO DU 1er ORDRE PAR LA METHODE DE RANGE KUTA D'ORDRE '
 
 
function [t,T] = f_rangeK(f,t0,T0,tf,h)
 
% [t,T]    : tableau de valeurs de la fonction T(t)
% t0, tf   : bornes de l'étude de la fonction
% T0       : conditions initiales : T(t0) = T0
% h        : pas de discrétisation
% a,b,c,d  : élément de calcul pour la méthode
 
 
tx = t0:h:tf;
Ty = T0;
 
for i=1:floor((tf-t0)/h)
    t = tx(i);
    T = Ty(i);
    a = feval(f,t,T);
     
    t = tx(i)+h/2;
    T = Ty(i)+a*h/2;
    b = feval(f,t,T);
     
    t = tx(i)+h/2;
    T = Ty(i)+b*h/2;
    c = feval(f,t,T);
     
    t = tx(i)+h;
    T = Ty(i)+c*h;
    d = feval(f,t,T);
     
    Ty(i+1) = Ty(i)+h*(a+2*b+2*c+d)/6;
     
end
 
t = tx;
T = Ty;

Reply

Marsh Posté le 17-02-2005 à 14:33:35   

Reply

Marsh Posté le 28-02-2005 à 23:33:47    

bou c ki ce mec de l'EPF ki a pas compris :) ... moi aussi ca marche pa

Reply

Marsh Posté le 01-03-2005 à 09:29:44    

j'ai une bonne blague : y'a un solveur runge-kuta dans simulink (qui doit d'ailleur être accessible depuis matlab), vous faites pas chier à écrire le solveur vous-même.
 
un petit cours de lecture de manuel ?  

Citation :

FEVAL Execute function specified by string.
    If F is a string containing the name of a function (usually
    defined by an M-file), then  FEVAL(F,x1,...,xn)  evaluates
    that function at the given arguments.  
 
    For example, F = 'foo', FEVAL(F,9.64) is the same as foo(9.64).
    FEVAL is usually used inside functions which have the names of
    other functions as arguments.  Examples include FZERO and EZPLOT.
 
    [y1,..,yn] = FEVAL(F,x1,...,xn) returns multiple output arguments.
 
    Within methods that overload built-in functions, use
    BUILTIN(FUN,...) to execute the original built-in function.


---------------
trainoo.com, c'est fini
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed