Python 推导后绘制函数

Python plotting a function after derivation

你能帮个忙吗?我们正在尝试在推导后绘制函数,但收到一条错误消息。

ValueError: x and y must have same first dimension, but have shapes (20,) and (1,)

我们认为问题在于该函数未使用第二个函数中的值进行计算,因此无法查明问题所在。

import numpy as np
import matplotlib.pyplot as plt
import sympy as sp
#from sympy import *

x = sp.symbols('x')
y_funktion = x**5-5*x**4-30*x**3+110*x**2+29*x-105

def funktionenErstellen(y_funktion):    
    y_funktion_ableitung = sp.diff(y_funktion, x)
    y_funktion_stammfunktion = sp.integrate(y_funktion, x)
    print('Funktion:', y_funktion)
    print('Ableitung:', y_funktion_ableitung)
    return [y_funktion_ableitung, y_funktion_stammfunktion]
    

def plotFunktionen(funktion):
    x = np.arange(-10, 10, 1.0)  
    plt.xlim(-7.5, 9)
    plt.ylim(-900,900)
    plt.grid()
    # Plot the points using matplotlib
    plt.xlabel('X-Achse')
    plt.ylabel('Y-Achse')
    print('funktion:',  funktion)
    plt.plot(x, funktion, color = "r", label = 'Funktion')
    #plt.plot(x, y_funktion_ableitung, color = "g", label = 'Ableitung')
    #plt.plot(x, y_funktion_stammfunktion, color = "b", label = 'Stammfunktion')
    plt.legend()

[y_funktion_ableitung, y_funktion_stammfunktion] = funktionenErstellen(y_funktion)

plotFunktionen(y_funktion)
plotFunktionen(y_funktion_ableitung)
plotFunktionen(y_funktion_stammfunktion)

感谢@Guimoute 和@JohanC 的回答 我们成功拿到了 运行.

import matplotlib.pyplot as plt
import sympy as sp
x = sp.symbols('x')
y_funktion = x**5-5*x**4-30*x**3+110*x**2+29*x-105
def funktionenErstellen(y_funktion):    
    y_funktion_ableitung = sp.diff(y_funktion, x)
    y_funktion_stammfunktion = sp.integrate(y_funktion, x)
    print('Funktion:\t\t', y_funktion)
    print('Ableitung:\t\t', y_funktion_ableitung)
    print('Stammfunktion:\t', y_funktion_stammfunktion)
    return [y_funktion_ableitung, y_funktion_stammfunktion]
    
def plotFunktionen(funktion, typ, color):
    
    x_wert = np.arange(-10, 10, 0.2)
    f = sp.lambdify(x, funktion)
    f = f(x_wert)
    plt.xlim(-7.5, 9)
    plt.ylim(-900,900)
    plt.grid()
    
    # Plot the points using matplotlib
    plt.xlabel('X-Achse')
    plt.ylabel('Y-Achse')
    plt.plot(x_wert, f, color = color, label = typ)

[y_funktion_ableitung, y_funktion_stammfunktion] = funktionenErstellen(y_funktion)
plotFunktionen(y_funktion, 'Funktion', 'r')
plotFunktionen(y_funktion_ableitung, 'Ableitung', 'g')
plotFunktionen(y_funktion_stammfunktion, 'Stammfunktion', 'b')
plt.legend()