学习笔记10 微分方程的matlab符号求解方法
作者:互联网
开始学微分方程,用汤家凤的基础课配他的辅导讲义。然后再来看代码。我要国二!!!!
代码全打一遍是防止思维跳跃,切忌形式主义
尽量做到,学一次,用一年。
求符号解
- 定义符号变量
- 调用dsolve函数
[y1,...,yN]=dsolve(eqns,conds,Name,Value)
eqns为符号微分方程或符号微分方程组;conds为初值条件或边界条件;Name和Value为可选的成对参数。
求
x
2
+
y
+
(
x
−
2
y
)
y
′
=
0
x^2+y+\left( x-2y \right) y'=0
x2+y+(x−2y)y′=0
clc,clear
syms y(x)%定义符号变量
dsolve(x^2+y+(x-2*y)*diff(y)==0)
结果
ans =
x/2 + ((4*x^3)/3 + x^2 + C1)^(1/2)/2
x/2 - ((4*x^3)/3 + x^2 + C1)^(1/2)/2
这里的dsolve只有一个参数
下面升级
y
′
′
′
−
y
′
′
=
x
,
y
(
1
)
=
8
,
y
′
(
1
)
=
7
,
y
′
′
(
2
)
=
4
y^{'''}-y''=x,y\left( 1 \right) =8,y'\left( 1 \right) =7,y''\left( 2 \right) =4
y′′′−y′′=x,y(1)=8,y′(1)=7,y′′(2)=4
clc,clear
syms y(x)%定义符号变量
dy=diff(y);d2y=diff(y,2);
y=dsolve(diff(y,3)-diff(y,2)==x,y(1)==8,dy(1)==7,d2y(2)==4)%定义一阶导数和二阶导数,用于初值和边值条件的赋值
y=simplify(y)%把计算结果化简
结果
y =
x*((exp(-1)*(19*exp(1) - 14))/2 - 1) + 7*exp(-2)*exp(x) - x^2/2 - x^3/6 + (exp(-1)*(19*exp(1) - 14))/2 - (exp(-1)*(25*exp(1) - 21))/3 - 1
y =
(17*x)/2 + 7*exp(x - 2) - 7*x*exp(-1) - x^2/2 - x^3/6 + 1/6
注意:我用的是新版的matlab2018b,化简统一用simplify()
遇到问题照着套就好。
进阶,常微分方程组
{
f
′
′
+
3
g
=
sin
x
g
′
+
f
′
=
cos
x
\begin{cases} f^{''}+3g=\sin x\\ g'+f'=\cos x\\ \end{cases}
{f′′+3g=sinxg′+f′=cosx
求通解和在初编值条件为
f
′
′
(
2
)
=
0
,
f^{''}(2)=0,
f′′(2)=0,
f
′
′
(
3
)
=
3
,
g
′
′
(
5
)
=
1
f^{''}(3)=3,g^{''}(5)=1
f′′(3)=3,g′′(5)=1的解
clc,clear
syms f(x) g(x)%定义符号变量
df=diff(f)%定义f的一阶导数,用于初值或边值条件的赋值
[f1,g1]=dsolve(diff(f,2)+3*g==sin(x),diff(g)+df==cos(x))%求通解
f1=simplify(f1),g1=simplify(g1)%对符号解进行求解
[f2,g2]=dsolve(diff(f,2)+3*g==sin(x),diff(g)+df==cos(x),df(2)==0,f(3)==3,g(5)==1)
f2=simplify(f2),g=simplify(g2)%对符号解进行化简
标签:10,符号,df,dsolve,simplify,matlab,exp,微分方程,diff 来源: https://blog.csdn.net/m0_46497494/article/details/107571503