老师您好,请问在用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('求解结果') 展开
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('求解结果') 展开
1个回答
展开全部
对于有两个可变的变量值的微分方程组时,如何用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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询