老师您好,请问在用matlab求解微分方程组时,有两个变量的值不确定,但与被积分量有关,关系如下?

微分方程组如下:dYdt(1)=P/(m0-m1*t)-g*sin(Q)-Cd*Sm*q/(m0-m1*t);dYdt(2)=Y(1);其中Q和q为一组列向量tqQ00.... 微分方程组如下:
dYdt(1)=P/(m0-m1*t)-g*sin(Q)-Cd*Sm*q/(m0-m1*t);
dYdt(2)=Y(1);
其中Q和q为一组列向量
t q Q
0 0.00 90.00
5 99.35 90.00
10 454.36 90.00
15 1127.59 88.6771
20 2178.27 87.9207
25 3653.29 86.2922
30 5579.78 84.0686
35 7954.98 81.3197
40 10738.17 78.1619
45 13839.04 74.6610
50 17111.38 70.9418
其他的参数均为定值常数,此时的q和Q该如何插入求解,我自己编的程序如下
function dYdt = odefun2(t,Y)
P=2981200;
Cd=0.2;
Sm=8.8141;
g=9.8;
m0=241529.6;
m1=1161;
Q=;
q=;
dYdt=zeros(2,1);
dYdt(1)=P/(m0-m1*t)-g*sin(Q)-Cd*Sm*q/(m0-m1*t);
dYdt(2)=Y(1);
end

% clear;clc;close all
tspan=0:5:140; % 定义自变量 t 的离散数据点
Y0=[0,0]; % 初始条件
[tdata,Ydata]=ode45('odefun2',tspan,Y0); % 计算微分方程组的数值解
% 提取计算结果
Y1=Ydata(:,1);
Y2=Ydata(:,2);
v=Y1;
r=Y2;
% 绘制计算结果
plot(tdata,v,tdata,r)
legend({'v','r'})
grid on
xlabel('自变量 t')
ylabel('求解结果')
展开
 我来答
lhmhz
高粉答主

2020-07-09 · 专注matlab等在各领域中的应用。
lhmhz
采纳数:7264 获赞数:17014

向TA提问 私信TA
展开全部

对于有两个可变的变量值的微分方程组时,如何用matlab求解。

我们可以通过下列途径去解决。

途径一:将t ,q,Q数据赋值给A,然后提取q,Q数据。即

t=A(:,1);q=A(:,2);Q=A(:,3);

途径二:自定义微分方程组时,应通过参数变量,将q,Q数据调入函数内。即 odefun2(t,Y,q1,Q1)

途径三:使用for循环语句,将q,Q值赋值给函数体。即

for i=1:length(q1)

t=t1(i);

Q=Q1(i);

q=q1(i);

。。。

end

途径四:使用ode45函数,求出【tdata,Ydata】值。即

[tdata,Ydata]=ode45(@(t,Y)odefun2(t,Y,q,Q),tspan,Y0)

途径五:从【tdata,Ydata】数据中,第i个的数据分别赋值给Y1,Y2。即

Ya=Ydata(:,1); Yb=Ydata(:,2);

Y1(i,1)=Ya(i); Y2(i,1)=Yb(i);

v=Y1;r=Y2;

途径六:使用plot函数,绘制plot(tdata,v,tdata,r)

完善代码,运行可以得到如下结果。本图为得到光滑曲线,t的取值为0:1:50

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式