如何在ode45中转换符号方程?

时间:2014-12-01 05:15:00

标签: matlab

我正在尝试解决下面的微分方程:

%% Parameters Initialization
C    = 0.01;
gfi  = 0.2308;
gso  = 0.769;
Efi  = 17.333;
Eso  = 0;
km   = 0.842;
v12m = 5.85;
kn   = 4.4;
v12n = 9.667;
tauni = 3;

%% defining Functions
syms v n;
n_v_e = 1 / (1+exp((v12n-v)/kn));
m_v = 1 / (1+exp((v12m-v)/km));
gfi_v = gfi * m_v;
Dn = tauno*(n_v_e-n);
Ifi = gfi_v*(v-Efi);
Iso = gso*n*(v-Eso);
Dv = -1/C * (Ifi + Iso);

%% Solving ODE
v0 = -10;
n0 = 0.1;
te = 2000;

Dv = subs(Dv,'v','y(1)');
Dv = subs(Dv,'n','y(2)');
Dn = subs(Dn,'v','y(1)');
Dn = subs(Dn,'n','y(2)');

[t,V] = ode45(@(t,y)[Dv;Dn],[0 te],[v0;n0]);

问题发生在ode45,说“输入必须是浮点数,即单个或双重”。 我知道问题是由符号(n和v)引起的,但我不知道如何摆脱它们! 我也不想写一个单独的函数并使用它而不是[Dv; Dn]。

感谢您的帮助

0 个答案:

没有答案