.


:




:

































 

 

 

 





.

.

.

.

 

 

 

) .

.

 

 

.

 

) .

.

.

 

;

- ;

- .

 

.

.

, , . , , , . , .

(, ),

 

.

. 13.9, , , . , , , , , , .

. 13.9

 

, . ,

 

,

 

: ( )

 

.

, :

) , ;

) , ;

) , , ;

) , , , .

, , . . , . , .

.

.

1. :

;

BaseXY.

2. :

;

;

;

.

3. :

4. :

 

 

5. :

6. .

7. :

8. ( ), .3.

9. .

 

 

.

) .

1. :

;

BaseXY.

2. :

;

;

;

.

3. :

 

4. :

 

 

5. :

6. :

7. .

8. :

9. ( ), .3.

10. .

 

) .

1. :

;

BaseXY.

2. :

;

;

;

;

.

3. :

 

4. :

 

 

5. :

6. :

7. .

8. :

9. ( ), .3.

10. .

 

Axis ( , ) . 3.10. . Ee . 13.11.

. 13.10

. 13.11

 

. . , . (, ) . : "" "". . , . .

( 2) (. (13.32)). , - - .

 

.

1. .

Option Explicit On

Imports System.Drawing.Color

Imports System.Math

Public Class Form1

 

'

Dim xStar1 As Single

Dim yStar1 As Single

Dim StarSize As Single = 0.07

'

Dim Fi0 As Single '

Dim v0 As Single

Dim r0 As Single

'

Dim xPlanet As Single

Dim yPlanet As Single

Dim xPlanet1 As Single

Dim yPlanet1 As Single

Dim rkPlanet As Single

Dim rk1Planet As Single

Dim akPlanet As Single

Dim ak1Planet As Single

Dim vkPlanet As Single

Dim vk1Planet As Single

Dim omegakPlanet As Single

Dim omegak1Planet As Single

Dim FikPlanet As Single

Dim Fik1Planet As Single

Dim PlanetSize As Single = 0.03

'

Dim En As Single

Dim E0 As Single

Dim Uef As Single

'

Dim t As Single '

Dim dt As Single '

Dim BaseXY As Single

Dim Delta As Single

 

x y Axis1.

Private Sub Form_Load()

Axis1.Width = Axis1.Height

End Sub

 

, , . . , .

'

Private Sub CommandInit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CommandInit.Click

v0 = Val(Textv0.Text)

dt = Val(TextDT.Text)

BaseXY = Val(TextBaseXY.Text)

Delta = Val(TextDelta.Text)

r0 = 1

Fi0 = 0

rkPlanet = r0

rk1Planet = r0

vkPlanet = 0

vk1Planet = 0

FikPlanet = Fi0

Fik1Planet = Fi0

t = 0

E0 = v0 ^ 2 / 2 - 1

xPlanet = r0

yPlanet = 0

xStar1 = 0

yStar1 = 0

InitAxis()

PlanetSize = 0.05 * BaseXY

StarSize = 0.08 * BaseXY

Axis1.Pix_Size = StarSize

Axis1.PixDraw(xStar1, yStar1, Red, 1)

Axis1.StatToDin()

Axis1.Pix_Size = PlanetSize

Axis1.PixDraw(xPlanet, yPlanet, Blue, 2)

Axis1.DinToPic()

CommandStart.Enabled = True

CommandUef.Enabled = True

End Sub

Private Sub InitAxis()

If Check3.Checked = False Then Exit Sub

'

Axis1.Axis_Type = 1

Axis1.Pix_type = 1

Axis1.x_Base = BaseXY

Axis1.y_Base = BaseXY

Axis1.x_Name = "x"

Axis1.y_Name = "y"

Axis1.AxisDraw()

'

Axis2.Axis_Type = 2

Axis2.Pix_type = 1

Axis2.Pix_Size = 0

Axis2.x_Base = 4

Axis2.y_Base = 3

Axis2.y_Name = "Uef"

Axis2.x_Name = "r"

Axis2.AxisDraw()

'

Axis3.Axis_Type = 2

Axis3.Pix_type = 1

Axis3.Pix_Size = 0

Axis3.x_Base = 40

Axis3.y_Base = 0.001

Axis3.y_Name = " E"

Axis3.x_Name = ""

Axis3.AxisDraw()

End Sub

Private Sub CommandStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CommandStart.Click

Timer1.Enabled = True

End Sub

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

Timer1.Enabled = False

End Sub

 

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

t = t + dt

If Check1.Checked = False Then

akPlanet = (v0 ^ 2 / rkPlanet ^ 3) - (1 / rkPlanet ^ 2)

Else

akPlanet = (v0 ^ 2 / rkPlanet ^ 3) - (1 / rkPlanet ^ (2 + Delta))

