Твърде много стойности за разопаковане в Scipy Integrate: solve_ivp

Така че използвам solve_ivp на scipy.integrate за решаване на система от 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-array'), това е като y_0 '= f1, y_1 ' = f2 и т.н. Вторият аргумент е набор от начален и краен x, а последният аргумент е началните стойности на четирите y.

Получавам следната грешка [пълно съобщение]:

Проследяване (последно последно извикване): Файл F:/Семестър 6/Дисертация/Кодираща част/inbuilt.py, ред 11, в X, Y = solve_ivp(bigF, (0.1, 15), [0.999, 0.003, -0.033, 0.067]) ValueError: твърде много стойности за разопаковане (очаква се 2)

Нямам представа какво означава това, Google не помага много.


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