אנטרופיה של המשוואה הלוגיסטית

Logistic Equation Entropy

 

 

הגדרת האנטרופיה

האנטרופיה נתונה בביטוי הבא:

 

כאשר:

·            Xo  עך התחילי של משתנה שבאמצעותו מחוללים את האי-סדר הכאוטי תוך יצירה של סדרת ערכים:
Xo è  X  1 ,  X2…  Xm

·            Pm הסתברות ש- Xo ייצור את Xm.

 

אם ניישם את הנ"ל עבור המשוואה הלוגיסטית (כדוגמא):

אזי יש לחלק את תחום Xn לאזורים שווים ולבדוק את מספר הפגיעות המצטבר באזורים השונים, וזאת עבור מספר איטרציות גדול מאד, כפי שמתואר סכמתית באיור הבא:

 

איור מס' 1: חישוב אנטרופיה במערכת איטרטיבית


 

ניישם את איור מס' 1 עבור משוואה לוגיסטית כאשר r=4, עם ערך התחילי Xo=0.06, ומספר החלוקות שווה ל- 100.

איור מס' 2: התפלגות הפגיעות וחישוב האנטרופיה עבור 100 חלוקות

אם נשנה את מספר החלוקות ל- 500 נקבל עליה בערך האנטרופיה:

איור מס' 2: התפלגות הפגיעות וחישוב האנטרופיה עבור 500 חלוקות


 

להלן קוד המקור של התוכנית:

Const r = 4           ' The logistic equation R parameter

Const BinNumber = 500 ' Number of partition

Dim prob(BinNumber)   ' Array which stores number of hits

Const MaxIter = 10000 ' Maximum Iteration number

 

Private Sub Command1_Click()

deltaX = 1 / BinNumber

'========= Reset =============

probTemp = 0: n = 0: x = 0.06: s = 0

For i = 1 To BinNumber

    prob(i) = 0

Next

'========= Store Hits ========

Do While n <= MaxIter

    DoEvents

    x = r * x * (1 - x)

    n = n + 1

    prob(Int(x / deltaX)) = prob(Int(x / deltaX)) + 1

Loop

'========= Display Hits ======

For ibin = 1 To BinNumber

    If n > 500 Then

        Line (ibin - 1, prob(ibin))-(ibin, 0), QBColor(ibin Mod 15), BF

        Line (ibin - 1, probTemp)-(ibin, prob(ibin)), QBColor(15)

        probTemp = prob(ibin)

        If prob(ibin) > 0 Then s = s - prob(ibin) / MaxIter * Log(prob(ibin) / MaxIter)

    End If

Next

Text1.Text = "Entropy = " + Str$(s)

End Sub

 

Private Sub Command2_Click()

End

End Sub

 

Private Sub Form_Load()

Form1.Scale (0, 200)-(BinNumber, -10)

Text2.Text = "Win Coor. = (0, 200)-(" + Str$(BinNumber) + ", -10)"

End Sub

 

 

 

 

מצב מעניין מתקבל עבור r=3 (נקודת התפצלות). רואים את ההתפצלות, ז"א החל מ r גדול מ- 3, האיטרציות גורמות ל- Xn להתנדנד בין שני ערכים. הציור הבא מראה הגדלה של אזור ההתפצלות ז"א תאור המצב בין אזורי חלוקה מס' 320 ל- 340. מספר החלוקות הכללי 500.


 

איור מס' 3: התפלגות הפגיעות וחישוב האנטרופיה עבור r=3 ומס' חלוקות שווה ל- 500.

לאחר שחישבנו את האנטרופיה עבור r נתון, נחשב את האנטרופיה עבור כל אחד מה- r בתחום שבין 0 ל- 4:

איור מס' 4: האנטרופיה עבור 0<=r<=4 ומספר חלוקות שווה ל- 10000.


 

Const BinNumber = 10000

Dim prob(BinNumber)

Const MaxIter = 10000

Private Sub Command1_Click()

deltaX = 1 / BinNumber

For r = 0.0001 To 4 Step 4 / 752

'========= Reset =============

probTemp = 0: n = 0: X = 0.001: s = 0

For i = 1 To BinNumber

    prob(i) = 0

Next

 

'========= Display fractal & Store Hits ========

Do While n <= MaxIter

    DoEvents

    X = r * X * (1 - X)

    n = n + 1

   If n > MaxIter - 200 Then

        Form1.Scale (0, 1)-(4, -0.1)

        PSet (r, X), QBColor(13)

       

    End If

    prob(Int(X / deltaX)) = prob(Int(X / deltaX)) + 1

Loop

'========= Calculate S ======

For ibin = 1 To BinNumber

    If n > 500 Then

        If prob(ibin) > 0 Then s = s - prob(ibin) / MaxIter * Log(prob(ibin) / MaxIter)

    End If

Next

'========= Display S ======

Form1.Scale (0, 10)-(4, -0.1)

Line (Rtemp, Stemp)-(r, s), QBColor(14)

Rtemp = r: Stemp = s

Next

Text1.Text = "Win Coor. (0, 1) - (4, -0.1)"

Text2.Text = "Win Coor. (0, 10) - (4, -0.1)"

End Sub

 

Private Sub Command2_Click()

End

End Sub

 

Private Sub Form_Load()

Form1.Scale (0, 6)-(4, -1)

End Sub

 

 

 

1

Hosted by www.Geocities.ws

1