Слишком много значений для распаковки в Scipy Integrate:solve_ivp

Итак, я использую scipy.integratesolve_ivp для решения системы из 4 связанных дифференциальных уравнений первого порядка. Вот кусок кода:

def bigF (a, b):
    return [f1(a, b), f2(a, b), f3(a, b), f4(a, b)]
X, Y = solve_ivp(bigF, (0.1, 15),[0.999, 0.003, -0.033, 0.067])

bigF — это набор из четырех функций, аргументами которых являются a('x') и b('y-массив'), это похоже на y_0 '= f1, y_1 '= f2 и так далее. Второй аргумент — это кортеж начального и конечного значений x, а последний аргумент — это начальные значения четырех значений y.

Я получаю следующую ошибку [полное сообщение]:

Traceback (последний последний вызов): файл F:/Semester 6/Dissertation/Coding Part/inbuilt.py, строка 11, в X, Y =solve_ivp(bigF, (0,1, 15), [0,999, 0,003, -0,033, 0,067]) ValueError: слишком много значений для распаковки (ожидается 2)

Я понятия не имею, что это значит, гугл не очень помогает.


person Hridey    schedule 16.04.2021    source источник
comment
ваша функция возвращает 4 значения, и вы читаете ее только в 2 переменные. Один из вариантов — просто использовать x=your_function или a,b,c,d=your_function.   -  person Amit Nanaware    schedule 16.04.2021
comment
Пожалуйста, дайте полное сообщение об ошибке и место кода, на которое оно указывает. Вы распаковываете b куда-то, но даете только пару 2 переменных с левой стороны. // Или это уже для полного вызова, solve_ivp возвращает одну структуру, нужно вручную распаковывать множество ее полей.   -  person Lutz Lehmann    schedule 16.04.2021
comment
@AmitNanaware Хорошо, я понял.   -  person Hridey    schedule 16.04.2021
comment
@LutzLehmann Я решил, используя Z =solve_ivp()   -  person Hridey    schedule 16.04.2021
comment
См., например, stackoverflow.com/a/65929146/3088138 для получения более подробной информации об использованииsolve_ivp близко к ode45 Matlab   -  person Lutz Lehmann    schedule 16.04.2021
comment
Хорошо, спасибо всем!   -  person Hridey    schedule 17.04.2021