抛物线方程产生奇数结果

时间:2014-08-21 10:53:36

标签: python numpy matplotlib

我已经在论坛上寻求帮助,但是说实话我不知道要搜索什么,我没有错误,所以这里就是这样。我想绘制抛物线。我已经在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来说相当新)所以任何帮助都会受到赞赏。

1 个答案:

答案 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])