我已经在论坛上寻求帮助,但是说实话我不知道要搜索什么,我没有错误,所以这里就是这样。我想绘制抛物线。我已经在excel中绘制了它,所以我知道它应该是什么样子。然而,当我使用Matplotlib在Python中绘制它时,而不是我期望获得的平滑曲线,我得到了锯齿状的边缘。我已放大并解决了x的特定值,发现python解决方案不正确。我复制了下面的代码,并将包含一个计算示例。
thacker_curved_final__author__="ahe"
__date__ ="$20-Aug-2014$"
import numpy as np
import matplotlib.pyplot as plt
import math
import sys
from math import sqrt
import decimal
n=5
t=0
l=100000.0
h0=100
g=9.81
l2=l**2.0
nx, ny = (1001,1001)
x5 = np.linspace(-100000,100000,nx)
y5 = np.linspace(-100000,100000,ny)
xv,yv = np.meshgrid(x5,y5)
x = np.arange(-100000,100200,200)
y = np.arange(-100000,100200,200)
t59=np.arange (1,1002002,1)
# Building the parabolic basin (Bottom)
zf=np.arange(len(x))
for i in range (len(x)):
zf[i]=((1.0*(10.0**-8.0))*(x[i]**2.0))-100
plt.figure(1)
plt.plot(x,zf)
plt.show()
实施例: 取x为200.将其代入等式:
Zf = (1*10^-8(x^2))-100
我得到Zf = -99.9996
,但是在图中Zf等于-99.0
。
正如我所说,我不知道这是什么原因(对Python来说相当新)所以任何帮助都会受到赞赏。
答案 0 :(得分:1)
np.arange
构建一个dtype('int32')
数组,因此放入该数组的任何数字都将被截断。而是指定数组应该包含浮点数:
zf = np.arange(len(x), dtype=np.float_)
例如:
>>> a = np.arange(2)
>>> a[1] = 0.8
>>> a
array([0, 0])
>>> a = np.arange(2, dtype=np.float_)
>>> a[1] = 0.8
>>> a
array([ 0. , 0.8])