Python用二分法求平方根的案例

我就废话不多说了,大家还是直接看代码吧~

def sq2(x,e):
  e = e #误差范围
  low= 0
  high = max(x,1.0) #处理大于0小于1的数
  guess = (low + high) / 2.0
  ctr = 1

  while abs(guess**2 - x) > e and ctr<= 1000:
    if guess**2 < x:
      low = guess
    else:
      high = guess

    guess = (low + high) / 2.0
    ctr += 1
  print(guess)

补充:数值计算方法:二分法求解方程的根(伪代码 python c/c++)

数值计算方法:

二分法求解方程的根

伪代码

fun (input x)
 return x^2+x-6
newton (input a, input b, input e)
//a是区间下界,b是区间上界,e是精确度
 x <- (a + b) / 2
 if abs(b - 1) < e:
 return x
 else:
 if fun(a) * fun(b) < 0:
  return newton(a, x, e)
 else:
  return newton(x, b, e)

c/c++:

#include <iostream>
#include <cmath>
using namespace std;
double fun (double x);
double newton (double a, double b,double e);
int main()
{
 cout << newton(-5,0,0.5e-5);
 return 0;
}

double fun(double x)
{
 return pow(x,2)+x-6;
}

double newton (double a, double b, double e)
{
 double x;
 x = (a + b)/2;
 cout << x << endl;
 if ( abs(b-a) < e)
 return x;
 else
 if (fun(a)*fun(x) < 0)
  return newton(a,x,e);
 else
  return newton(x,b,e);
}

python:

def fun(x):
  return x ** 2 + x - 6
def newton(a,b,e):
  x = (a + b)/2.0
  if abs(b-a) < e:
    return x
  else:
    if fun(a) * fun(x) < 0:
      return newton(a, x, e)
    else:
      return newton(x, b, e)
