matlab将符号数值,在matlab中将符号变量分配给数值变量

我有符号变量:

[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 2x1 matrix

%B is a 2x2 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矩阵

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值