python - 产生奇怪结果的抛物线方程

标签 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 来说相当陌生),因此我们将不胜感激。

最佳答案

np.arange 构建一个 dtype('int32') 数组,因此放入该数组的任何数字都将被截断。相反,指定数组应包含 float :

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

关于python - 产生奇怪结果的抛物线方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25424509/

相关文章:

python - 如何使用 ICC 配置文件对一组任意像素值(而不是图像数据结构)执行颜色变换?

python - 为什么在 Visual Studio Code 上运行 Python 3 脚本时会出现 SyntaxError?

python - 规范化 2D Numpy 数组 : Zero Mean Unit Variance

python - 在索引看起来像数字的内容时,Python 中的 "three dots"是什么意思?

python - 将多维集群绘制成二维图 python

python - 如何以最小的处理器消耗杀死进程

python - 执行 ImageEnhance.Sharpness() 时出现“无法过滤调色板图像”错误

python - 用 bool 数组掩盖系列

python - 用循环中计算的值注释每条曲线

Python、Matplotlib : Suptitle with arbitrary number of vertical figures