zoukankan      html  css  js  c++  java
  • 数值分析+函数ode45学习

      对于常微分方程,其解的主要形式有两类:解析解、数值解。

      解析解,由字面意思可知是一种微分方程的解析式解。得到了微分方程的解析式解,再根据其解析式即可得出解在定义域内的任何点对应的解。

      然而对于微分方程,就本人目前所学过的高数方面的,只有少数既定类型的微分方程有特定形式的解析解。所以对于绝大多数微分方程,在一定条件下得出其解析解是十分困难的。对于这类微分方程,前人想出一种得到其有限数值点的解,在计算机的计算中,在条件充足的前提下得到了能忽略其误差的解——数值解。数值解在工程实践中得到了充分的应用,虽然没有解析解的精确度但是其更容易得到,常见微分方程一般来说都能快速得到其数值解。

      接下来简单记录一下对数值解的理解。

      数值分析之欧拉法:

      用老师讲解的一个例子。

      

    原方程为Y'=-Y^2,  即f(t,y)=-Y^2;

    lim(n-->n+1) Y'=(Yn+1-Yn)/(Tn+1-Tn)       。。。导数定义式  (将函数y分为n点,n趋于无穷)

    递推公式为Yn+1=Yn+hf(tn,yn)=Yn(1-0.1yn)

    解析解 Y=1/(1+T)

    数值解即上述递推公式。当然这是最基础的解法,其解的精确度较低,精度好一点的如改进的欧拉法。。。

      接下来说一下对matlab求解常微分方程封装的函数ode45的理解。

      ode45表示四阶-五阶Runge-Kutta算法,它用4阶方法提供候选解,5阶方法控制误差,是一种自适应步长(变步长)的常微分方程数值解法,其整体截断误差为(Δx)^5。

      用法:sol =(t,y)= ode45(odefun,tspan,y0)                          odefun为封装的待求解函数

                                 tspan表示求解的定义域

                                 y0表示微分方程初值

                                 (t,y)表示求得的数值解向量,t是向量时间点,定义点;y表示向量的值。

      

      x=deval(sol,ti):计算由0de45得到的解在ti的值。

      

      Matlab中求微分方程数值解的函数有七个:ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb 。其中ode23为带有延时的微分方程的求解函数。

  • 相关阅读:
    java定时读取文件
    Java面试:投行的15个多线程和并发面试题(转)
    读取一个文件,给定一个字符串,判断这个字符串在文件中出现的次数
    随机产生10个数,并每个数给定一个序号,然后将这10个数按照从小到大的顺序输出来,并带上序号输出
    找出给定字符串中出现最多的字符和次数
    公司开发部门GIT与SVN 之争
    浅谈Hibernate中的三种数据状态
    MyBatis框架的XML数据访问Dao层接口的组合使用
    浅谈WebLogic和Tomcat
    为什么我们不要 .NET 程序员
  • 原文地址:https://www.cnblogs.com/xiaotn/p/14719511.html
Copyright © 2011-2022 走看看