Ангармонические колебания
Dim k, l, h, W, W2, lt, ll, v2, vx, t As Single
Dim n As Integer
Public Function en(X) ‘Потенциальная энергия
a = (Sqr(X * X + h * h) - l)
en = k * a * a / 2
End Function
Public Function fx(X) ‘ Сила
fx = -k * X * (Sqr(X * X + h * h) - l) / Sqr(X * X + h * h)
End Function
Public Function en2(X) ‘Потенциальная энергия
a = (Sqr(X * X + h * h) - ll)
en2 = k / 2 * (2 * a * a + (h + X - lt) * (h + X - lt) + (h - X - lt) * (h - X - lt))
End Function
Public Function f2(X)
f2 = -2 * k * X * (Sqr(X * X + h * h) - ll) / Sqr(X * X + h * h) - 2 * k * X
End Function
Private Sub Command1_Click()
vx = 0
l = Text1.Text
h = Text2.Text
k = 0.001
X1 = (Label4.Left - Shape2.Left) / 430
W = en(X1)
Timer1.Interval = 5
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub Command3_Click()
Timer1.Interval = 0 ‘ Выключение таймера
End Sub
Private Sub Timer1_Timer()
X = (Label4.Left - Shape2.Left) / 430
dt = Timer1.Interval
Label4.Left = Label4.Left + (fx(X) * dt * dt / 2 + vx * dt) * 430
Line2.X1 = Label4.Left + Label4.Width / 2
vx = fx(X) * dt + vx
xx1 = (Label4.Left - Shape2.Left) / 430
w1 = en(xx1) + vx * vx / 2
xx11 = Sqr(W / w1)
vx = vx * xx11
xx1 = xx1 * xx11
If Sgn(Y) <> Sgn(Y1) Then
n = n + 1
Text4.Text = n \ 2
If n \ 2 = n / 2 Then Text3.Text = t
End If
End Sub