前言:
目前小伙伴们对“python如何解偏微分方程”大体比较重视,姐妹们都想要剖析一些“python如何解偏微分方程”的相关资讯。那么小编同时在网络上搜集了一些有关“python如何解偏微分方程””的相关文章,希望兄弟们能喜欢,你们一起来学习一下吧!洛伦兹吸引子(Lorenz attractor)是由MIT大学的气象学家Edward Lorenz在1963年给出的,他给出第一个混沌现象——蝴蝶效应。
洛伦兹方程是大气流体动力学模型的一个简化的常微分方程组:
该方程组来源于模拟大气对流,该模型除了在天气预报中有显著的应用之外,还可以用于研究空气污染和全球侯变化。洛伦兹借助于这个模型,将大气流体运动的强度 x 与水平和垂直方向的温度变化 y 和 z 联系了起来。参数 \sigam 称为普兰特数,r 是规范化的瑞利数,b 和几何形状相关。洛伦兹方程是非线性方程组,无法求出解析解,必须使用数值方法求解上述微分方程组。洛伦兹用数值解绘制结果图,并发现了混沌现象。
Python
代码如下
# -*- coding: utf-8 -*-from scipy.integrate import odeint import numpy as np def lorenz(w, t, p, r, b): # 给出位置矢量w,和三个参数p, r, b计算出 # dx/dt, dy/dt, dz/dt的值 x, y, z = w # 直接与lorenz的计算公式对应 return np.array([p*(y-x), x*(r-z)-y, x*y-b*z]) t = np.arange(0, 30, 0.01) # 创建时间点 # 调用ode对lorenz进行求解, 用两个不同的初始值 track1 = odeint(lorenz, (0.0, 1.00, 0.0), t, args=(10.0, 28.0, 3.0)) track2 = odeint(lorenz, (0.0, 1.01, 0.0), t, args=(10.0, 28.0, 3.0)) # 绘图from mpl_toolkits.mplot3d import Axes3Dimport matplotlib.pyplot as plt fig = plt.figure()ax = Axes3D(fig)ax.plot(track1[:,0], track1[:,1], track1[:,2])ax.plot(track2[:,0], track2[:,1], track2[:,2])plt.show()
交互式三维视图
代码
洛伦兹吸引子轨迹
from scipy.integrate import odeintimport numpy as npfrom mayavi import mlabdef lorenz(w, t, a, b, c):# 给出位置矢量w,和三个参数a, b, c计算出# dx/dt, dy/dt, dz/dt的值x, y, z = w.tolist()# 直接与lorenz的计算公式对应return np.array([a * (y - x), x * (b - z) - y, x * y - c * z])t = np.arange(0, 30, 0.01) # 创建时间点# 调用ode对lorenz进行求解, 用两个不同的初始值track1 = odeint(lorenz, (0.0, 1.00, 0.0), t, args=(10.0, 28.0, 3.0))track2 = odeint(lorenz, (0.0, 1.01, 0.0), t, args=(10.0, 28.0, 3.0))#绘制图形mlab.plot3d(track1[:, 0], track1[:, 1], track1[:, 2], color=(1, 0, 0), tube_radius=0.1)mlab.plot3d(track2[:, 0], track2[:, 1], track2[:, 2], color=(0, 0, 1), tube_radius=0.1)
微分方程数值解一般可分为:常微分方程数值解和偏微分方程数值解。自然界与工程技术中的许多现象,其数学表达式可归结为常微分方程(组)的定解问题。一些偏微分方程问题也可以转化为常微分方程问题来(近似)求解。Newton最早采用数学方法研究二体问题,其中需要求解的运动方程就是常微分方程。许多著名的数学家,如 Bernoulli(家族),Euler , Gauss、Lagrange和Laplace等,都遵循历史传统,研究重要的力学问题的数学模型,在这些问题中,许多是常微分方程的求解。作为科学史上的一段佳话,海王星的发现就是通过对常微分方程的近似计算得到的。
标签: #python如何解偏微分方程 #python流体