2013-11-07 3 views
1

Я решение для чувствительности денежных потоков в определенный период времени, и делать, что я хочу, чтобы взять мой код:Анализ чувствительности решатель питон

while count < (len(netcf)): 
    cpv = float(netcf[count]/((1+MARR)**(time[count])))     
    sum = round((sum+cpv),2)     
    count=count+1 
print "Net Present Value = $", sum 

Это вычисляющий денежный поток без анализа чувствительности и что Я хочу сделать, это взять определенные периоды времени, сказать время 0 для простоты и умножить значения времени (1 + x) и решить для значения «x», чтобы при добавлении нового значения к сумме другого зацикленными значениями вместо прежнего значения (без 1 + x) он приносит текущую ценность как можно ближе к 0.

До сих пор я пытался использовать «while True» петли для решения x, но мне не повезло. У меня также есть проблема с тем, чтобы цикл не вычислял значение w/o (1 + x) и только используя значение с (1 + x) при добавлении к сумме. Любые предложения на этом этапе были бы полезны, поскольку я никогда не решался для неизвестного в python.

+0

Ваше описание того, что вы хотели бы сделать, слишком расплывчато и искажено, чтобы понять. Не могли бы вы объяснить, что вы хотели бы сделать более ясным образом? – taleinat

+0

В приведенном выше коде вместо цикла 'while' с' count = count + 1' в конце используйте цикл 'for':' для count в диапазоне (len (netcf)): '. Еще лучше, просто перебирайте последовательности 'netcf' и' time' вместе: 'for (netcff_value, time_value) в zip (netcf, time):'. – taleinat

+0

@taleinat yeah, я изо всех сил пытался написать это только потому, что мне сложно попытаться выйти из текста. Код, который я перечислял, отлично работает для меня, но я хотел бы сохранить его от итерации с определенным значением (например, 5, 3, 7 или 0, просто случайным), и я хочу вытащить итерацию в это время и выполнить вторую вычисление, где я бы умножался на (1 + x) и решал значение x, которое сделало бы значение после этого вычисления, добавив к сумме значений из цикла while, приведёт общую сумму, близкую к 0 –

ответ

0

Если у вас есть сумма, и вы хотите узнать, какое значение добавить к ней, чтобы получить нуль, это всего лишь -sum. Теперь, если вы хотите получить значение x, для которого (1 + x) == -sum, решение равно x = -sum - 1.

EDIT: Я получаю ощущение, что это не то, что вы пытаетесь решить, хотя ...

EDIT2: Что касается остановки цикла, а затем делать второй расчет, просто используйте заявление break, например:

stop_at = random.choice(range(len(netcf))) 
while count < (len(netcf)): 
    cpv = float(netcf[count]/((1+MARR)**(time[count])))     
    sum = round((sum+cpv),2)     
    if count == stop_at: 
     break 
    count=count+1 

print "Net Present Value = $", sum 

# now do the second calculation ... 
Смежные вопросы