我是靠谱客的博主 犹豫大炮,最近开发中收集的这篇文章主要介绍学习笔记10 微分方程的matlab符号求解方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

开始学微分方程,用汤家凤的基础课配他的辅导讲义。然后再来看代码。我要国二!!!!
代码全打一遍是防止思维跳跃,切忌形式主义
尽量做到,学一次,用一年。
求符号解

  1. 定义符号变量
  2. 调用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+(x2y)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,yleft( 1 right) =8,y'left( 1 right) =7,y''left( 2 right) =4 yy=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 微分方程的matlab符号求解方法的全部内容,希望文章能够帮你解决学习笔记10 微分方程的matlab符号求解方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部