Was ist eine schrittweise Annäherung in der Informatik?

3 Antworten

Ein einfaches Beispiel: Die "Errechnung" einer Wurzelzahl, beispielsweise Wurzel aus 10. Ich schreibe das hier in Anführungsstrichen, weil ein Taschenrechner, Computer oder wer auch immer die Wurzel gar nicht exakt ausrechnet, sondern sich dem gesuchten Wert eben nur annähert.

Dies läuft so, dass ein bestimmter rekursiver Algorithmus (rekursiv = sich selbst aufrufend, Berechnung basiert auf letztem Ergebnis) für eine Iterationszahl i aufgerufen wird. Ich mache am besten Mal ein konkretes Beispiel anhand der Wurzelberechnung:

Für diese wählt man sich erstmal zwei Teiler des Radikanden (der Zahl unter der Wurzel - hier 10), deren Produkt der Radikand ist. Das könnten 2 und 5 sein, es gilt, je näher der letzendlichen Wurzelzahl, desto genauer, aber da der Computer das Endergebnis ja noch nicht kennt und Teilerzerlegung wiederum aufwendig wäre, nehmen wir einfach mal 1 und 10.
Nun rechnet man sich deren Mittelwert aus: (1 + 10)/2 = 5.5. Das wäre unser vorläufiges Ergebnis, es gilt nun, dieses zu verfeinern. Indem man erneut den Radikanden durch dieses Ergebnis teilt, erhält man wieder zwei Teiler des Radikanden, die miteinander multipliziert diesen ergeben. Wieder wird deren Mittelwert gebildet, diesmal kommt rund 3,7 raus. Noch eine Runde später ((10/3.7+3.7)/2) kommt 3,2 heraus, dessen Quadrat mit 10,2 gar nicht mehr so weit von der angestrebten 10 entfernt ist. :-)

Du siehst also, abhängig von der Anzahl der Wiederholungen, der Iterationszahl, wird unser Ergebnis immer genauer. Tatsächlich erreicht man den exakten Wert von Wurzel 2 jedoch nie bzw. die hierfür benötigte Iterationszahl strebt gegen unendlich - nicht umsonst ist Wurzel 2 eine irrationale Zahl.
Dieses Verfahren wird nun schrittweise Annäherung, oder auch Approximation, genannt.

Wenn du das Verlangen danach (oder die Aufgabe dazu) hast, kannst du das auch relativ einfach nachprogrammieren. Falls du keinen Ansatz findest, hier ein Pseudocode:

Methode WurzelApproximieren(Radikand: double/float, Teiler1: double/float, Iteration: int):

result = ( Teiler1 + Radikand/Teiler1 ) / 2;
if Iteration > 1
return WurzelApproximieren(Radikand, result, Iteration - 1);
  // 'REM Daher iterativer Code, weil er sich selbst aufruft!
else
return result;

Ungetestet, aber in etwa so sähe das aus.

Ich hoffe, ich konnte dir helfen - bei Fragen bitte kommentieren, ich helfe gerne :-)

Mit freundlichen Grüßen,
KnorxThieus (♂)

Woher ich das weiß:Hobby – Poweruser mit dem Bestreben, jedes System auszureizen

Es ist das gleiche, was es in der Mathematik ist: Das Finden ungefährer Lösungen durch schematisches Wiederholen einer Folge von Rechenschritten. Ein Fachbegriff dafür ist Approximation. Für Computer eignen sich solche Verfahren deshalb gut, weil sie zwar in der Ausführung mühsam sind, aber durch überschaubare Vorschriften (lat.: Programme) beschrieben werden können.

https://de.wikipedia.org/wiki/Approximation

Befasse dich mit Logik. Bevor man direkt empfiehlt Programmiersprachen zu erlernen finde ich ist vorher eine Gewisse Basisdenkweise nötig um mit dem Programmieren dann anzufangen ohne nach einer Stunde frustriert aufzugeben. Ich selber habe diese Grundlegende Ansätze sehr gut bei 

  1.  Microsoft Excel
  2.  Robot Karol

gelernt.

Bei Excel war es immer super in der Formeleingabe zu programmieren welche Zahlen unter bestimmten Bedingungen wie verrechnet werden. Hat viel Spaß gemacht und hat einen so ein bisschen eingeleitet in das "Programmieren".

Robot Karol ist ein Programm womit man einen Lego-Robotor  in seiner eigenen Welt programmiert und ihn damit Anweisungen gibt seine Welt aufzubauen. Damit ist verschiedenes Möglich und war für mich die Bestätigung das ich wirklich Programmieren will. Ich kanns nur empfehlen, habe zwar beides in der Schule gehabt aber ich schätze das Youtube dabei genauso, wenn nicht noch mehr hilft als der Lehrer damals. Also, viel Spaß dir und weiterhin viel Glück!

Woher ich das weiß:Berufserfahrung – Beruf, Schule, Hobby und eigene Erfahrungen
KnorxyThieus  03.04.2016, 17:35

Woher wisst/glaubt ihr alle, dass es um das Erlernen von Programmiersprachen geht? Ich habe das in meiner Antwort unten als Verständnisfrage des Approximationsverfahrens aufgefasst ...

?
1
ceevee  03.04.2016, 19:34
@KnorxyThieus

Vielleicht beantworten sie fälschlicherweise die Frage: "Was ist eine schrittweise Annäherung an die Informatik?" ;)

Ich würde unter "schrittweise Annäherung" auch erstmal das mathematische Verfahren aus deiner Antwort verstehen.

3
Berny96  03.04.2016, 19:36
@ceevee

In der Tat dachte ich der Fragesteller sucht eine Annäherung an die Informatik.

0
KnorxyThieus  03.04.2016, 20:24
@Berny96

Wenn sich Monster mal zu Wort meldet, haben wir vielleicht auch noch Gewissheit :)

0