End If

vk1Planet = vkPlanet + akPlanet * dt

rk1Planet = rkPlanet + (vkPlanet + vk1Planet) * dt / 2

omegakPlanet = v0 / rkPlanet ^ 2

omegak1Planet = v0 / rk1Planet ^ 2

Fik1Planet = FikPlanet + (omegakPlanet + omegak1Planet) * dt / 2

xPlanet = rkPlanet * Cos(FikPlanet)

yPlanet = rkPlanet * Sin(FikPlanet)

xPlanet1 = rk1Planet * Cos(Fik1Planet)

yPlanet1 = rk1Planet * Sin(Fik1Planet)

'

Axis1.Pix_Size = 0

Axis1.Pix_color = Black

Axis1.Line(xPlanet, yPlanet, xPlanet1, yPlanet1, 1)

'

Axis1.StatToDin()

Axis1.Pix_Size = PlanetSize

Axis1.PixDraw(xPlanet1, yPlanet1, Blue, 2)

Axis1.DinToPic()

'

If Check1.Checked = False Then

En = vk1Planet ^ 2 / 2 + (omegak1Planet * rk1Planet) ^ 2 / 2 - 1 / rk1Planet

Uef = v0 ^ 2 / (2 * rk1Planet ^ 2) - (1 / rk1Planet)

Else

'

En = vk1Planet ^ 2 / 2 + (omegak1Planet * rk1Planet) ^ 2 / 2 - 1 / ((1 + Delta) * rk1Planet ^ (1 + Delta))

Uef = v0 ^ 2 / (2 * rk1Planet ^ 2) - (1 / ((1 + Delta) * rk1Planet ^ (1 + Delta)))

End If

 

'

Axis2.PixDraw(rk1Planet, Uef, Blue, 0)

'

Axis3.PixDraw(t, Abs(E0 - En), Red, 0)

vkPlanet = vk1Planet

rkPlanet = rk1Planet

FikPlanet = Fik1Planet

Textt.Text = Str(Round(t, 2))

End Sub

'

Private Sub CommandUef_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CommandUef.Click

Dim Uef As Single

Dim Uef1 As Single

Dim r As Single

Dim dr As Single

Dim v0 As Single

Dim dv0 As Single

 

r = 0.01

dr = 0.01

v0 = 0.5

dv0 = 0.25

Axis1.Pix_color = Red

Do Until v0 > 2

Do Until r > 4 - dr

Uef = v0 ^ 2 / (2 * r ^ 2) - 1 / r

Uef1 = v0 ^ 2 / (2 * (r + dr) ^ 2) - 1 / (r + dr)

Axis2.Line(r, Uef, r + dr, Uef1, 0)

r = r + dr

Loop

v0 = v0 + dv0

r = 0.01

Loop

End Sub

Private Sub TextDT_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextDT.TextChanged

If Val(TextDT.Text) > 0.1 Then TextDT.Text = "0.1"

dt = Val(TextDT.Text)

End Sub

 

Private Sub CommandStar2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CommandStar2.Click

Form2.Show()

End Sub

 

End Class

2. .

Option Explicit On

Imports System.Drawing.Color

Imports System.Math

Public Class Form2

'

Dim xkStar1 As Double

Dim ykStar1 As Double

Dim xkStar2 As Double

Dim ykStar2 As Double

Dim xk1Star1 As Double

Dim yk1Star1 As Double

Dim xk1Star2 As Double

Dim yk1Star2 As Double

'

Dim Fi0 As Double '

Dim v0 As Double

Dim r0 As Double

'

Dim xkPlanet As Double

Dim xk1Planet As Double

Dim ykPlanet As Double

Dim yk1Planet As Double

Dim vxkPlanet As Double

Dim vxk1Planet As Double

Dim vykPlanet As Double

Dim vyk1Planet As Double

 

Dim xPlanet As Double

Dim yPlanet As Double

Dim xPlanet1 As Double

Dim yPlanet1 As Double

 

Dim r1Planet As Double

Dim r2Planet As Double

Dim axPlanet As Double

Dim ayPlanet As Double

'

Dim Ek As Double

Dim Ek1 As Double

Dim dE As Double

Dim Uef As Double

Dim A As Double

'

Dim t As Double '

Dim dt As Double '

Dim dt0 As Double ',

Dim BaseXY As Double

Dim Star1Color As Color

Dim Star2Color As Color

Dim RMolPlanet As Double

Dim RMolStar As Double

Dim DispX As Double '

Dim DispY As Double '

 

Private Sub CommandStar1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CommandStar1.Click

Form1.Show()

End Sub

 

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Star1Color = Red

Star2Color = DarkRed

End Sub

'

Private Sub CommandInit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CommandInit.Click

Timer1.Enabled = False

xkPlanet = Val(Textx0.Text)

xk1Planet = Val(Textx0.Text)

ykPlanet = Val(Texty0.Text)

yk1Planet = Val(Texty0.Text)

 

vxkPlanet = Val(Textvx0.Text)

vxk1Planet = Val(Textvx0.Text)

vykPlanet = Val(Textvy0.Text)

vyk1Planet = Val(Textvy0.Text)

 

dt0 = Val(TextDT0.Text)

dt = dt0

BaseXY = Val(TextBaseXY.Text)

RMolPlanet = 0.03 * BaseXY

RMolStar = 0.06 * BaseXY

DispX = 0

DispY = 0

t = 0

 

InitAxis()

 

xkStar1 = 1

ykStar1 = 0

xkStar2 = -1

ykStar2 = 0

xk1Star1 = 1

yk1Star1 = 0

xk1Star2 = -1

yk1Star2 = 0

Axis1.StatToDin()

Axis1.Pix_Size = RMolPlanet

Axis1.PixDraw(xkPlanet, ykPlanet, Blue, 2)

Axis1.Pix_Size = RMolStar

If RadioButton1.Checked Then

Axis1.PixDraw(xkStar1, ykStar1, Star1Color, 2)

Axis1.PixDraw(xkStar2, ykStar2, Star2Color, 2)

Else

Axis1.PixDraw(xkStar1, ykStar1, Star1Color, 1)

Axis1.PixDraw(xkStar2, ykStar2, Star2Color, 1)

vxkPlanet = vxkPlanet + ykPlanet / 2

vykPlanet = vykPlanet - xkPlanet / 2

vxk1Planet = vxkPlanet

vyk1Planet = vykPlanet

End If

Axis1.DinToPic()

CommandStart.Enabled = True

End Sub

Private Sub InitAxis()

'/

Axis1.Axis_Type = 1

Axis1.Pix_type = 1

Axis1.x_Base = BaseXY

Axis1.y_Base = BaseXY

Axis1.x_Name = "x"

Axis1.y_Name = "y"

Axis1.AxisDraw()

'

Axis2.Axis_Type = 2

Axis2.Pix_type = 1

Axis2.Pix_Size = 0

Axis2.x_Base = 40

Axis2.y_Base = 0.005

Axis2.y_Name = " E"

Axis2.x_Name = ""

Axis2.AxisDraw()

End Sub

Private Sub CommandStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CommandStart.Click

Timer1.Enabled = True

CommandStop.Enabled = True

CommandMore.Enabled = True

CommandBack.Enabled = False

End Sub

Private Sub CommandStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CommandStop.Click

Timer1.Enabled = False

CommandMore.Enabled = False

CommandBack.Enabled = False

End Sub

Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged

Timer1.Enabled = False

CommandStart.Enabled = False

CommandStop.Enabled = False

CommandMore.Enabled = False

CommandBack.Enabled = False

End Sub

Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged

Timer1.Enabled = False

CommandStart.Enabled = False

CommandStop.Enabled = False

CommandMore.Enabled = False

CommandBack.Enabled = False

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

t = t + dt

If RadioButton2.Checked Then

xk1Star1 = 1

xk1Star2 = -1

yk1Star1 = 0

yk1Star2 = 0

'

r1Planet = Sqrt((xkPlanet - xk1Star1) ^ 2 + (ykPlanet - yk1Star1) ^ 2)

r2Planet = Sqrt((xkPlanet - xk1Star2) ^ 2 + (ykPlanet - yk1Star2) ^ 2)

axPlanet = -(xkPlanet - xk1Star1) / r1Planet ^ 3 - (xkPlanet - xk1Star2) / r2Planet ^ 3 + xkPlanet / 4 + vykPlanet

ayPlanet = -ykPlanet / r1Planet ^ 3 - ykPlanet / r2Planet ^ 3 + ykPlanet / 4 - vxkPlanet

Else

'

xk1Star1 = Cos(t / 2)

yk1Star1 = Sin(t / 2)

xk1Star2 = -Cos(t / 2)

yk1Star2 = -Sin(t / 2)

r1Planet = Sqrt((xkPlanet - xk1Star1) ^ 2 + (ykPlanet - yk1Star1) ^ 2)

r2Planet = Sqrt((xkPlanet - xk1Star2) ^ 2 + (ykPlanet - yk1Star2) ^ 2)

axPlanet = -(xkPlanet - xk1Star1) / r1Planet ^ 3 - (xkPlanet - xk1Star2) / r2Planet ^ 3

ayPlanet = -(ykPlanet - yk1Star1) / r1Planet ^ 3 - (ykPlanet - yk1Star2) / r2Planet ^ 3

