嗨我想绘制一个火箭轨迹,它给我这个错误:float()参数必须是一个字符串或一个数字,而不是'函数'。我想绘制一个失去质量以获得推力的火箭的整个轨迹。当燃料结束时,它描述了抛物线轨迹。可以改变问题的数据。这些是我给出的值,其中mo是火箭的初始质量,q是气体流量(质量随时间变化的方式),g是重力加速度,xo是初始位置,t是时间。
我的代码是:
from collections import OrderedDict
a_dict = {'aa1':'n','ba2' : 'a','aa2':'a'}
sorted_by_key_then_value = sorted(a_dict.items(), key=lambda t: (t[1], t[0])))
sort_dict = OrderedDict(sorted_by_key_then_value)
数据:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:left="-5dp"
android:right="-5dp"
android:top="-5dp">
<shape>
<stroke
android:width="1.5dp"
android:color="@color/colorAccent" />
</shape>
</item>
</layer-list>
速度振动:
import math
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
职位信息:
mo = 1500
q = 2.5
u = 6000
vo = 0
g = 9.8
x0 = 0
t = np.arange(0,1001)
t
感谢您的帮助,我真的很感激。
答案 0 :(得分:0)
应该是
plt.plot(x(t), t)
而不是
plt.plot(x, t)
您上面所做的是将每个(x,y)视为数据集。这是不正确的,因为它是((0, x(0)), (1, x(1))...)
的集合,它是您的数据集。一种可读的方法是为x轴和y轴提供一个数组:
x_ = np.arange(0,100)
y_ = x(x_) # available in newer versions of numpy.
plt.plot(x_, y_)
答案 1 :(得分:0)
有四个问题。
x(t)
。math
。而是使用numpy
。**
,而不是^
。正确的代码可能如下所示:
import numpy as np
import matplotlib.pyplot as plt
mo = 1500
q = 2.5
u = 6000
vo = 0
g = 9.8
x0 = 0
t = np.arange(0,int(1500/2.5))
def v(t):
return vo + u*(np.log(mo/(mo-q*t))-g*t)
def x(t):
return x0 + vo*t - 0.5*g*t**2 + u*t*np.log(mo) + \
(u/q)*((mo - q*t)*np.log(mo - q*t) + q*t - mo*np.log(mo))
plt.plot(x(t),t)
plt.grid()
plt.show()
制造