【问题标题】:How to plot a summation with two variables in Python 3如何在 Python 3 中绘制两个变量的总和
【发布时间】:2017-10-04 20:38:01
【问题描述】:

我想创建一个函数并使用 pyplot 很好地绘制它。
它本身的功能是这样的:

我的任务是为 [-3pi, 3pi] 范围内的 x 绘制 k = [2, 4, 6, 8, 10] 的 C。 我还想在同一个窗口中绘制 cos(x)。

还有没有办法让这个动画化?

到目前为止我的代码是:

import numpy as np
import matplotlib.pyplot as plt
import math 
n=0;
def C_series(n):
    return (((-1)**n)*x**(2*n)) / math.factorial(2*n)

C_func = np.vectorize(C_series)
x = np.arange(-3*math.pi, 3*math.pi, 5.0)
k = np.arange(2, 10, 2)
T = C_func(n)
plt.plot(T, k)

谁能告诉我我做错了什么? 我不是故意让这成为一个教程,我得到了一些严厉的评论,但我希望现在我正在努力抓住苹果。

【问题讨论】:

  • SO 不理解 tex 标记。请改写你的表达方式。
  • 你知道这不是一个教程请求页面,对吧?见How to Ask。一次问一个具体问题,清楚地说明问题。在这里,您提出了一个任务,例如“抓住苹果”。只要我们不知道你抢苹果有什么问题,这个问题看起来很像“我懒得自己抢苹果,请把它放在嘴里。”,这显然是题外话.相反,如果您分享您已经尝试过的方法,我们可以找出问题所在并为您提供帮助。
  • 我已经编辑了我的问题,请看一下。
  • 您能描述一下您预期会发生什么,以及会发生什么吗?
  • 您的C_series 应该涉及sum,不是吗? C_func(n) 看起来也很可疑——你为什么要将数字 0(这就是 n 是)提供给 C_func()

标签: python python-3.x function matplotlib


【解决方案1】:

x 和 k 必须是函数的输入,为了简化任务,我们使用 meshgrid 创建网格,然后在一个方向上相加,我们将获得每个 k 的曲线轮廓。

import numpy as np
import matplotlib.pyplot as plt
import math 
from scipy import misc


def C_series(x, k):
    n = np.arange(k)
    X, N = np.meshgrid(x, n)
    val =(((-1)**N)*X**(2*N)) / misc.factorial(2*N)
    return np.sum(val, axis=0)

x0 = -3*math.pi
xf= 3*math.pi

x = np.linspace(x0, xf, 100)

plt.plot(x, np.cos(x))    
for k in [2, 4, 6, 8, 10]:
    plt.plot(x, C_series(x, k), label=str(k))

plt.show()

截图:

对于x0 = -1xf= 1

【讨论】:

  • +1,尽管该图不是很有帮助。这些是泰勒多项式,近似于cos(x) 接近x=0。您甚至看不到良好近似的区域,因为您主要绘制近似分解的位置。另一方面,这是 OP 的作业问题,因此他们可以根据需要调整情节范围。
  • 问题的 OP 是:我的任务是为 [-3pi, 3pi] 范围内的 x 绘制 k = [2, 4, 6, 8, 10] 的 C。
  • 是的——但问题是绘图的 y 范围。绘图功能选择的范围不好。图表的相关部分是介于 y = -1 和 y = 1 之间的部分(因此从例如 y = -2 到 y = 1 绘制可能是最大的信息,因为它将指示多项式从cos(x) 开始发散的位置.
  • 当然,从数学分析的角度来看是正确的,但作为程序员我只考虑作者的要求,用代码分析其属性的人,会有他们的标准。 :P
猜你喜欢
  • 2018-11-30
  • 1970-01-01
  • 1970-01-01
  • 2019-01-26
  • 2020-09-16
  • 1970-01-01
  • 2023-02-18
  • 2022-11-02
  • 2019-05-03
相关资源
最近更新 更多