1:二分法
创新互联公司是一家集网站建设,临洮企业网站建设,临洮品牌网站建设,网站定制,临洮网站建设报价,网络营销,网络优化,临洮网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
求根号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(x) = x²,使f(x) = num的近似解,即x² - num = 0的近似解。
从几何意义上理解:我们是要求抛物线g(x) = x² - num与x轴交点(g(x) = 0)最接近的点。
我们假设g(x0)=0,即x0是正解,那么我们要做的就是让近似解x不断逼近x0,这是函数导数的定义:
从几何图形上看,因为导数是切线,通过不断迭代,导数与x轴的交点会不断逼近x0。
1、创建python文件,testmath.py;
2、编写python代码,计算根号2;
import math
print(math.sqrt(2))
3、右击,选择‘在终端中运行Python文件’;
4、查看执行结果为1.4142135623730951;
二次方根,表示为〔√ ̄〕。
如:数学语言为:√ ̄16=4。语言描述为:根号下16=4。
以下实例为通过用户输入一个数字,并计算这个数字的平方根:#-*-coding:UTF-8-*-#Filename:test.pynum=float(input('请输入一个数字:'))num_sqrt=num**0.5print('%0.3f的平方根为%0.3f'%(num,num_sqrt))。执行以上代码输出结果为:$pythontest.py请输入一个数字:44.000的平方根为2.000,在该实例中,我们通过用户输入一个数字,并使用指数运算符**来计算该数的平方根。
from cmath import sqrt
a =int(input('输入一个数字: '))
b =int(input('输入一个数字: '))
c =int(input('输入一个数字: '))
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))会出现错误,因为复杂格式不允许零填充!!!
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
是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性。Python支持重载运算符和动态类型。相对于Lisp这种传统的函数式编程语言,Python对函数式设计只提供了有限的支持。有两个标准库(functools, itertools)提供了Haskell和Standard ML中久经考验的函数式程序设计工具。
运用input(), float(), print()以及math模块的sqrt()就可以了,具体如下:
源代码
如有帮助,请采纳!!!
# 导入模块
import math
# 读取输入,整数或小数
a = float(input("请输入a值:"))
b = float(input("请输入b值:"))
c = float(input("请输入c值:"))
# 判断是否有实数解
if (b ** 2 - 4 * a * c) 0: # 无实数解
print("该二次函数无实数解!!!")
else: # 有实数解
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("二次函数的解为:")
print("x1 =", x1)
print("x2 =", x2)