2017-03-01 4 views
0

二分法の6回の反復でsqrt(2)を解くために二分法を行うプログラムを書くことが任されています。ここに私のコードです。道に沿って、または最後に値を印刷することができませんし、理由もわかりません。sqrt(2)の二分法メソッドプログラム

import math 
>>> def f(x): 
    return (x**2)-2 

>>> def bisect (a,b,n): 
    while n < 6: 
     c=(a+b)/2 
    if f(c) == 0: 
     print [('Root is: ', c)] 
    elif f(a)*f(b) > 0: 
     b=c 
     n=(n+1) 
     print [('n: ',n,' c: ',c)] 
    else: 
     a=c 
     n=(n+1) 
     print [('n: ',n,' c: ',c)] 


>>> print bisect (0,1,0) 
SyntaxError: invalid syntax 
>>> print bisect (0,1,0): 

SyntaxError: invalid syntax 
>>> 

答えて

0

すぐに2つの問題があります。まず、Python 3では、印刷するものの周りにかっこを使用する必要があります(つまり、print(bisect(0,1,0)))。これが構文エラーの原因です。第2に、インデントが間違っていない限り、bisect関数はn < 6の間に繰り返されますが、nは決して増加しないので、無限ループから始まります。