Предупреждение, я только начал изучать Python, поэтому, пожалуйста, помните о моем коде для начинающих.
Итак, в курсе MIT6_0001 по питону.Вы столкнулись с проблемой, когда вы должны найти «оптимальную месячную норму сбережений» для первоначального взноса 25% на дом за 1 миллион долларов в течение 36 месяцев, используя алгоритм поиска по разделению пополам, где ваша начальная зарплата составляет 150 000 иполугодовой рост 7%.Вы также должны учитывать ежегодную рентабельность инвестиций 4% на ваши сбережения.
Я работаю над этим уже неделю.сначала я попробовал это без цикла for, и это в значительной степени вернуло наилучшую норму сбережений как 100%, в чем заключается моя главная проблема, я не могу обойти тот факт, что каждый раз, когда я делю пополам значение, оно всегда будет низким, поэтомуон просто пытается приблизиться и приблизиться к 1, пока значение epsilon не будет достигнуто в цикле while.Я серьезно теряю сон из-за этого, пожалуйста помогите
total_cost = 1000000
annual_salary =150000
current_savings = 0
epsilon = 100
low = 0
high = 10000
savings_rate= (low + high)/2
down_payment = .25 * total_cost
raise_rate = .07
month_count = 0
r = .04/12
step_count = 0
while current_savings-down_payment <= epsilon :
for i in range(36):
if month_count != 0 and month_count % 6 == 0:
annual_salary += annual_salary * raise_rate
current_savings += current_savings * r + (annual_salary/12) * (savings_rate/10000)
if current_savings < down_payment:
low = savings_rate
print("low =",low)
else:
high = savings_rate
print("high =",high)
month_count += 1
savings_rate= (low + high)/2
step_count += 1
print("Best savings rate: ",savings_rate/10000)
print("Steps in bisection sear: ",step_count)
ожидаемый результат Лучшая норма сбережений: 0,4411
Шаги в поиске деления пополам: 12
фактическая Лучшая норма сбережений: 0,5
Шаги по поиску пополам: 1