cyrus白 发表于 2020-4-7 19:58:17

为什么我这代码算积分要好几秒才出结果?

import random
import math

class Function:
    global dx
    dx = 0.000001
    def __init__(self, cor_law="pow(x,2)"):
      self.cor_law = cor_law

    def getValue(self,x):
      try:
            y = eval(self.cor_law)
            return y
      except:
            return "函数在该点处没意义"

    def derivate(self,x0):
      try:
            y0 = self.getValue(x0)
            x1 = x0 + dx
            y1 = self.getValue(x1)
            return(y1 - y0)/(x1 - x0)
      except:
            return "函数不可导"

    def integral(self,up,down):
      try:
            s = 0
            if up > down:
                while down < up:
                  yi = self.getValue(down)
                  s += yi*dx
                  down += dx

            else:
                while up < down:
                  yi = self.getValue(up)
                  s -= yi*dx
                  up += dx
            return s
      except:
            return "函数不可积"


if __name__ == "__main__":
    fun = Function(cor_law='math.sin(x)')
    print(fun.getValue(3.1415926))
    print(fun.derivate(0))
    print(fun.integral(3.14159, 0))

qiuyouzhi 发表于 2020-4-7 20:03:29

效率不行呗
Python本来弱势就是效率

cyrus白 发表于 2020-4-7 20:19:17

qiuyouzhi 发表于 2020-4-7 20:03
效率不行呗
Python本来弱势就是效率

{:10_245:}刚开始还以为电脑陷入了死循环呢。

BngThea 发表于 2020-4-7 20:26:20

用numpy不香吗{:10_245:}

cyrus白 发表于 2020-4-7 20:28:27

BngThea 发表于 2020-4-7 20:26
用numpy不香吗

还在摸索中 很多都不懂{:10_266:}

BngThea 发表于 2020-4-7 20:32:37

cyrus白 发表于 2020-4-7 20:28
还在摸索中 很多都不懂

numpy和scipy底层都是c,速度很快
搞科学计算必备的

NZND 发表于 2020-4-10 22:59:57

为毛不编译一下呢?

NZND 发表于 2020-4-10 23:00:34

Pyinstaller他不香吗?
页: [1]
查看完整版本: 为什么我这代码算积分要好几秒才出结果?