matlab - Divers - Programmation
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
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. |
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;