我有符号变量:
[q dq ddq n]
q=[q1; q2];
dq=[dq1; dq2];
ddq=[ddq1; ddq2];
和变量 n 是
n=[2*dq1 + (83*dq1*dq2)/400;
(83*dq1^2)/800 + 2*dq2]
我正在尝试使用变量获取ODE函数的值:
state=[q; dq];
u=[5;5];
q1=state(1);
q2=state(2);
dq1=state(3);
dq2=state(4);
dxdt1=dq1;
dxdt2=dq2;
ddxdt=inv(B)*(u-n); %which is 2×1 matrix
%B is a 2×2 numeric matrix
dstate=[dxdt1; dxdt2; ddxdt];
使用这个变量我试图获得方程的解
t0=0;
tf=1;
N=10;
tspan=linspace(t0,tf,N);
x0=[0.5; 0.5;zeros(2,1)];
function_q=@(tspan,state)ode_system(tspan,state,B,n,u);
odesystem在哪里
function dydt=ode_system(time, state,B,n_t,u)
q1=state(1);
q2=state(2);
dq1=state(3);
dq2=state(4);
dxdt1=dq1;
dxdt2=dq2;
ddxdt=inv(B)*(u-n_t);
dydt=[dxdt1; dxdt2; ddxdt]
end
最后我试着计算
[tout,xout]=ode45(function_q, tspan, x0)
当我运行代码时,它会出错并说出来
使用odearguments时出错(第110行)输入必须是浮点数,即单个或双精度 . ode45(第115行)odearguments(FcnHandlesUsed,solver_name,ode,tspan,y0,options,varargin)中的错误; mainfunc中的错误(第140行)[tout,xout] = ode45(function_q,tspan,x0)尝试打开(‘使用odearguments时出错(第110行)↑错误:字符串未正确终止 .
我认为问题是由于将符号变量放到ode45函数中 . 我怎么解决这个问题?如何以数字形式定义n矩阵