import sympy as smp from matplotlib import pyplot as plt import numpy as nmp from scipy.integrate import solve_ivp p = 1.225 # air density m = 0.003 # mass of the plane a = (9.3/180)*nmp.pi # angle of attack ar = 0.86 # aspect ratio s = 0.017 # wing area g = 9.807 # acceleration of free fall cla = (nmp.pi*ar)/1+nmp.sqrt(1+(ar/2)**2) # lift slope derivative cl = cla*a # lift coefficient e = 0.9 # oswald efficiency factor ε = 1/(nmp.pi*e*ar) # induced darg factor cd = 0.02 + ε*(cl**2) def airplane(t,f): v, γ, h, r = f return [-cd(p*v**2)*s/(2*m)-g*nmp.sin(γ), ((cl*(p*v**2/2))-g*nmp.cos(γ))/v, v*nmp.sin(γ), v*nmp.cos(γ)] solution = solve_ivp(airplane, (0,1000),[3.7,((-11/180)*nmp.pi),2.0,0.0]) print(solution)
时间: 2023-12-29 22:05:27 浏览: 106
用Python做科学计算(有目录)
这段代码是一个飞机在空气中运动的模拟。它使用了Sympy、Matplotlib、NumPy和SciPy库。
首先,定义了一些变量和常量,如空气密度(p)、飞机质量(m)、攻角(a)、展弦比(ar)、翼面积(s)、自由落体加速度(g)等。
然后,定义了一个名为"airplane"的函数,它描述了飞机在空中的运动方程。这个方程包括了飞机的速度(v)、爬升角(γ)、高度(h)和航向(r)随时间变化的关系。
最后,使用solve_ivp函数对"airplane"函数进行求解。该函数接受初始条件(速度、爬升角、高度和航向)和时间范围(0到1000秒),并返回飞机在这段时间内的运动轨迹。
最后一行代码打印出了求解的结果。
需要注意的是,代码中涉及到的数学模型和参数是根据特定的假设和公式进行计算的,具体的物理背景和准确性需要根据实际情况进行评估和调整。
阅读全文