print newton(-5, 0, 5e-5)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • Python编程之求数字平方的实例

    问题描述: 求输入数字的平方,如果平方运算后小于 100 则退出. 源代码: #!/usr/bin/python # -*- coding: UTF-8 -*- TRUE = 1 FALSE = 0 def SQ(x): return x * x print '如果输入的数字小于 100,程序将停止运行.' again = 1 while again: num = int(raw_input('请输入一个数字:')) print '运算结果为: %d' % (SQ(num)) if SQ(num

  • Python3 完全平方数案例

    题目 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 程序分析 因为168对于指数爆炸来说实在太小了,所以可以直接省略数学分析,用最朴素的方法来获取上限: n=0 while (n+1)**2-n*n<=168: n+=1 print(n+1) 补充:用Python实现"有效的完全平方数"的一种方法 给一个正整数num,写一个函数判断它是否是一个完全的平方数,是则返回True,不是返回False 注意:不要使用任何内嵌的函数,如sqrt

  • python判断完全平方数的方法

    如下所示: # -*- coding: utf-8 -*- #简述:一个整数,它加上100和加上268后都是一个完全平方数 #提问:请问该数是多少? from math import sqrt def f(number): for x in range(0,number): m=sqrt(x+100) n=sqrt(x+268) if m==int(m) and n==int(n): print x if __name__=="__main__": f(1000) 运行结果: 21 2

  • Python 实现把列表中的偶数变成他的平方

    我就废话不多说了,大家还是直接看代码吧~ #编写程序将列表中的偶数变成他的平方 def word_len(s): # s = [i ** 2 for i in s if i % 2 == 0] L = [] for i in s: if(i % 2 == 0): L.append(i** 2) else: L.append(i) return L def main(): s = [2, 6, 1, 3, 9, 4, 22] print(word_len(s)) main() 补充:Python

  • Python编程实现二分法和牛顿迭代法求平方根代码

    求一个数的平方根函数sqrt(int num) ,在大多数语言中都提供实现.那么要求一个数的平方根,是怎么实现的呢? 实际上求平方根的算法方法主要有两种:二分法(binary search)和牛顿迭代法(Newton iteration) 1:二分法 求根号5 a:折半: 5/2=2.5 b:平方校验: 2.5*2.5=6.25>5,并且得到当前上限2.5 c:再次向下折半:2.5/2=1.25 d:平方校验:1.25*1.25=1.5625<5,得到当前下限1.25 e:再次折半:2.5-(

  • Python 平方列表中每个数字的多种操作

    map map(function,iterable) x = [1,2,3,4,5] def square(num): return num*num print(list(map(square,x))) #output:[1, 4, 9, 16, 25] lambda lambda x: x = [1,2,3,4,5] print(list(map(lambda num:num*num, x))) #output:[1, 4, 9, 16, 25] list comprehensions [fu

  • python 计算平均平方误差(MSE)的实例

    我们要编程计算所选直线的平均平方误差(MSE), 即数据集中每个点到直线的Y方向距离的平方的平均数,表达式如下: MSE=1n∑i=1n(yi−mxi−b)2 最初麻烦的写法 # TODO 实现以下函数并输出所选直线的MSE def calculateMSE(X,Y,m,b): in_bracket = [] for i in range(len(X)): num = Y[i] - m*X[i] - b num = pow(num,2) in_bracket.append(num) all_su

  • Python用二分法求平方根的案例

    我就废话不多说了,大家还是直接看代码吧~ def sq2(x,e): e = e #误差范围 low= 0 high = max(x,1.0) #处理大于0小于1的数 guess = (low + high) / 2.0 ctr = 1 while abs(guess**2 - x) > e and ctr<= 1000: if guess**2 < x: low = guess else: high = guess guess = (low + high) / 2.0 ctr += 1

  • python numpy.power()数组元素求n次方案例

    如下所示: numpy.power(x1, x2) 数组的元素分别求n次方.x2可以是数字,也可以是数组,但是x1和x2的列数要相同. >>> x1 = range(6) >>> x1 [0, 1, 2, 3, 4, 5] >>> np.power(x1, 3) array([ 0, 1, 8, 27, 64, 125]) >>> x2 = [1.0, 2.0, 3.0, 3.0, 2.0, 1.0] >>> np.

  • 在python Numpy中求向量和矩阵的范数实例

    np.linalg.norm(求范数):linalg=linear(线性)+algebra(代数),norm则表示范数. 函数参数 x_norm=np.linalg.norm(x, ord=None, axis=None, keepdims=False) ①x: 表示矩阵(也可以是一维) ②ord:范数类型 向量的范数: 矩阵的范数: ord=1:列和的最大值 ord=2:|λE-ATA|=0,求特征值,然后求最大特征值得算术平方根 ord=∞:行和的最大值 ③axis:处理类型 axis=1表

  • python分治法求二维数组局部峰值方法

    题目的意思大致是在一个n*m的二维数组中,找到一个局部峰值.峰值要求大于相邻的四个元素(数组边界以外视为负无穷),比如最后我们找到峰值A[j][i],则有A[j][i] > A[j+1][i] && A[j][i] > A[j-1][i] && A[j][i] > A[j][i+1] && A[j][i] > A[j][i-1].返回该峰值的坐标和值. 当然,最简单直接的方法就是遍历所有数组元素,判断是否为峰值,时间复杂度为O(n^2

  • Python算法之求n个节点不同二叉树个数

    问题 创建一个二叉树 二叉树有限多个节点的集合,这个集合可能是: 空集 由一个根节点,和两棵互不相交的,分别称作左子树和右子树的二叉树组成 创建二叉树: 创建节点 再创建节点之间的关系 Python代码示例 # !/usr/bin/env python # -*-encoding: utf-8-*- # author:LiYanwei # version:0.1 class TreeNode(object): def __init__ (self, data, left = None, righ

  • Python编程二分法实现冒泡算法+快速排序代码示例

    本文分享的实例主要是Python编程二分法实现冒泡算法+快速排序,具体如下. 冒泡算法: #-*- coding: UTF-8 -*- #冒泡排序 def func(lt): if type(lt).__name__ !='list' and type(lt).__name__ !='tuple': return if type(lt).__name__ == 'tuple': return list(lt) for i in range(1,len(lt)-1): for j in range

  • Python Paramiko模块的使用实际案例

    本文研究的主要是Python Paramiko模块的使用的实例,具体如下. Windows下有很多非常好的SSH客户端,比如Putty.在python的世界里,你可以使用原始套接字和一些加密函数创建自己的SSH客户端或服务端,但如果有现成的模块,为什么还要自己实现呢.使用Paramiko库中的PyCrypto能够让你轻松使用SSH2协议. Paramiko的安装方法网上有很多这样的帖子,这里就不描述了.这里主要讲如何使用它.Paramiko实现SSH2不外乎从两个角度实现:SSH客户端与服务端.

  • 易语言求平方根命令使用讲解

    求平方根命令 操作系统支持:Windows.Linux  所属类别:算术运算 返回指定参数的平方根. 语法:  双精度小数型  求平方根(欲求其平方根的数值) 例程 说明: 将数值编辑框的内容转换到数值型,把转换后的数据求平方根, 再把返回的双精度小数型数据转换到文本型,放入求平方根标签的标题中. 运行结果: 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持.如果你想了解更多相关内容请查看下面相关链接

  • Python UnboundLocalError和NameError错误根源案例解析

    如果代码风格相对而言不是那么的pythonic,或许很少碰到这类错误.当然并不是不鼓励使用一些python语言的技巧.如果遇到这这种类型的错误,说明我们对python中变量引用相关部分有不当的认识和理解.而这又是对理解python相关概念比较重要的.这也是本文写作的原因. 本文为理解闭包相关概念的做铺垫,后续会详细深入的整理出闭包相关的博文,敬请关注. 1.案例分析 在整理闭包相关概念的过程中,经常发现UnboundLocalError和NameError这两个错误,刚开始遇到的时候可能很困惑,

随机推荐