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为带有延时的微分方程的求解函数。

  • 相关阅读:
    基本技能训练之线程
    关于UEditor的使用配置(图片上传配置)
    PAT 乙级练习题1002. 写出这个数 (20)
    codeforces 682C Alyona and the Tree DFS
    codeforces 681D Gifts by the List dfs+构造
    codeforces 678E Another Sith Tournament 概率dp
    codeforces 680E Bear and Square Grid 巧妙暴力
    codeforces 678D Iterated Linear Function 矩阵快速幂
    codeforces 679A Bear and Prime 100 交互
    XTUOJ 1248 TC or CF 搜索
  • 原文地址:https://www.cnblogs.com/xiaotn/p/14719511.html
Copyright © 2011-2022 走看看