Как передать только один аргумент в odeint?

Я пытаюсь использовать scipy 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 должен быть кортежем, а (inputs) — int/float, а не кортеж. Один из способов обойти это — поместить a, b как часть аргументов. Но это всего лишь повязка на рану.

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


person Rui Nian    schedule 21.09.2018    source источник
comment
Используйте 1_. Обратите внимание на дополнительную запятую.   -  person Cleb    schedule 22.09.2018
comment
это было намного проще, чем в моих самых смелых мечтах. Спасибо, Клеб!   -  person Rui Nian    schedule 22.09.2018


Ответы (1)


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

args=(inputs,)

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

person Cleb    schedule 21.09.2018