Интегрировать синус функции с помощью dblquad в Python - PullRequest
0 голосов
/ 03 января 2019

Я хочу интегрировать Int sin(f(x,y,a,b)) dx dy, используя dblquad, где a и b - два параметра.

Ниже показан пример, где x и y оба переходят от 0 до 10, а a = 0, b = 1.

dblquad(f*np.sin(f),0,10,0,10,args=(0,1))

Однако это приводит к выводу

Traceback (most recent call last):
  File "./update.py", line 60, in <module>
    dblquad(f*np.sin(f),0,10,0,10,args=(0,1))
AttributeError: 'function' object has no attribute 'sin'

Почему это происходит?Есть ли проблема с применением np.sin к f (np.log дает тот же результат) при попытке подобного интеграла?

Как правильно сделать это с помощью dblquad?

Спасибо!

1 Ответ

0 голосов
/ 03 января 2019

С вашим кодом есть две проблемы:

Первая - это то, что python не может вычислить синус функции, он должен вычислить синус числа (что, конечно, может быть результатом другой функции): это ваш AttributeError.

Второй - синтаксическая ошибка в вашем dblquad.Пределы y устанавливаются как функция x согласно документации dblquad

Рабочий пример:

import numpy as np
from scipy.integrate import dblquad

def f(x, y, a, b):
    return a + b + x + y

def integrand(x, y, a, b):
    return f(x, y, a, b) * np.sin(f(x, y, a, b))

dblquad(integrand,0,10,lambda x: 0, lambda y: 10,args=(0,1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...