В Scipy одномерное интегрирование функции с несколькими параметрами достигается путем указания постоянных параметров в определении функции через аргумент args
.Python Scipy получает доступ к локальным переменным в другой функции?
Этот пример взят из справочного руководства SciPy:
>>> from scipy.integrate import quad
>>> def integrand(x, a, b):
... return a * x + b
>>> a = 2
>>> b = 1
>>> I = quad(integrand, 0, 1, args=(a,b))
>>> I = (2.0, 2.220446049250313e-14)
https://docs.scipy.org/doc/scipy/reference/tutorial/integrate.html
Я всегда думал, что локальные переменные, определенные в пределах функций недоступны вне определения. Здесь это кажется неверным, так как quad требует только integrad
как аргумент функции, и он автоматически знает, что используемые переменные (x, a, b)
(и, следовательно, (a, b)
взяты за параметры в интеграцию).
Что здесь происходит? Что мне не хватает?
Я вижу. Итак, как он узнает, что когда вы передаете args (a, b) для некоторых глобальных переменных (a, b), он знает, как выполнить квадратурное интегрирование по x? –
@TaeHyounPark: вам необходимо прочитать [документацию] (https://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.quad.html): «Если func принимает много аргументов, он интегрирован вдоль оси, соответствующей первому аргументу ». – BrenBarn
О, извините, я пропустил часть вашего объяснения. переменная интегрирования является первым аргументом. Большое спасибо за объяснение. И да, я должен обратить больше внимания на документацию ... –