我想找到用户输入的某个函数的导数
x = np.linspace(-5,5)
print('Options are:')
print('1. y = x')
print('2. y = ax^2')
print('3. y = k(x-a)(x-b)')
print('4. y = k(x-a)(x-b)(x-c)')
n = int(input('Your option is: '))
if n == 1:
func = x
plt.plot(x,func)
n = input('Do you wanna find its derivative? (Y/N)')
if n == 'Y':
print('Derivative is 1')
else:
print('Done')
elif n == 2:
a = int(input('Enter a value for a: '))
func = a*x**2
plt.plot(x,func)
n = input('Do you wanna find its derivative? (Y/N)')
if n == 'Y':
x = sp.Symbol('x')
print(sp.diff(func,x))
else:
print('Done')
当n==2时, 我需要用户为ax^2函数输入“a”值。 然后,代码将绘制图形ax^2。 然后继续询问用户是否需要函数的导数。 在这一部分中,我感到困惑,因为我在上面使用的语法中,它没有显示派生词,而是显示了一个0列表,如下所示
1. y = x
2. y = ax^2
3. y = k(x-a)(x-b)
4. y = k(x-a)(x-b)(x-c)
Your option is: 2
Enter a value for a: 3
Do you wanna find its derivative? (Y/N)Y
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
如何解决此问题
问题发生在设置
func = a*x**2
的行上。如您所见,x
是一个向量(还不是符号)。这意味着func
也是一个向量。当func
被传递给sp.diff
时,它不再是一个函数,而是一个导致该问题的向量因此,您需要将
sp.diff
行更改为这样:旁注
使用
x
作为变量和符号是一个非常糟糕的主意。它很乱,以后会导致很多问题在定义函数
func
之前,需要定义符号x
。对于打印,可以使用Symphy的打印模块。下面是一个可能的解决方案相关问题 更多 >
编程相关推荐