我正在嘗試使用 Maclaurin 級數來估計一個數字的正弦值。這是我的功能:
from math import sin, factorial
import numpy as np
fac = np.vectorize(factorial)
def sin_x(x, terms=10):
""" Calcul une approximation de sin(x) en utlisant
un nombre donné de termes de la serie de Maclaurin"""
n = np.arange(terms)
return np.sum[((-1)**n)(x**(2*n 1)) / fac(2*n 1)]
if __name__ == "__main__":
print("Valeur actuelle:", sin(5)) # En utilisant la fonction sinus de la librairie math
print("N (terms)\tMaclaurin\tErreur")
for n in range(1, 6):
maclaurin = sin_x(5, terms=n)
print(f"{n}\t\t{maclaurin:.03f}\t\t{sin(10) - maclaurin:.03f}")
這是我得到的錯誤
PS C:\Users\tapef\Desktop\NUMPY-TUT> python maclaurin_sin.py
Valeur actuelle: -0.9589242746631385
N (terms) Maclaurin Erreur
Traceback (most recent call last):
File "C:\Users\tapef\Desktop\NUMPY-TUT\maclaurin_sin.py", line 20, in <module>
maclaurin = sin_x(5, terms=n)
File "C:\Users\tapef\Desktop\NUMPY-TUT\maclaurin_sin.py", line 12, in sin_x
return np.sum[((-1)**n)(x**(2*n 1)) / fac(2*n 1)]
TypeError: 'numpy.ndarray' object is not callable
我該如何擺脫這個錯誤?謝謝
我嘗試使用括號而不是括號。
uj5u.com熱心網友回復:
你忘記了 和 之間的(-1)**n)乘法(x**(2*n 1)。此外,np.sum()需要作為函式呼叫,因此您的 return 陳述句變為:
return np.sum(((-1)**n)*(x**(2*n 1)) / fac(2*n 1))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/530655.html
上一篇:具有n個預填充列的numpy陣列
下一篇:將元素附加到2dnumpy陣列
