Python 为什么我的函数不取导数并代入?

Python 为什么我的函数不取导数并代入?,python,Python,我正试图写一个代码,它接受一个函数,并使用泰勒级数来生成泰勒多项式。然而,当我尝试取函数的导数并替换我的中心('c')时,它给了我一个错误,我不知道该修复什么 我尝试过重命名函数,但手动输入函数时总是会出现此错误。如果我试着输入f(x),它说x在函数之前已经被调用了 import numpy as np from sympy import * import math as mt ############################################### def fac

我正试图写一个代码,它接受一个函数,并使用泰勒级数来生成泰勒多项式。然而,当我尝试取函数的导数并替换我的中心('c')时,它给了我一个错误,我不知道该修复什么

我尝试过重命名函数,但手动输入函数时总是会出现此错误。如果我试着输入f(x),它说x在函数之前已经被调用了

import numpy as np
from sympy import *
import math as mt


###############################################


def factorial(m):
    if m <= 0:
        return 1
    else:
        return m*factorial(m-1)

x, h = symbols('x, h')
f = Function('f')

def fp(function, m = 10, c = 0, x0 = 1):

    if m < 0 or type(m) != int:
        raise ValueError('Value m must be a positive integer', m)

##Check if m is a positive integer

    if type(c) not in (int, float):

        raise ValueError('Value c must be one a Real Number', c)

##Check if c is valid

################################################

    while i <= m:
        p = p +((f.diff(x, i).subs(x,c)/(factorial(i)))*(x-x0)**i
        i += 1
        return p


## Defin Taylor
################################################



## Plots function
将numpy导入为np
从sympy进口*
将数学导入为机器翻译
###############################################
def阶乘(m):
如果我喜欢它,
现在修好了

import numpy as np
from sympy import *
import math as mt


def factorial(m):
    if m <= 0:
        return 1
    else:
        return m*factorial(m-1)

x, h = symbols('x, h')
f = Function('f')
print(diff(cos(x),x).subs(x,0)+diff(cos(x),x))

def fp(function, m = 10, c = 0, x0 = 1):

    if m < 0 or type(m) != int:
        raise ValueError('Value m must be a positive integer', m)


    if type(c) not in (int, float):

        raise ValueError('Value c must be one a Real Number', c)


    i = 0 
    p=0
    while i <= m:
        p = p +(((function.diff(x, i).subs(x,c))/(factorial(i)))*(x-c)**i)
        print(p)
        i += 1
    return p
将numpy导入为np
从sympy进口*
将数学导入为机器翻译
def阶乘(m):

如果m请显示完整准确的错误消息,包括traceback.fyi您缺少一个括号,请使用
p=p+((f.diff(x,i).subs(x,c)/(阶乘(i))*(x-x0)**i)
除了错误消息之外,
while
循环
只在一次迭代后返回p
,因此它似乎是无用的