如何解一个非线性的微分方程组?
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
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)