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

Matlab 如何在ode45中转换符号方程求解?,matlab,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 =

我试图解一个微分方程,如下所示:

%% 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]


感谢您的帮助

matlabFunction
!或者根本不使用符号数学,直接使用,这会快得多。我同意@horchler,忽略符号数学,创建一个标准函数,更好的方法。嘿,伙计们,我根本不想写任何函数。