2015-02-24 2 views
0

Я использую программу метод Меллера, который я нашел в этой ссылке:Изменение параметра по уравнению с использованием метода Мюллера

http://adorio-research.org/wordpress/?p=297

В конце подпрограммы она вычисляет корень любого FUCTION вам вход:

if __name__ == "__main__": 
    def f(z): 
     return z**3 +1 
xinit = 0.0 
ztol = 1.0e-5 
ftol = 1.0e-5 
maxiter = 100 
wantreal = False 
nroots = 3 

print zermuller(f, xinit, ztol, ftol, maxiter, wantreal, nroots) 

Однако, я хочу, чтобы вычислить для уравнения как

z**3 +w 

, где w будет отличаться от 1 до 2 с шагом 0,1 или что-то в этом роде. Так что я пытался добавить команду, а в виде:

w = 8 
while w < 9 : 
    w += 0.01 # Same as a = a + 1 
if __name__ == "__main__": 
    def f(z): 
     return z**3 +w 
xinit = 0.0 
ztol = 1.0e-5 
ftol = 1.0e-5 
maxiter = 100 
wantreal = False 
nroots = 2 

print zermuller(f, xinit, ztol, ftol, maxiter, wantreal, nroots) 

Но это не делает ничего, вычисляет только для первого значения w, делает любой знает, как я могу сделать его работу, или что было бы неправильно в моей команде while.

+1

'питон Безразлично» t, похоже, нравится, 'не помогает. Не могли бы вы быть более конкретными? – thefourtheye

+0

Там вы идете! «Но он ничего не делает, только вычисляет для первого значения w» – Mac

ответ

0

Ваш код

w = 8 
while w < 9 : 
    w += 0.01 # Same as a = a + 1 

это просто сложный (и приблизительная) альтернатива

w = 9.01 

Вы должны вызвать функцию внутри петли

def f(z): 
    return z**3 + w 

xinit = 0.0 
ztol = 1.0e-5 
ftol = 1.0e-5 
maxiter = 100 
wantreal = False 
nroots = 3 

for i in range(11): 
    w = 8.0 + i/10.0 
    print zermuller(f, xinit, ztol, ftol, maxiter, wantreal, nroots) 
Смежные вопросы