在我的 python 脚本中,为什么 rho 中的字母“r”存在语法错误

4 python

我正在尝试编写一个非常简单的脚本,但我几乎没有编码经验,我在我的计算机上下载了 numpy 和 matplotlib 以及所有这些内容,并在一些帮助下编写了这个脚本,但不知道为什么有这么多错误。我已经通过该网站的问题修复了其中的一些错误。

我尝试过缩短它,但不知道为什么它不起作用。它的第一条 rho 行一直给我语法错误

print("airplane");

import numpy as np

import matplotlib.pyplot as plt

g = 32.2  

rho = 0.00231  

S = 279  

W = 7000  

c0 = 928

c1 = 0.1

c2 = -0.002

d0 = 0.2

d1 = 0.0015

V0 = 0  

x0 = 0  

alpha0 = np.radians(-7)  

alpha_gr = np.radians(4)  

efficiency = 0.9  

lift_slope = np.radians(0.1167)  

max_lift_coef = 2.1  

dt = 0.05  


def thrust(V):

    return c0 + c1*V + c2*V**2



def drag_fuselage_tail(V):

    return d0*V + d1*V**2


def lift(V, alpha):

    return 0.5  rho  V**2  S  (lift_slope * alpha + max_lift_coef)


def drag(V, alpha):

    return 0.5  rho  V**2  S  (0.009 + (lift_coef(V, alpha)**2) / (np.pi  efficiency  S))


def acceleration(V, alpha):

    return (thrust(V) - drag(V, alpha) - drag_fuselage_tail(V)) / W - g * np.sin(alpha)


def rk4_step(V, x, alpha):

    k1v = dt * acceleration(V, alpha)

    k1x = dt * V

    k2v = dt  acceleration(V + (0.5)*k1v, alpha)

    k2x = dt  (V + (0.5)*k1v)

    k3v = dt  acceleration(V + (0.5)*k2v, alpha)

    k3x = dt  (V + (0.5)*k2v)

    k4v = dt * acceleration(V + k3v, alpha)

    k4x = dt * (V + k3v)

    

    V += (k1v + 2*k2v + 2*k3v + k4v) / 6

    x += (k1x + 2*k2x + 2*k3x + k4x) / 6

    

    return V, x


def takeoff():

    V = V0

    x = x0

    alpha = alpha0

    iterations = 0

    drag_values = []

    thrust_values = []

    while x >= 0:

        V, x = rk4_step(V, x, alpha)

        iterations += 1

        drag_values.append(drag(V, alpha))

        thrust_values.append(thrust(V))

        if alpha == alpha0:

            alpha = alpha_gr  

    return x, V, iterations, drag_values, thrust_values

SLO_distance, SLO_velocity, iterations, drag_values, thrust_values = takeoff()

time_to_liftoff = iterations * dt


print("Lift-off distance:", SLO_distance, "ft")

print("Lift-off velocity:", SLO_velocity, "ft/s")

print("Time to lift-off:", time_to_liftoff, "s")

print("RK4 iterations to lift-off:", iterations)


position = np.arange(0, SLO_distance, dt)

plt.plot(position, drag_values, label='Drag')

plt.plot(position, thrust_values, label='Thrust')

plt.xlabel('Position (ft)')

plt.ylabel('Force (lbs)')

plt.legend()

plt.title('Drag and Thrust vs. Position')

plt.grid(True)

plt.show()
Run Code Online (Sandbox Code Playgroud)

Joh*_*don 7

return 0.5  rho  V**2  S  (lift_slope * alpha + max_lift_coef)
Run Code Online (Sandbox Code Playgroud)

这就是问题。

在某些数学符号中,您可以将两个项并排书写,这意味着乘法,就像隐含的a b意思是“a 乘以 b”。

但 Python 并不是这样工作的。您需要明确地输入乘法符号:

return 0.5 * rho * V**2 * S * (lift_slope * alpha + max_lift_coef)
Run Code Online (Sandbox Code Playgroud)