Как передать только один аргумент в odeint? - PullRequest
0 голосов
/ 22 сентября 2018

Я пытаюсь использовать scipy's odeint для решения некоторых обыкновенных дифференциальных уравнений.Единственная проблема состоит в том, что я хочу определить только один аргумент, и кажется, что для создания кортежа вам нужно как минимум два значения.

Мой код выглядит так:

def system(state, t, inputs)

    x = state[0]
    u = inputs
    a = -4
    b = 2

    dxdt = [a * x + b * u]

    return dxdt

inputs = 5
x_next = odeint(system, x, t, args=(inputs))

Это вернет ошибку, потому что args должен быть кортежем, а (input) - int / float, а не кортежем.Один из способов преодолеть это - поставить a, b как часть args.Но это всего лишь повязка на рану.

Мне было интересно, есть ли способы определить аргументы как одно значение.

1 Ответ

0 голосов
/ 22 сентября 2018

Как говорит ошибка, args должно быть tuple.Вы можете легко превратить текущую версию в кортеж, используя

args=(inputs,)

Обратите внимание на дополнительную запятую.

...