python实现用二分法求方程的近似解


闲来无事,看到高中的数学课本中有一节“用二分法求方程的近似解”,于是想着实现下:

# !/usr/bin/env python
# -*- coding:utf-8 -*-

import math


def cal_val(fun, start, end, precision):
    s = fun(start)
    e = fun(end)
    if e*s > 0:
        print "No solution!"
        return False
    if s == 0:
        print "Solution is ",start
        return start
    if e == 0:
        print "Solution is ",end
        return end
    while abs(end - start) > precision:
        mid = (start + end)/2.0
        m = fun(mid)
        if m == 0:
            print "Solution is ", mid
            return mid
        if s*m < 0:
            end = mid
        if m*e < 0:
            start = mid
    print "Solution is ",start
    return start


def func(x):
    return 2*math.pow(x, 2) + 5*x - 20

if __name__ == "__main__":
    val = cal_val(func, 1, 100, 0.0001)
    print "Result is ",func(val)

虽然没什么难度,但是多写写,总归是有好处的。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM