Квадратура Гаусса в Python

#python

#python

Вопрос:

 import numpy as np

import scipy.integrate as integrate

def f(x):
    return np.sin(x)

def gauss(f,0,2,5):
    val,error = integrate.quadrature(f,a,b, maxiter = n)
    print("Integration value is: ", val)
    print("Error is: ", error)
 
  

Выше приведен мой код. Я продолжаю получать синтаксическую ошибку ниже. Может кто-нибудь помочь мне решить эту проблему?

    def gauss(f,0,2,5):

               ^

SyntaxError: invalid syntax
  

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

1. Без обид, но вам, вероятно, следует ознакомиться с руководством по Python . Это какая-то очень простая синтаксическая ошибка языка. У вас не может быть чисел в определении аргументов функции… Однако вы можете определить значения по умолчанию: def gauss(f, a=0, b=2, n=5): (у меня есть сильное ощущение, что это то, к чему вы стремились …)

Ответ №1:

Вы помещаете константы в определение функции. Это недопустимо — там должны быть имена переменных.

Константы могут быть переданы только вызову функции.

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

1. Константы также могут определять значения по умолчанию

2. @Tomerikoo вы правы, но я не хотел усложнять простой ответ.

3. Я не думаю, что это слишком сложно … С другой стороны, может быть немного вводящим в заблуждение, чтобы сказать новичку, что константы могут быть переданы только для вызова функции . Что происходит, когда он видит значения по умолчанию для первого? Тогда ему будет сложно…

4. @Tomerikoo почему бы вам не опубликовать свой ответ, а я тогда удалю свой?

Ответ №2:

 import numpy as np
from scipy import integrate

f = lambda x: np.sin(x)

def gauss(f,a,b, MaxOrder):
    val,error = integrate.quadrature(f,a,b, maxiter = MaxOrder)
    print("Integration value is: ", val)
    print("Error is: ", error)
    
print(gauss(f, 0, 2, 5))
  

Надеюсь, это сработает!