Matlab求微分方程的数值解

数学建模 专栏收录该内容
7 篇文章 0 订阅

注:首先计算微分方程的解析解,如果发现没有解析解,再用数值解

一、Matlab中求微分方程的数值解函数

[x,y]=solver('f',ts,x0,options)

  1)x代表自变量

  2)y代表函数值

  3)solver代表求解函数,常用的为ode45->函数图像变化较为平稳,ode15s->函数图像存在突变(一个运行时间长时,换另一个)

  4)ts=[t0,t1],代表自变量函数的初值和终值,也可以指定以一个向量

  5)x0表示函数的初始值

  6)options(可选):options=odeset('reltol','rt','abstol',at),rt,at分别为设定的相对误差,默认为10e-3,10e-6

  7)f表示由待解微分方程编写的m函数文件名

 

二、一阶微分方程的数值解

   1、求解步骤:

       1)化为标准型(等号左边为微分)如下图

        

        2)带入函数求解

   2、例子

        例1(求方程):

             题目:y-y{^'}=2x,初始值为y(0)=3,x范围为[0,2]

             解:

              1)化为标准型:y{^'}=y-2x

              2)matlab求解如下:

                  2.1)新建一个m文件,用来编辑f函数

function dy = f(x,y) % dy是标准化后左边的式子,x是式子右边的自变量,y是因变量
dy = y - 2*x;
end

                 2.2)新建一个m文件用来计算结果 

[x y] = ode45('f',[0,2],3); %x是自变量,y是因变量
figure(1)
plot(x,y,'*-')
axis([0 2 -inf inf])
grid on

              3)运行结果

              

     

         例2:(求方程组)

             题目:

            \left\{\begin{matrix} y{_1^'}=y{_2}y{_3}\\ y{_2^'}=-y{_1}y{_3}\\ y{_3^'}=-0.51y{_1}y{_2} \end{matrix}\right.,自变量x\in[0.4\pi],初始值y{_1}(0)=0,y{_2}(0)=y{_3}(0)=1

            解:

            1)化为标准型(题目已经为标准型)

            2)matlab代码

                2.1)新建一个m文件,用来编辑f函数

function dy = f(x,y) % dy是标准化后左边的式子,x是式子右边的自变量,y是因变量
    dy = zeros(3,1);
    dy(1) = y(2)*y(3);
    dy(2) = -y(1)*y(3);
    dy(3) = -0.51*y(1)*y(2);
end

              2.2) 新建一个m文件用来计算结果 

[x, y] = ode45('f', [0 4*pi], [0 1 1]);  % 这里的y是一个有3列的矩阵哦!x是自变量,y是因变量
plot(x, y(:,1), 'o', x, y(:,2), '*', x, y(:,3), '+') 
legend('y1','y2','y3')  % 加上标注
axis([0, 4*pi, -inf, +inf])  % 设置横坐标范围为0-4pi,纵坐标范围不需要设置,写成-inf到+inf

          3)结果

            

三、高阶微分方程的数值解

      1、步骤

           1)标准化

            高阶方程转化为一阶方程组合

           2)按一阶求解

     2、例子

     

          1)标准化

          

           

          2)matlab求解

          

         

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

逮仔

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值