1:二分法
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),臨洮企業(yè)網(wǎng)站建設(shè),臨洮品牌網(wǎng)站建設(shè),網(wǎng)站定制,臨洮網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,臨洮網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
求根號5
a:折半:?????? 5/2=2.5
b:平方校驗:? 2.5*2.5=6.255,并且得到當前上限2.5
c:再次向下折半:2.5/2=1.25
d:平方校驗:1.25*1.25=1.56255,得到當前下限1.25
e:再次折半:2.5-(2.5-1.25)/2=1.875
f:平方校驗:1.875*1.875=3.5156255,得到當前下限1.875
每次得到當前值和5進行比較,并且記下下下限和上限,依次迭代,逐漸逼近平方根:
代碼如下:
import math
from math import sqrt
def sqrt_binary(num):
x=sqrt(num)
y=num/2.0
low=0.0
up=num*1.0
count=1
while abs(y-x)0.00000001:
print count,y
count+=1
if (y*ynum):
up=y
y=low+(y-low)/2
else:
low=y
y=up-(up-y)/2
return y
print(sqrt_binary(5))
print(sqrt(5))
2:牛頓迭代
仔細思考一下就能發(fā)現(xiàn),我們需要解決的問題可以簡單化理解。
從函數(shù)意義上理解:我們是要求函數(shù)f(x) = x2,使f(x) = num的近似解,即x2 - num = 0的近似解。
從幾何意義上理解:我們是要求拋物線g(x) = x2 - num與x軸交點(g(x) = 0)最接近的點。
我們假設(shè)g(x0)=0,即x0是正解,那么我們要做的就是讓近似解x不斷逼近x0,這是函數(shù)導數(shù)的定義:
從幾何圖形上看,因為導數(shù)是切線,通過不斷迭代,導數(shù)與x軸的交點會不斷逼近x0。
1、創(chuàng)建python文件,testmath.py;
2、編寫python代碼,計算根號2;
import?math
print(math.sqrt(2))
3、右擊,選擇‘在終端中運行Python文件’;
4、查看執(zhí)行結(jié)果為1.4142135623730951;
二次方根,表示為〔√ ̄〕。
如:數(shù)學語言為:√ ̄16=4。語言描述為:根號下16=4。
以下實例為通過用戶輸入一個數(shù)字,并計算這個數(shù)字的平方根:#-*-coding:UTF-8-*-#Filename:test.pynum=float(input('請輸入一個數(shù)字:'))num_sqrt=num**0.5print('%0.3f的平方根為%0.3f'%(num,num_sqrt))。執(zhí)行以上代碼輸出結(jié)果為:$pythontest.py請輸入一個數(shù)字:44.000的平方根為2.000,在該實例中,我們通過用戶輸入一個數(shù)字,并使用指數(shù)運算符**來計算該數(shù)的平方根。
from cmath import sqrt
a =int(input('輸入一個數(shù)字: '))
b =int(input('輸入一個數(shù)字: '))
c =int(input('輸入一個數(shù)字: '))
d = (b **2) -4 * a * c
#方法一:if判別語句
if a ==0:
print('the number a can not be zero!')
else:
x1 = (-b + sqrt(d))/(2 * a)
x2 = (-b - sqrt(d))/(2 * a)
#?。。?!print('x1和x2的值分別為{:0.3f} 和 {:0.3f}'.format(x1,x2))會出現(xiàn)錯誤,因為復雜格式不允許零填充?。?!
print('x1和x2的值分別為{:.3f} 和 {:.3f}'.format(x1,x2))
#方法二:用異常來進行處理
try:
x1 = (-b + sqrt(d)) / (2 * a)
x2 = (-b - sqrt(d))/(2 * a)
print('x1和x2的值分別為{:.3f} 和 {:.3f}'.format(x1, x2))
except ????ZeroDivisionError:
print('the number a can not be zero!')
import numpy as np
def solve_quad(a,b,c):
if a == 0:
print('您輸入的不是二次方程!')
else:
delta = b*b-4*a*c
x = -b/(2*a)
if delta == 0:
print('方程有惟一解,X=%f'%(x))
return x
elif delta 0:
x1 = x-np.sqrt(delta)/(2*a)
x2 = x+np.sqrt(delta)/(2*a)
print('方程有兩個實根:X1=%f,X2=%f'%(x1,x2))
return x1,x2
else:
x1 = (-b+complex(0,1)*np.sqrt((-1)*delta))/(2*a)
x2 = (-b-complex(0,1)*np.sqrt((-1)*delta))/(2*a)
print(x1,x2)
return x1,x2
Python
是完全面向?qū)ο蟮恼Z言。函數(shù)、模塊、數(shù)字、字符串都是對象。并且完全支持繼承、重載、派生、多繼承,有益于增強源代碼的復用性。Python支持重載運算符和動態(tài)類型。相對于Lisp這種傳統(tǒng)的函數(shù)式編程語言,Python對函數(shù)式設(shè)計只提供了有限的支持。有兩個標準庫(functools, itertools)提供了Haskell和Standard ML中久經(jīng)考驗的函數(shù)式程序設(shè)計工具。
運用input(), float(), print()以及math模塊的sqrt()就可以了,具體如下:
源代碼
如有幫助,請采納?。?!
# 導入模塊
import math
# 讀取輸入,整數(shù)或小數(shù)
a = float(input("請輸入a值:"))
b = float(input("請輸入b值:"))
c = float(input("請輸入c值:"))
# 判斷是否有實數(shù)解
if (b ** 2 - 4 * a * c) 0: ?# 無實數(shù)解
print("該二次函數(shù)無實數(shù)解?。?!")
else: ?# 有實數(shù)解
x1 = round((- b + math.sqrt(b ** 2 - 4 * a * c)) / (2 * a), 2)
x2 = round((- b - math.sqrt(b ** 2 - 4 * a * c)) / (2 * a), 2)
print("二次函數(shù)的解為:")
print("x1 =", x1)
print("x2 =", x2)