Berechnung der niedrigsten monatlichen Zahlung mit der Bisektionssuche in Python

8

Ich versuche, die minimale monatliche Zahlung zu berechnen, um ein Darlehen mit dem folgenden zu bezahlen:

%Vor%

Ich scheine jedoch in einer Art Endlosschleife zu stecken, in der meine Variable guess nicht aktualisiert wird. Wie kann ich die Endlosschleife verlassen und meine guess Variable aktualisiert haben?

Das Problem war in meiner Mathematik. Ich wollte sagen

%Vor%

Danke für die Hilfe allen!

    
Amber Roxanna 18.03.2013, 19:09
quelle

7 Antworten

5

Ich denke, dass diese Lösung funktionieren sollte,

%Vor%     
Wh0RU 01.12.2013 12:09
quelle
4

Wenn du MITx trainierst und den vorherigen Test abgeschlossen hast (nur um 10 zu raten), bist du ein kleiner Schritt, um es zu bekommen. Brauchen Sie nur einige Anpassungen während der Bedingung und überprüfen Sie die jährlichen Ergebnisse.

Über halbierte Suche Ich werde versuchen, das Konzept zu klären. Sie haben immer zwei Extremitäten, das Minimum und das Maximum. Und wird immer in der Mitte der Extremitäten anfangen zu raten.

Nach der ersten Schätzung müssen Sie die Extremitäten aufgrund der Jahresergebnisse anpassen. Wenn Sie nach einem Jahr das Minimum für Getränke, Mädchen, Programmbücher und andere Dinge bezahlen, die Sie nicht bezahlt haben, müssen Sie das Minimum erhöhen. Ansonsten Wenn Sie zum Beispiel im 10. Monat den Gesamtbetrag bezahlt haben, müssen Sie im nächsten Jahr mehr trinken und neue Mädchen kennenlernen !!! nur Spaß ... Sie müssen das Minimum verringern. Dies ist der Scheck, den Sie nach einem Jahr der harten Zahlungen machen müssen

In der Übung haben wir:

  • Balance und annualIterestRate = gegeben (müssen wir uns nicht kümmern)
  • Minimum (Untergrenze) = Balance / 12
  • Maximum (obere Grenze) = (Saldo x (1 + monatlicher Zinssatz) ** 12) / 12.0

Die erste Schätzung ist (Minimum + Maximum) / 2 Ich habe rateMinimum also:

%Vor%

Sie beginnen also mit der ersten Schätzung (rateMinimum). Nach einem Jahr werden Sie den Rest überprüfen. Wenn der Rest negativ ist, bedeutet das, dass Sie zu viel bezahlt haben. Sie müssen die monatliche Zahlung verringern. Andererseits, wenn nach einem Monat der Rest positiv ist (zum Beispiel mehr als Ihre Genauigkeit (zB 0,10)), müssen Sie die monatliche Zahlung verringern, okay?!

Versuchen, das Denken zu entwerfen .....

%Vor%

Wenn nach einem Jahr der "Rest" negativ ist (zum Beispiel). Bedeutet, dass das 'guessMinimum' zu viel ist !!! Du brauchst ... nicht du, das PROGRAMM !! Das Programm muss es anpassen, senken Sie das Minimum so ......

%Vor%

Sorry Leute. Ich habe versucht, ein Bild einzufügen, aber als neues Mitglied. Ich konnte nicht. brauche mindestens 10 Ruf .... hilf mir !!!! zu viel Arbeit, um Zeichen zu benutzen !!!!

Und der CODE muss diese harte Arbeit machen, um das Minimum anzupassen, bis das "Bleibend" akzeptabel ist (innerhalb deiner Genauigkeit, oder Epsilon, oder irgendein Buchstabe oder eine Variable oder .. okay.:)

Nachdem wir das Konzept und die Zeichnungen verstanden haben, schauen wir uns den CODE an.

%Vor%

Das ist es.

    
smutans 16.01.2015 17:16
quelle
3

Um Fehler wie diese herauszufinden, ist es eine gute Methode, etwas Druck hinzuzufügen, zum Beispiel habe ich Ihrem Code folgendes hinzugefügt:

%Vor%

Dann sehen Sie, was passiert, und Sie können herausfinden, was vor sich geht. Wie sich herausstellt:

%Vor%

berechnet eine obere Grenze, die zu niedrig ist. Vielleicht hast du gemeint:

%Vor%     
Winston Ewert 18.03.2013 19:38
quelle
3

Ich habe Ihren Code folgendermaßen geändert:

%Vor%

Ein paar Notizen: Ich habe "hi" und "lo" auf "high" und "low" geändert. Es ist besser, Variablennamen nicht zu kürzen, da abgeschnittene Variablennamen weniger lesbar sind.

Ich habe Debug-Anweisungen hinzugefügt, die die Werte verschiedener Variablen zeigen.

Hier war das Ergebnis des obigen:

%Vor%

Daraus können Sie erkennen, dass Ihr niedriger Wert zu Ihrem hohen Wert konvergiert. Mit anderen Worten, Ihr anfänglich hoher Wert ist nicht hoch genug. Sobald sie denselben Wert haben, ändert die Schleife nichts und wird für immer fortfahren.

Ich denke diese Zeile:

%Vor%

sollte lauten:

%Vor%

da ich denke, dass Sie ein Gleichgewicht zwischen 0 und -epsilon und nicht weniger als -epsilon

wollen

Auch, wie @WinstonEwert angemerkt hat:

%Vor%

sollte

sein %Vor%     
mydogisbox 18.03.2013 19:54
quelle
1

Hier ist, was ich herausgefunden habe, das funktioniert. Normalerweise schreibe ich Funktionen für diese Art von Dingen, so dass es wiederverwendet werden kann, auch wenn ich es nicht tun muss, weil es mir die Angewohnheit macht, es zu tun, und gibt mir zusätzliche Übung mit ihnen.

%Vor%     
Matt E 28.01.2016 17:41
quelle
0
%Vor%     
Obrad 13.11.2016 00:35
quelle
0

Antwort von Python 3:

%Vor%     
Woodbury Shortridge 18.06.2017 14:41
quelle

Tags und Links