Toggle navigation
Fórum Root.cz
Domů
Nápověda
Vyhledávání
Přihlásit
Registrovat
Fórum Root.cz
Hlavní témata
Vývoj
Python - metoda bisekce
« předchozí
další »
+
Tisk
Stran: [
1
]
Python - metoda bisekce
3 Odpovědí
1878 Zhlédnutí
Radim
Python - metoda bisekce
«
kdy:
11. 10. 2012, 14:27:42 »
Ahoj,
potrebuji pomoc s Pythonem. Mam za ukol spocitat mesicni splatky kreditni karty, tak ze cela dluzna castka musi byt zaplacena behem 12 mesicu a to vcetne uroku. S kazdou mesicni splatkou se snizuji uroky, ktere je potreba doplatit.
Musim pouzit metodu bisekce.
Dluzna castka je = 320000
rocni urok je = 0.2
spravny vysledek je = 29157.09 (coz je mesicni splatka)
Muzete mi nekdo pomoci s kodem? Zatim mam tohle ale nefunguje to spravne.
balance = 320000
annualInterestRate = 0.2
originalBalance = balance
monthly_interest = annualInterestRate / 12
x = balance
epsilon = 0.01
numGuesses = 0
low = originalBalance/12
high = (originalBalance*(1 + monthly_interest)**12)/12
ans = (high + low)/2.0
while abs(ans**2 - x) >= epsilon:
print('low = ' + str(low) + ' high = ' + str(high) + ' ans = ' + str(ans))
numGuesses += 1
for month in range(0, 12):
balance = (originalBalance - ans) * (1+monthly_interest)
if ans**2 < 0:
low = ans
else:
high = ans
ans = (high + low)/2.0
print('numGuesses = ' + str(numGuesses))
print(str(ans) + ' is close to square root of ' + str(x))
IP zaznamenána
Reklama
ans^2<0
Re:Python - metoda bisekce
«
Odpověď #1 kdy:
11. 10. 2012, 15:40:03 »
ahoj, co mas v kodu konkretne zle, nevim, ale zda se me podezrela tato konstrukce:
if ans**2 < 0:
low = ans
Nevim, ale ucili me, ze cokoli na druhou bude vzdy kladne cislo, taze se to do teto vetve nikdy nedostane.
IP zaznamenána
neplatnyudaj
Re:Python - metoda bisekce
«
Odpověď #2 kdy:
11. 10. 2012, 16:29:47 »
http://stackoverflow.com/questions/12804670/using-bisection-search-to-determine
IP zaznamenána
Radim
Re:Python - metoda bisekce
«
Odpověď #3 kdy:
11. 10. 2012, 17:40:31 »
Už to mám
balance = 999999
annualInterestRate = 0.18
originalBalance = balance
monthly_interest = annualInterestRate / 12
x = balance
epsilon = 0.01
low = originalBalance/12
high = (1 + annualInterestRate) * low
ans = (high + low)/2.0
while abs(x) > epsilon:
x = balance
for month in range(0, 12):
x = (x - ans) * (1+monthly_interest)
if x > 0:
low = ans
else:
high = ans
ans = (high + low)/2.0
print 'Lowest Payment:', round(ans, 2)
IP zaznamenána
+
Tisk
Stran: [
1
]
« předchozí
další »
Fórum Root.cz
Hlavní témata
Vývoj
Python - metoda bisekce