Sensitivität der Anfangsbedingungen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Gipsyjack
User
Beiträge: 23
Registriert: Samstag 13. November 2010, 20:19

Also ich soll zur Sensitivität der Anfangbedingungen eine iterative Vorschrift berechnen, hab mir gedacht das ich dazu Python nehme weil sie nicht allzu aufwendig ist...

Die Aufgabe war:

Code: Alles auswählen

             2x(t)      ; 2x(t)<=1
x(t+1)= 
             2x(t)-1    ; 2x(t)>1
mit den Anfangswerten 0.815 und 0.816 bzw auf dem intervall I [0,1];

ich habe dazu folgendes Python.Skript erstellt:

Code: Alles auswählen

#/bin/python

import math

n=input()

def theo(n):

	i=0.815

	if n == 0:
		return i

	if theo(n-1)<=1:
		return 2*theo(n-1)
		
	if theo(n-1)>1:
		return 2*theo(n-1)-1
		

print theo(n)
i kann man ja Einfach umändern in den Anfangswert den man will...

das Skirpt funktioniert soweit, aber die Abweichungen die dabei Auftreten nach z.B. 7 Schritten ist

0.815 : 41.32
0.816 : 41.448

==> Abweichung von 0.128

Das ist doch viel zu gering damit die Aufgabe sinnvoll gestellt wäre oder??? Ich geh mal scharf davon aus das mit meinem Skript was nicht stimmt, hoffe Ihr könnt mir helfen.

Und eine bitte noch; könnt ihr mir sagen wie ich mir auch die Werte von allen Zwischenschritten ausgeben lassen kann bzw. in Tabellenform in einer Datei speichern um diese später ggf. zu plotten???

MFG
BlackJack

@Gipsyjack: Eine iterative Vorschrift hast Du da aber nicht umgesetzt. Das ist ja eine rekursive Funktion. Mach das doch mal iterativ. Vielleicht als Generatorfunktion. Dann bekommst Du auch alle Zwischenergebnisse.
Gipsyjack
User
Beiträge: 23
Registriert: Samstag 13. November 2010, 20:19

hab's jetzt so umgeschrieben:

Code: Alles auswählen

#/bin/python

import math

n=input()


for i in range(0,10):
	if n<=1:
		n=2*n
		print n
	if n>1:
		n=2*n-1
		print n
Die Ergebnisse sind dieselben, das wäre doch jetzt auch iterativ oder??
Aber meiner Meinung nach kann es schon allein von den Differenzen der Ergebnisse nicht stimmen.. das ist doch keine grosse Abweichung?!

hier die kompletten Ergebnisse:

Code: Alles auswählen

danny@danny ~ $ python theo1.1.py 
0.815
1.63
2.26
3.52
6.04
11.08
21.16
41.32
81.64
162.28
323.56
646.12
danny@danny ~ $ python theo1.1.py 
0.816
1.632
2.264
3.528
6.056
11.112
21.224
41.448
81.896
162.792
324.584
648.168
BlackJack

@Gipsyjack: Die Bedingungen stimmen bei Dir erstens nicht mit der Formel überein, und zweitens stimmt auch der Programmablauf nicht. Du hast eine Schleife die 10 mal durchlaufen wird, aber insgesamt werden 12 Ergebnisse ausgegeben. Wenn Du im ersten ``if`` `n` so veränderst, dass die Bedingung von zweiten ``if`` zutrifft, werden *beide* ausgeführt.

Edit: Wenn Du mal kurz über die Formel nachdenkst, sollte klar werden, dass die Zahlen auch nie so gross werden dürfen. Die Aufgabenstellung sagt ja auch das Intervall ist auf 0 bis 1 beschränkt. Damit kann die Abweichung auch nie grösser als 1 werden.
Antworten