如何使用Symphy在Python中查找导数

2024-10-05 12:21:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我想找到用户输入的某个函数的导数

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]

如何解决此问题


Tags: 函数用户youinputifisfindax
2条回答

问题发生在设置func = a*x**2的行上。如您所见,x是一个向量(还不是符号)。这意味着func也是一个向量。当func被传递给sp.diff时,它不再是一个函数,而是一个导致该问题的向量

因此,您需要将sp.diff行更改为这样:

sp.diff(a*x**2, x)
# 6*x (when a=3)

旁注

使用x作为变量和符号是一个非常糟糕的主意。它很乱,以后会导致很多问题

在定义函数func之前,需要定义符号x。对于打印,可以使用Symphy的打印模块。下面是一个可能的解决方案

import sympy as sp
import numpy as np
from sympy.plotting import plot

x = sp.Symbol('x')

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
    plot(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
    plot(func)
    n = input('Do you wanna find its derivative? (Y/N)')
    if n == 'Y':
        print(sp.diff(func,x))
    else:
        print('Done')

相关问题 更多 >

    热门问题