学習日記-MIT[コンピュータ科学とプログラミングの導論]-6
1019 ワード
二分法,ニュートン・ラフソン法,リストの概要
1.二分法(続き):前の授業では、プログラムにバグがあり、xが(0,1)の場合、範囲の調整が適用されないため、反復の過程で平方根を求めることができません.
ここで修正方法:文high=xをhigh=max(x,1)に変更すればよい.
2.Newton-Raphson method Newtonラフソン法:
sqrt(x)の求めに対して,本質はf(guess)=guess*guess−x=0の求めである.
推定数guessでは接線を行い,傾きは2 xであり,x軸との交点値は推定数より解sqrt(x)に近い.
したがって,新しい推測点反復式はguess(i+1)=guess(i)−f[guess(i)]/[2*guess(i)]である.
コードは次のとおりです.
NR法は二分法よりも効率的であることが試験で分かった.
3.リストに関する知識
1)append、remove方法
2)ネスト可能、可変
1.二分法(続き):前の授業では、プログラムにバグがあり、xが(0,1)の場合、範囲の調整が適用されないため、反復の過程で平方根を求めることができません.
ここで修正方法:文high=xをhigh=max(x,1)に変更すればよい.
2.Newton-Raphson method Newtonラフソン法:
sqrt(x)の求めに対して,本質はf(guess)=guess*guess−x=0の求めである.
推定数guessでは接線を行い,傾きは2 xであり,x軸との交点値は推定数より解sqrt(x)に近い.
したがって,新しい推測点反復式はguess(i+1)=guess(i)−f[guess(i)]/[2*guess(i)]である.
コードは次のとおりです.
def squarerootNR(x,epsilon):
"""this function is to return a square root of
x within 100 times iteration and may not
figure out the true answer"""
assert x>=0
assert epsilon>0
x=float(x)
guess=x/2.0
diff=guess**2-x
cnt=1
while abs(diff)>=epsilon and cnt<=100:
guess=guess-diff/(2*guess)
diff=guess**2-x
cnt+=1
assert cnt<=100
print("The square root of %f=%f,iteration:%d"%(x,guess,cnt))
NR法は二分法よりも効率的であることが試験で分かった.
3.リストに関する知識
1)append、remove方法
2)ネスト可能、可変