欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > windows >内容正文

windows

非线性微分方程 matlab,用ODE45求解Matlab中微分方程的非线性系统

发布时间:2023/12/20 windows 36 豆豆
生活随笔 收集整理的这篇文章主要介绍了 非线性微分方程 matlab,用ODE45求解Matlab中微分方程的非线性系统 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

我正在尝试使用ODE45 MATLAB解决非线性微分方程系统,我做了很多次成功,但这次我得到以下错误,我真的不知道有什么不对,我很困惑 . 这是代码 .

%%这是错误:

Subscript indices must either be real positive integers or logicals.

Error in non_L_ss (line 6)

(-Fk*(ds0+x(3)-x(1))+Fk*ds0-Fc(x(4)-x(2)))/ms +Fa/ms ] ;

Error in odearguments (line 87)

f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.

Error in ode45 (line 115)

odearguments(FcnHandlesUsed,solver_name,ode, tspan,y0,optio varargin);

Error in solve (line 50)

[t X]=ode45(@non_L_ss,t_span,IC);

%%方程式在函数中定义:

function dX=non_L_ss(t,x)

global Fk Fc kt Fa q ds0 ms mu

dX=[ x(2);

(Fk*(ds0+x(3)-x(1))-Fk*ds0+Fc*(x(4)-x(2))-kt*x(1))/mu-Fa/m-kt*q/mu ;

x(4);

(-Fk*(ds0+x(3)-x(1))+Fk*ds0-Fc(x(4)-x(2)))/ms +Fa/ms ] ;

end

%%,这里函数被ODE45调用来解决:

clear

clc

global Fk Fc kt Fa q ds0 ms mu qdot v2

mu = 100 ;

ms = 1242 ;

k1s = 80000 ;

k2s = 32000 ;

kt = 405000 ;

c1s = 4000 ;

c2s = 1600 ;

v = 20 ;

Gq = 256e-6 ;

ds0 = 0.1538 ;

a = 1 ;

b = 0.001 ;

n0 = 0.1 ;

f0 = 0.011*v ;

w = 0.5 ;

Fa = 2000 ;

q = 0.05 ;

xs = 0.1 ;

xu = 0.1 ;

dxs = 0.1 ;

dxu = 0.2 ;

Fk = k1s+k2s*(ds0+xs-xu).^2 ;

if dxs >= dxu

Fc = c1s ;

elseif dxs < dxu

Fc = c2s ;

end

t_span=[0 1];

IC=[2 3 2 2];

[t X]=ode45(@non_L_ss,t_span,IC);

总结

以上是生活随笔为你收集整理的非线性微分方程 matlab,用ODE45求解Matlab中微分方程的非线性系统的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。