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