У меня возникают проблемы с моим кодом, который является алгоритмом Runge Kutta для численного решения для гармонического осциллятора. К сожалению, я получаю сообщение об ошибке, которое говорит, что я не могу умножить последовательность на non-int типа float. Учитывая, что этот код почти дословно из учебного текста, я не вижу, где ошибка. Может кто-нибудь, пожалуйста, помогите мне? Спасибо, ваш дружелюбный сосед Spiderman.Почему я получаю ошибку, которую я умножаю по типу «float» типа non-int?
import numpy as np
import matplotlib.pyplot as plt
#Variable Definitions
N = 500
x0 = 1.0
v0 = 0.0
dur = 10.0
dt = dur/float(N-1)
#creating the array
y = np.zeros([N,2])
y[0,0] = x0
y[0,1] = v0
#runge kutta algorithm
def rk4(y, time, dt, deriv)
k1 = dt * deriv(y,time)
k2 = dt * deriv(y + 0.5*k1,time + 0.5*dt)
k3 = dt * deriv(y + 0.5*k2, time + 0.5*dt)
k4 = dt * deriv(y + k3, time + dt)
y_next = y + (k1 + 2*(k2+k3)+k4)/6
return y_next
#Harmonic oscillator
def Harmonic(x,time):
y0 = x[1]
y1 = (-1)*x[0]
return ([y0,y1])
#forming data points
for i in range(N-1):
y[i+1] = rk4(y[i],0, dt, Harmonic)
time = np.linspace(0, dur, N)
#plotting
plt.plot(time,y[:,1])
plt.show()
Ошибка в строке 33.
TypeError: не может умножать последовательность неисполнением междунар типа «поплавком»
Какая линия это говорит ваша ошибка происходит? – Loocid
'Harmonic' возвращает списки. Что вы ожидаете, когда вы будете умножать один из этих списков на float? – user2357112
Опубликуйте свое фактическое исключение (с трассировкой) в вопросе, не просто смутно его описывайте. – abarnert