Оценить функцию симпатии

#python #function #sympy

Вопрос:

Я нашел команду для оценки функции симпатии f (.subs), но, похоже, она не работает.
В частности, я определяю функцию, которая зависит от f, и я хочу оценить ее в своей функции.
Цель этой функции-вычислить гауссову квадратуру с учетом узлов и весов:

 def Gauss_Leg(f,weights,nodes,n, P = 'Legendre'):
"""P = Legendre by default,
w = weights,
x = nodes,
n = degree of precision"""
if P == 'Legendre':
    measure = 1
    a = -1
    b = 1
integral = 0
for i in range(n):
    integral  = f.subs(x, nodes[i]) * weights[i]
print('Intergation boundaries: ', a, b)
print('integral of', f, '*', measure, '= ', integral)
return

x = sym.Symbol('x', real=True) 
f = sym.exp(x)

#exact nodes and weights
[nodes,weights] = np.polynomial.legendre.leggauss(n)

Gauss_Leg(f,weights,nodes,5)
 

Комментарии:

1. В чем ваша ошибка или результат?

2. Число, умноженное на exp(x). Поэтому я попытался напечатать f.subs(x, узлы[i]) в каждом цикле, и он всегда возвращает exp(x): подстановка не происходит.

3. Вы повторно x используете в качестве переменной две разные вещи. Вам нужно использовать разные имена переменных.

4. @OscarBenjamin Извините, я уже изменил это. Отредактированный.

5. После изменения np.polynomial.legendre.leggauss(n) на np.polynomial.legendre.leggauss(5) , я не получаю ошибку. Я также не понимаю, зачем вам для этого нужно сочувствие. Вы могли бы просто создать лямбда-функцию Python и оценить ее по nodes[i] .