用法
引用
So simple! 只需把下面的代码复制到一个 {cute_name}.py
,然后直接在你要用的地方:
| from {cute_name} import getErf
... """获取数据区"""
result = getErf(...)
|
参数列表
getErf
有四个形参!
g: str
函数表达式
init: list
一个需要两个元素的数值列表,并且满足 init[0]<init[1]
,这是求零点的初始区间,要求 init ∈ g的定义域I
out
放一个函数指针,用来输出信息,默认是不输出,可以填 print
就会把信息打印到控制台
返回值
一个双元列表,或者是一个数字。
若是个双元列表,则是指定精确度后可能的两个零点值(范围)
若是个数字,则是经过计算后得出的精确零点值
懒得写 留白
细心的你在阅读完代码后会发现 toDel
我空着没写, getErf
的最后几个 if
也一样,这是用来舍去计算后多余的位数的。
人生需要留白,写代码也一样,大家可以试着自己完成喵~
完整代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| from math import *
def toDel(i, j): pass
def getMid(i, j): return (i+j)/2
def getErf(g: str, init: list, T: float, out = lambda *args, **kwargs: 0): x=init[0] res=eval(g) b=True if res<0 else False
out("Loading...")
while init[1]-init[0]>T: x = getMid(*init) res = eval(g) out(f"f({x})={res}") if res==0: init=x break elif (res<0)==b: init[0]=x else: init[1]=x if type(init) is not list: pass elif type(init) is list: pass return init
if __name__ == "__main__": g = input("Math Gongshi: f(x)=") defaulti = input("Init Collection: ") w, w2 = eval(defaulti if defaulti else "(-1000, 1000)") init=[w, w2] T = float(input("Jingquedu: "))
print("Result:", getErf(g, init, T, print))
input("Press Enter to exit...")
|