方程想必大家都不陌生,在初等数学里我们学习了各式各样的方程,比如线性方程、二次方程、指数方程等等,其根本是依据方程所表达的已知数和未知数的关系得到未知数的结果。

在实际生活中,我们经常会遇到一些无法简单用普通方程描述的问题,比如:车辆运行轨迹、物体自由下落随时间变化规律、火箭发射随时间飞行轨迹、卫星在太空运行周期轨迹等,这些问题与物质运动、时间推移、变化规律相关,都可以用函数关系来表示。在数学上,求解这类函数就需要用到微积分的知识,因此凡是表示未知函数的导数及其自变量关系的方程,被统称为微分方程。微分方程的范畴很多,本文主要介绍常微分方程。

在数学分析中,常微分方程(ordinary differential equation,简称ODE)是未知函数只含有一个自变量的微分方程。常微分方程的形成与发展和天文学、物理学、动力学等其他科学技术紧密相关,数学中其他分支的发展比如复变函数、拓扑学等都对常微分方程发展有着深刻的影响。计算机技术的飞速发展也为常微分方程的研究与应用带来了强有力的工具,本文将基于新一代科学计算环境MWORKS.Syslab对常微分方程系统进行描述与求解。

洛伦兹方程(Lorenz equation)是描述空气流体运动的一个简化非线性微分方程组,是混沌理论非常典型的案例。

其中,σ为普兰特尔数(Prandtl number),β为瑞利数(Rayleigh number)。所有的ρ、σ、β 0 ,通常σ=10,β=8/3,ρ不定,系统在ρ=28时表现出混沌特性,但ρ为其他值时会显示出具扭结的周期轨道。

首先,创建方程形式的函数lorenz,其函数的形参为(du,u,p,t)。其中du表示导数项,u表示自变量,p表示常量,t表示时间,所表达的数学意义为:

其次,定义初值u0、系统常量p、以及所对应的时间跨度tspan。初值u0表明系统的初始条件,求解器会根据初始条件以及导数项与自变量的方程关系进行逐步求解;系统常量p则是在定义方程函数时所赋值的已经明确的常量;时间跨度tspan设置了求解的时间范围。

在得到初值u0、系统常量p、时间跨度tspan,以及方程形式的函数lorenz后,利用ODEProblem函数构造一个常微分问题prob。

对构造好的ODE问题进行求解。在求解该问题前需要选取合适的求解算法、设置合理的输出控制。

MWORKS.Syslab集成了海量算法,根据不同问题Syslab也会给出一些算法推荐。

在得到ODE问题变量后,使用solve函数对问题进行求解。可以较为”傻瓜式”地直接求解,其他选项全都使用默认参数;也可以在第二形参处设置想要的算法,还有一些关键字参数对求解精度、迭代步长、输出点进行控制,对应如下表:

在对求解器进行相关设置并对ODE问题进行求解后,得到解决方案sol。sol作为结构体保存,包含以下内容:

在二维和三维图像中可以非常清晰地看到洛伦兹吸引子。洛伦兹方程的非线性混沌非常著名,其初值对结果影响非常大,这个被称为蝴蝶效应(指在一个动力系统中,初始条件下微小的变化能带动整个系统的长期的巨大的连锁反应)。读者朋友们可以尝试自己修改一下初值,看看蝴蝶效应是怎样的。

常微分方程作为微分方程的重要分支之一,在很多学科领域有着重要的应用,如自动控制、各种电子学装置的设计、弹道的计算、飞机和导弹飞行的稳定性的研究、化学反应过程稳定性的研究等。这些问题都可以转化为求常微分方程的解,或转化为研究解的性质的问题。

新一代科学计算环境MWORKS.Syslab包含基础数学、符号数学、曲线拟合、图形、信号处理等工具箱,除了能够进行微分方程的描述与求解外还可以高效解决科学与工程中遇到的矩阵运算、数值求解、数据分析、信号处理、控制算法设计优化、机器学习与并行计算等问题,实现基于模型对现代信息物理融合系统(CPS)开发的全流程支撑。

发表回复

您的电子邮箱地址不会被公开。