【问题标题】:Python coding: create a new "class" to calculate motion of a projectilePython 编码:创建一个新的“类”来计算弹丸的运动
【发布时间】:2020-12-05 07:43:34
【问题描述】:

我正在做一个项目,在 python 中创建一个新的“类”来做一些运动学计算。

但是,鉴于常见的物理运动学方程,我无法看到如何在 python 中构建公式。

这是总体目标:

"构造一个名为 projectile 的类。该类变量应包括射弹的发射高度、降落的高度、初速度以及初速度相对于水平面的角度。该类方法应包括计算弹丸的射程、最大高度和最终速度。"

我已经定义了新类和变量,但不确定如何构建函数。任何帮助都会很有帮助。到目前为止的代码如下:

import math
import numpy as np
import matplotlib.pyplot as plt
import pylab
import os

# acceleration due to gravity = 9.80665 m/s**2

class Projectile(object):
# h0 is vertical starting position which starts at y = 0
    def __init__(self,h0,v0,theta):
        self.h0 = h0 #height
        self.v0 = v0 #speed
        self.theta = theta # angle above horizontal
        self.v0x = v0*math.cos(theta) #x component of velocity
        self.v0y = v0*math.sin(theta) #y component of velocity

【问题讨论】:

  • 现在您知道,在没有空气摩擦的情况下,运动可以整合到 x(t)=v0x*ty(t)=h0+v0y*t-0.5*g*t^2。从这里开始,您必须求解一些二次方程并将其结果代回。如果您添加空气阻力,最直观的方法是使用带有事件的 ODE 求解器,这是理解上相当大的一步,即使它只有几行额外的代码。

标签: python physics projectile kinematics


【解决方案1】:
  • 三个与初始和最终速度、距离、加速度和时间相关的运动方程。
  • 每个变量都可以单独用于所有变量的水平和垂直分量。
  • 对于最大高度,请使用垂直组件。最终垂直速度为零,加速度由重力引起。
  • 首先使用距离公式计算飞行时间,其中包含变量的垂直分量(距离是初始高度和最终高度的差)
  • 比使用时间来计算最终值。您可能需要计算水平和垂直值,然后将它们相加。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    • 1970-01-01
    相关资源
    最近更新 更多