50、試設計一程式,利用二分逼近法求一數值a之開7次方根。
所謂二分逼近法,解釋如下:
設某數x位於線段A。B。=[a。﹐b。]內,(亦即a。≦x≦b。),vhbdi vfhae
hjhneA。B。等分為兩段,亦即[a,(a。+ b。)/2]和[(a。+ b。)/2,b。];而把x
所在的那一段稱為A1B1=[a1,b1](如果x=(a。+
b。)/2,則任取其中一段),換句話
說,當a。≦x≦(a。+ b。)/2時,a1=a。,b1=(a。+ b。)/2,當(a。+ b。)/2≦
x≦b。時,a1=(a0+b0)/2,b1=b。,這樣逐次二等分而縮小範圍,就可得到x,
此法為二分逼近法。
public static double sqrt(double x) throws Exception
{
double small = 0.0000001;
double low, high;
if (x < 0) throw new Error();
if (x < 1) {
low = 0; high = 1; // 若 0 < x < 1 則其平方根必然介於 0 與 1之間。
} else {
low = 1; high = x; // 若 x > 1 , 則其平方根必然介於 1 與 x 之間。
}
while (high - low > small) // 不斷逼近,直到範圍夠小為止。
{
double mid = (low + high) / 2;
if (mid*mid > x) // 解小於 mid , 將上限調為 mid
high = mid;
else
low = mid; // 解大於 mid , 將下限調為 mid
}
return low;
}
}
50.
|
範例一
|
範例二
|
範例三
|
範例四
|
範例五
|
輸入
|
1
|
0.1
|
0
|
-125
|
-0.285
|
輸出
|
1.000000
|
0.719686
|
0.000000
|
-1.993235
|
-0.835835
|
#coding=utf8
a=1
while(a != 0):
print("50-1、試設計一程式,利用二分逼近法求一數值a之開7次方根。")
print("========================================================")
while True:
a=float(input("請輸入數值 0 < a < 10000:"))
try:
a= float(a)
except ValueError:
print ('這是不合法的輸入. 請再輸入一次...')
continue
if ( a < 10000):
break
#==================
sign=0
small=float(0.0000001)
if (a<0):
a=abs(a)
sign=1
if (a<1) :
low=0
high=1
else:
low=1
high=a
while ( (high-low) > small):
mid=float((low+high)/2)
if (mid*mid*mid*mid*mid*mid*mid > a):
high=mid
else:
low=mid
if (sign==1):
print("一數值a之開7次方根: -",low)
else:
print("一數值a之開7次方根: ",low)
#==================
================= RESTART: D:/程式語言 Python 入門/50題/Ex50-50.py =================
50-1、試設計一程式,利用二分逼近法求一數值a之開7次方根。
========================================================
請輸入數值 0 < a < 10000:1
一數值a之開7次方根: 1
50-1、試設計一程式,利用二分逼近法求一數值a之開7次方根。
========================================================
請輸入數值 0 < a < 10000:0.1
一數值a之開7次方根: 0.7196856141090393
50-1、試設計一程式,利用二分逼近法求一數值a之開7次方根。
========================================================
請輸入數值 0 < a < 10000:-125
一數值a之開7次方根: - 1.9932352639734745
50-1、試設計一程式,利用二分逼近法求一數值a之開7次方根。
========================================================
請輸入數值 0 < a < 10000:-0.285
一數值a之開7次方根: - 0.8358352184295654
50-1、試設計一程式,利用二分逼近法求一數值a之開7次方根。
========================================================
請輸入數值 0 < a < 10000:0
一數值a之開7次方根: 0
>>>
沒有留言:
張貼留言