Matlab:帮助求解二阶常微分方程,导数输入是时间的函数

Matlab:帮助求解二阶常微分方程,导数输入是时间的函数,matlab,Matlab,我一直在周而复始地试图用Matlab来求解输入电压随时间变化的谐振器电路方程。只要导数函数的所有in参数都是标量值,它就可以正常工作 我浏览了其他问题,找到了建议匿名函数或使用插值的答案。当我尝试实现这些建议时,我得到一个返回错误,它告诉我没有足够的初始条件来匹配ode函数的输出,或者连接的矩阵不匹配 这是我的密码: %% Define Parameters f0=1494.72e6; Q=80; R=1; L=(Q*R)/(2*pi*f0); C=1/((2*pi*f0)^2*L); tp=

我一直在周而复始地试图用Matlab来求解输入电压随时间变化的谐振器电路方程。只要导数函数的所有in参数都是标量值,它就可以正常工作

我浏览了其他问题,找到了建议匿名函数或使用插值的答案。当我尝试实现这些建议时,我得到一个返回错误,它告诉我没有足够的初始条件来匹配ode函数的输出,或者连接的矩阵不匹配

这是我的密码:

%% Define Parameters

f0=1494.72e6;
Q=80;
R=1;
L=(Q*R)/(2*pi*f0);
C=1/((2*pi*f0)^2*L);
tp=71e-9;
N=2^16;
n=(0:N-1);
TT=1e-6;
h=TT/N;
t=n*h;
start_pulse=1;
end_pulse=round(tp/h);
V=zeros(size(t));

%% Create Voltage Pulse
for ii=1:length(n);
    if ii>=start_pulse && ii<=end_pulse
        V(ii)=sin(2*pi*f0*t(ii));
    end
end

%% 

tspan=[0 TT];
x0=[0 0];
sol=ode45(@ode,tspan,x0,[],V);
int=(0:h:TT);
sint=deval(sol,int);
plot(int,sint*C);
如您所见,L、C和R都是标量值。如果我将dx2中的“V”替换为“1”,则程序运行正常。我需要将V更改为上面定义的矩阵

任何帮助都将不胜感激!!!提前谢谢!!!:)

function [ dx ] = ode( t,x,V)
f0=1494.72e6;
Q=80;
R=1;
L=(Q*R)/(2*pi*f0);
C=1/((2*pi*f0)^2*L);
dx1 = x(2);
dx2 =((-x(1)./(L*C))-(R*x(2)./L)-(V./(L*C)));
dx = [dx1; dx2];
end