Невозможно умножить последовательность на float - PullRequest
0 голосов
/ 10 апреля 2020

Я пытался закодировать в методе обратного Эйлера, и я почти уверен, что близок к завершению. Однако я не знаю, почему я получаю эту ошибку о умножении последовательности на число с плавающей точкой. Тем более, что я успешно использовал похожую строку кода для метода forward. Кроме того, я почти уверен, что в этом выражении ничего не содержится в списке enter image description here. Может кто-нибудь помочь, пожалуйста?

t=Symbol('t')
u=Symbol('u')
def backwardEuler(f, t0, tN, u0, h):
    tlist = [t0+h]
    ulist = [u0]
    t=Symbol('t')
    u=Symbol('u')
    f = lambdify([t,u], f)
    iterations = (tN-t0)/h
    for i in range(int(iterations)):
        expression = ulist[i] + h*(f(tlist[i],u))
        eqn = Eq(expression, u)
        u = solve(eqn)
        ulist.append(u)
        t = t0+h*(i+2)
        tlist.append(t)
    approx = ulist[-1]
    print(approx)
backwardEuler(-3*t*u-u**2, 1, 2, 0.5, 0.1)
backwardEuler(-3*t*u-u**2, 1, 2, 0.5, 0.05)
backwardEuler(-3*t*u-u**2, 1, 2, 0.5, 0.025)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...