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

1

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

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

  • 1
    Используйте args=(inputs,) . Обратите внимание на дополнительную запятую.
  • 1
    это было намного проще, чем в моих самых смелых мечтах. Спасибо, Клеб!
Теги:
scipy
tuples
odeint

1 ответ

1
Лучший ответ

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

args=(inputs,)

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню