2016年8月18日 星期四

python 程式設計50題測試範例-3

3、一個數的平方根可以使用下列公式,反覆計算近似得出
  NG=0.5(LG+N/LG)
  其中NG代表下一個猜測值,LG代表最後猜測值。寫一程式實做出過程的程
  式。(容忍值設定為0.005)
  提示:初次猜測值將是LG的開始值。程式將使用上述公式計算NG的值。若是
          NG與LG的差值,小於可容忍值,則程式結束,NG即為平方根。否則,
          NG將變成LG,並重複處理前述的計算。

3.
輸入範例一
4
輸出範例一
1 次逼近,lg=2.500000,ng=2.050000
2 次逼近,lg=2.050000,ng=2.000610
3 次逼近,lg=2.000610,ng=2.000000
4 的平方根為 2
輸入範例二
7
輸出範例二
1 次逼近,lg=4.000000,ng=2.875000
2 次逼近,lg=2.875000,ng=2.654891
3 次逼近,lg=2.654891,ng=2.645767
4 次逼近,lg=2.645767,ng=2.645751
7 的平方根為 2.64575
輸入範例三
99
輸出範例三
Enter n: 99
1 次逼近,lg=50.000000,ng=25.990000
2 次逼近,lg=25.990000,ng=14.899579
3 次逼近,lg=14.899579,ng=10.772031
4 次逼近,lg=10.772031,ng=9.981249
5 次逼近,lg=9.981249,ng=9.949924
6 次逼近,lg=9.949924,ng=9.949874
99 的平方根為 9.94987
輸入範例四
6553777
輸出範例四
1 次逼近,lg=3276889.000000,ng=1638445.500000
2 次逼近,lg=1638445.500000,ng=819224.749998
3 次逼近,lg=819224.749998,ng=409616.374986
4 次逼近,lg=409616.374986,ng=204816.187389
5 次逼近,lg=204816.187389,ng=102424.092862
6 次逼近,lg=102424.092862,ng=51244.039768
7 次逼近,lg=51244.039768,ng=25685.966609
8 次逼近,lg=25685.966609,ng=12970.558355
9 次逼近,lg=12970.558355,ng=6737.919689
10 次逼近,lg=6737.919689,ng=3855.295190
11 次逼近,lg=3855.295190,ng=2777.618437
12 次逼近,lg=2777.618437,ng=2568.556752
13 次逼近,lg=2568.556752,ng=2560.048708
14 次逼近,lg=2560.048708,ng=2560.034570
15 次逼近,lg=2560.034570,ng=2560.034570
6.55378e+006 的平方根為 2560.03
請按任意鍵繼續 . . .

NG0.5LG+N/LG
次數
N
LG
N/LG
NG
abs(LG-NG)
0.05
1
4
1
4
2.5
1.5
 
2
4
2.5
1.6
2.05
0.45
 
3
4
2.05
1.95122
2.0006098
0.049390244
 
 
4
2.00061
1.99939
2.0000001
0.000609707
 
NG0.5LG+N/LG
次數
N
LG
N/LG
NG
abs(LG-NG)
0.05
1
7
1
7
4
3
 
2
7
4
1.75
2.875
1.125
 
3
7
2.875
2.434783
2.6548913
0.220108696
 
4
7
2.654891
2.636643
2.645767
0.009124256
 
NG0.5LG+N/LG
次數
N
LG
N/LG
NG
abs(LG-NG)
0.05
1
99
1
99
50
49
 
2
99
50
1.98
25.99
24.01
 
3
99
25.99
3.809157
14.899579
11.09042132
 
4
99
14.89958
6.644483
10.772031
4.127547979
 
5
99
10.77203
9.190467
9.9812492
0.790781788
 
6
99
9.981249
9.918598
9.9499237
0.031325517
 
7
99
9.949924
9.949825
9.9498744
4.93288E-05
 



程式

#coding:Big5

print ('           python 程式設計50題測試範例-3 ')
print (' ') 
print (' 一個數的平方根可以使用下列公式,反覆計算近似得出')
print ('                     NG=0.5(LG+N/LG)  ')
print ('其中NG代表下一個猜測值,LG代表最後猜測值。')
print ('寫一程式實做出過程的程式。(容忍值設定為0.005)')
print ('提示:初次猜測值將是LG的開始值。程式將使用上述公式計算NG的值。')
print ('          若是NG與LG的差值,小於可容忍值,則程式結束,NG即為平方根。')
print ('          否則,NG將變成LG,並重複處理前述的計算。')

LG =1

while True:
    N = input('請輸入 數字:')
    try:
       N = int(N)
    except ValueError:
       print ('這是不合法的輸入.  請再輸入一次...')
       continue
    if N > 0:
       break
NG=0.5*(LG+(N/LG))

T=abs(LG-NG)
i=1
while T>=0.05 :
         LG=NG
         NG=0.5*(LG+(N/LG))
         T=abs(LG-NG)
         i=i+1
         
print ('反覆計算次數 :  %d' % i )         
print ('此數的平方根 :  %8.5f' % NG )

   
結果

================== RESTART: D:/程式語言 Python 入門/50題/ex50-3.py ==================
           python 程式設計50題測試範例-3 
 一個數的平方根可以使用下列公式,反覆計算近似得出
                     NG=0.5(LG+N/LG)  
其中NG代表下一個猜測值,LG代表最後猜測值。
寫一程式實做出過程的程式。(容忍值設定為0.005)
提示:初次猜測值將是LG的開始值。程式將使用上述公式計算NG的值。
          若是NG與LG的差值,小於可容忍值,則程式結束,NG即為平方根。
          否則,NG將變成LG,並重複處理前述的計算。
請輸入 正負數字:7
反覆計算次數 :  4
此數的平方根 :   2.64577
>>> 
================== RESTART: D:/程式語言 Python 入門/50題/ex50-3.py ==================
           python 程式設計50題測試範例-3 
 一個數的平方根可以使用下列公式,反覆計算近似得出
                     NG=0.5(LG+N/LG)  
其中NG代表下一個猜測值,LG代表最後猜測值。
寫一程式實做出過程的程式。(容忍值設定為0.005)
提示:初次猜測值將是LG的開始值。程式將使用上述公式計算NG的值。
          若是NG與LG的差值,小於可容忍值,則程式結束,NG即為平方根。
          否則,NG將變成LG,並重複處理前述的計算。
請輸入 正負數字:99
反覆計算次數 :  6
此數的平方根 :   9.94992
>>> 

沒有留言:

張貼留言

2024_09 作業3 以Node-Red 為主

 2024_09 作業3  (以Node-Red 為主  Arduino 可能需要配合修改 ) Arduino 可能需要修改的部分 1)mqtt broker  2) 主題Topic (發行 接收) 3) WIFI ssid , password const char br...