End If

vxk1Planet = vxkPlanet + axPlanet * dt

vyk1Planet = vykPlanet + ayPlanet * dt

xk1Planet = xkPlanet + (vxkPlanet + vxk1Planet) / 2 * dt + axPlanet * dt * dt / 2

yk1Planet = ykPlanet + (vykPlanet + vyk1Planet) / 2 * dt +ayPlanet * dt * dt / 2

dt = dt0 / Sqrt(axPlanet ^ 2 + ayPlanet ^ 2)

'

Axis1.Pix_color = Black

Axis1.Line(xkPlanet - DispX, ykPlanet - DispY, xk1Planet - DispX, yk1Planet - DispY, 1)

'

Axis1.StatToDin()

Axis1.Pix_Size = RMolPlanet

Axis1.PixDraw(xk1Planet - DispX, yk1Planet - DispY, Blue, 2)

 

If RadioButton1.Checked Then

'

Axis1.Pix_Size = RMolStar

Axis1.PixDraw(xk1Star1 - DispX, yk1Star1 - DispY, Star1Color, 2)

Axis1.PixDraw(xk1Star2 - DispX, yk1Star2 - DispY, Star2Color, 2)

xkStar1 = xk1Star1

ykStar1 = yk1Star1

xkStar2 = xk1Star2

ykStar2 = yk1Star2

 

End If

Axis1.DinToPic()

'

Ek = (vxkPlanet ^ 2 + vykPlanet ^ 2) / 2 - 1 / Sqrt((xkPlanet - xkStar1) ^ 2 + (ykPlanet - ykStar1) ^ 2) - _

1 / Sqrt((xkPlanet - xkStar2) ^ 2 + (ykPlanet - ykStar2) ^ 2)

Ek1 = (vxk1Planet ^ 2 + vyk1Planet ^ 2) / 2 - 1 / Sqrt((xk1Planet - xk1Star1) ^ 2 + (yk1Planet - yk1Star1) ^ 2) - _

1 / Sqrt((xk1Planet - xk1Star2) ^ 2 + (yk1Planet - yk1Star2) ^ 2)

dE = Ek1 - Ek

'

A = axPlanet * (xk1Planet - xkPlanet) + ayPlanet * (yk1Planet - ykPlanet)

'

Axis2.PixDraw(t, Abs(A - dE), Red, 0)

vxkPlanet = vxk1Planet

vykPlanet = vyk1Planet

xkPlanet = xk1Planet

ykPlanet = yk1Planet

Textt.Text = Str(Round(t, 2))

TextDT.Text = Str(Round(dt, 8))

End Sub

Private Sub TextDT_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextDT.TextChanged

If Val(TextDT.Text) > 0.1 Then TextDT.Text = "0.1"

dt = Val(TextDT.Text)

End Sub

 

Private Sub CommandMore_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CommandMore.Click

CommandBack.Enabled = True

Timer1.Enabled = False

Axis1.Axis_Type = 1

Axis1.Pix_type = 3

Axis1.x_Base = 0.5

Axis1.y_Base = 0.5

Axis1.x_Name = "x"

Axis1.y_Name = "y"

Axis1.AxisDraw()

DispX = xkStar1

DispY = ykStar1

'

Axis1.Pix_Size = RMolPlanet

Axis1.Pix_type = 1

Axis1.PixDraw(xk1Planet - DispX, yk1Planet - DispY, Blue, 2)

' 1

Axis1.Pix_Size = RMolStar

Axis1.PixDraw(xk1Star1 - DispX, yk1Star1 - DispY, Star1Color, 2)

Timer1.Enabled = True

End Sub

 

 

Private Sub CommandBack_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CommandBack.Click

 

CommandMore.Enabled = True

CommandBack.Enabled = False

Timer1.Enabled = False

DispX = 0

DispY = 0

InitAxis()

'

Axis1.StatToDin()

Axis1.Pix_Size = RMolPlanet

Axis1.PixDraw(xk1Planet - DispX, yk1Planet - DispY, Blue, 2)

' 1

Axis1.Pix_Size = RMolStar

Axis1.PixDraw(xk1Star1 - DispX, yk1Star1 - DispY, Star1Color, 2)

Axis1.PixDraw(xk1Star2 - DispX, yk1Star2 - DispY, Star2Color, 2)

Axis1.DinToPic()

Timer1.Enabled = True

End Sub

 

End Class

.

- . 1, . ! ( ), . , . , . . 13.12 "- " , (- ) (- ) . ? , . , . , . .

. 13.12

 

 





:


: 2016-10-06; !; : 676 |


:

:

. .
==> ...

1498 - | 1465 -


© 2015-2024 lektsii.org - -

: 0.265 .