Bonjour,
j'aimerais utiliser matlab pour me donner le résultat d'une équation différentielle:
s=RC*du/dt+u
où s n'est pas constante.
en effet, s un signal "mi-carré, mi-exp".
Pour ce faire, j'ai écrit ceci:
fichier eqdiff.m
fichier calcul:Code:% eqdiff.m clear; clc; pas=0.0001; tmax=30; freq=5; alpha=1; A=4; B=2; t=0:pas:tmax y1= (A/2)*square((freq/2*pi)*t)+A/2; y2= (B/2)*square((freq/2*pi)*t+pi)+B/2; y3=(1-exp(-alpha*t)); s=y1+y2.*y3; function du=eqdiff(t,u) % Eq diff R=10000; C=1*10^(-9); du(1)=(s-u(1))./(R*C);
Malheureusement, j'obtiens des messages d'erreurs que je ne comprends pas.Code:[ t , u ] = ode45 ( 'eqdiff' , 0 , 30 , [ 0 ] ) figure plot(t,u)
Pourriez-vous SVP m'expliquer ce qui ne va pas?Code:Warning: Obsolete syntax. Use ode45(fun,tspan,y0,...) instead. > In funfun\private\odearguments at 41 In ode45 at 173 In calcul at 22 ??? Error: File: C:\Calcul Matlab\eqdiff.m Line: 20 Column: 1 Function definitions are not permitted at the prompt or in scripts. Error in ==> funfun\private\odearguments at 80 if (nargin(ode) == 2) Error in ==> ode45 at 173 [neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, ... Error in ==> calcul at 22 [ t , u ] = ode45 ( 'eqdiff' , 0 , 30 , [ 0 ] )
Merci d'avance
-----