在 python 中一起绘制指数函数和多项式函数

plotting exponential and polynomial function together in python

我想在 python 中的同一轴上绘制以下 y 和 y' 函数。 x 轴值应以 0.1 为间隔从 -10 到 10:

我尝试了什么: 我尝试只绘制 y'(标记为 y_p),但出现错误。

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(-10,10,0.1)

A=1
B=0.1
C=0.1
y_p = (A*np.exp((-x**2)/2))(1+(B*((2*(np.sqrt(2))*(x**3))-(3*(np.sqrt(2))*x))/((np.sqrt(6)))))
plt.plot(x,y_p)

但这会产生错误:

TypeError                                 Traceback (most recent call last)
<ipython-input-71-c184f15d17c7> in <module>
      7 B=0.1
      8 C=0.1
----> 9 y_p = (A*np.exp((-x**2)/2))(1+(B*((2*(np.sqrt(2))*(x**3))-(3*(np.sqrt(2))*x))/((np.sqrt(6)))))
     10 plt.plot(x,y_p)

TypeError: 'numpy.ndarray' object is not callable

​

我相信有更好的方法来做到这一点。我是 python 的新手,非常感谢您的帮助!

您不能在 python.

中隐式乘法(不使用 *

修改后的代码如下:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-10, 10, 0.1)

A = 1
B = 0.1
C = 0.1
y_p = (A * np.exp((-x ** 2) / 2)) * (1 + (B * ((2 * (np.sqrt(2)) * (x ** 3)) - (3 * (np.sqrt(2)) * x)) / (np.sqrt(6))))
plt.plot(x, y_p)
plt.show()

适当的方法是一步一个脚印:

您可以先将 y1 定义为 lambda:

y1 = lambda x: (2*np.sqrt(2)*x**3 - 3*np.sqrt(2)*x)/np.sqrt(6)

然后执行你的公式:

y_p = A * np.exp(-x**2/2)*(1 + B*y1(x))

这样您输入错误的几率就会降低。