如何解一个非线性的微分方程组?

3次浏览(过去30天)
你好,我正试图解决这个微分方程组,但我不知道如何。我尝试过用dsolve,但Matlab找不到解析解,所以我尝试用ODEs函数,但我不知道如何将我的符号系统转换为Ode45可以解决的系统。我尝试matlabfunction,但我不知道使用它很好。
clc;clearvars;
信谊wp(t) wt(t) ws(t) Q(t)
P = 840;
A = 0.0097;
Ap = deg2rad(18.01);
At = deg2rad(-59.04);
As = deg2rad(59.54);
Rp = 0.11;
Rs = 0.060;
Rt = 0.066;
Ts = 0;
Tp = 200;
Tt = -Tp;
Ip = 0.092;
It = 0.026;
Is = 0.012;
Sp = -0.001;
St = -0.00002;
Ss = 0.002;
Lf = 0.28;
Pl = 0.5;
eqn1 = Ip * diff (wp, t) = = - p * (t) * (wp (t) * Rp ^ 2 + Rp * Q (t) / * tan(美联社)——ws (t) * r ^ 2 - Rs * Q (t) / * tan ()) + Tp;
eqn2 =它* diff (wt, t) = = - p * (t) * (wt (t) * Rt ^ 2 + Rt * Q (t) / * tan(在)——wp (t) * Rp ^ 2 - Rp * Q (t) / * tan(美联社))+ Tt;
eqn3 = * diff (wt, t) = = - p * (t) * (ws (t) * r ^ 2 + r * Q (t) / * tan () - wt (t) * Rt ^ 2 - Rt * Q (t) / * tan ()) + Ts;
eqn4 = p * (Sp * diff (wp, t) +圣* diff (wt, t) + Ss * diff (ws, t)) + p *低频/ * diff (Q, t) = = p * (Rp ^ 2 * wp (t) Rt ^ ^ 2 + 2 * wt (t) ^ 2 + r ^ 2 * ws (t) ^ 2 - Rs ^ 2 * wp (t) * ws (t) - Rp ^ 2 * wt (t) * wp (t) - Rt ^ 2 * ws (t) * wt (t)) + wp (t) * Q (t) / * p * (Rp * tan(美联社)——Rs * tan ()) + wt (t) * Q (t) / * p * (Rt * tan(在)- Rp * tan(美联社))+ ws (t) * Q (t) / * p * (Rs * tan () - Rt * tan ()) - PL * p;
Eqns = [eqn1,eqn2,eqn3,eqn4];
vars = [wt(t) ws(t) wp(t) Q(t)];
S = dsolve (eqn1 eqn2、eqn3 eqn4, wp (0) = = 0, wt (0) = = 330, ws(0) = = 300,问(0)= = 0.05);
odesfcn = matlabFunction(eqns,“var”, {t wt ws, wp Q});
T_interval = [0,10];
Init_cond = [0,0,0,0]';
[t,y] = ode45(odesfcn, t_interval, init_cond);
情节(t y (: 1),“b”、t、y (:, 2),“r”、t、y (: 3)‘g’“线宽”2);
S = [“wp (t)”“wt (t)”“ws (t)”];
传奇(年代,“位置”“最佳”
网格

接受的答案

詹姆斯Tursa
詹姆斯Tursa 2022年10月19日
编辑:詹姆斯Tursa 2022年10月19日
你的方程在导数上是线性的,所以你可以把方程写成矩阵方程,然后写一个导数函数,在每一步都使用反斜杠来求各个导数。例如,让
Y = [
因此
一个* = b
在哪里 = 4x1向量[
B = 4x1右边向量(的非线性函数 ,和常数)
A =的4x4个系数 方程中的元素
函数Ydot = my导(t,y,...其他常数……)
A =(由这里的4x4矩阵元素构成)
B =(右边是4x1个向量元素)
ydot = A\b;
结束
然后在调用积分器时使用这个函数(例如,ode45):
数值(@ (t、y) myderivative (t y...其他常量…),tspan,initial_conditions)
3评论
帕高Andrés巴罗斯Díaz
帕高Andrés巴罗斯Díaz 2022年10月22日
谢谢,很好。我固定了eqns 1,2和3,并使用equationsToMatrix创建A和B。

登录评论。

更多答案(1)

保罗
保罗 2022年10月19日
嗨Pacao,
缺少的步骤是调用 odeToVectorField 在调用 matlabFunction .检查第一个文档页,然后如果它仍然不适合你,请随时回复。

类别

了解更多符号数学工具箱帮助中心而且文件交换

标签

2022世界杯八强谁会赢?


释放

R2022a

世界杯预选赛小组名单社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!世界杯预选赛小组名单

开始狩猎!

Baidu
map