определить функцию гармонического осциллятора для использования в odeint - PullRequest
0 голосов
/ 08 апреля 2019

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

import matplotlib.pyplot as plt
import numpy as np
from scipy.integrate import odeint

k=4.0
m=1.0
B=0

def harmonic((x, y), t):
    return [y, -k * x / m + B / m * y]

выдает сообщение об ошибке:

  File "<ipython-input-60-2d6b156227be>", line 1
    def harmonic((x, y), t):
                 ^
SyntaxError: invalid syntax

Кто-то может мне помочь?Спасибо!

Ответы [ 2 ]

2 голосов
/ 08 апреля 2019

Посмотрите на следующий пример:

import matplotlib.pyplot as plt
import numpy as np
from scipy.integrate import odeint

k = 4.0
m = 1.0
B = 0

def harmonic(var, t=None):
    x, y = var[0], var[1] # var is assumed to be an array, usually numpy array
    return [y, -k * x / m + B / m * y]

result = odeint(harmonic, (0.2, 0), np.linspace(0, 1, 100))
plt.plot(result[:,0], result[:,1], 'r-')
plt.show()

enter image description here

1 голос
/ 08 апреля 2019

(x, y) представляет кортеж.Если вы хотите просто использовать x, y в качестве отдельных переменных, просто используйте x,y.Ваша функция будет выглядеть следующим образом:

def harmonic(x, y, t):
    return [y, -k * x / m + B / m * y]

Передача гипотетических значений для x, y & t в гармоническую функцию возвращает список, рассчитанный по коду в выражении return функции:

harmonic(2,3,5)
#Output:
[3, -8.0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...