Я хотел бы использовать интегральную команду в scipy и иметь функцию, которая один раз умножается на каждый элемент массива.
import math
import matplotlib.pyplot as plt
import numpy as np
import scipy.integrate as integrate
from scipy.integrate import quad, romberg
import scipy.special as special
from numpy import sqrt
yes = np.array([0,1])
def integrate(x,yes):
return x+yes
result = quad(integrate,0,1,args=(yes))
print(result)
когда я это делаю, я получаю сообщение об ошибке только массивы размера 1 могут быть преобразованы в скаляры Python
Но если я сделаю это
import math
import matplotlib.pyplot as plt
import numpy as np
import scipy.integrate as integrate
from scipy.integrate import quad, romberg
import scipy.special as special
from numpy import sqrt
yes = np.array([0])
def integrate(x,yes):
return x+yes
result = quad(integrate,0,1,args=(yes))
print(result)
он дает мне это (0.5, 5.551115123125783e-15) Это именно то, что я хочу, но я хотел бы это для каждого элемента в массиве.
Есть ли способ написать цикл for? Я также слышал о scipy.integrate.quad_vec, но это не сработало. заранее спасибо
args
должен получить кортеж.(yes)
это не кортеж, это простоyes
.args=(yes,)
- это правильный способ передачи переменнойyes
в вашу функцию. Тем не менее,quad
может интегрировать только одно значение; ваша функция должна возвращать скаляр. - person hpaulj   schedule 03.02.2020