Python 当给定的公式在公式中超过1倍时,积分计算器不起作用

Python 当给定的公式在公式中超过1倍时,积分计算器不起作用,python,math,integral,Python,Math,Integral,所以我现在正在研究一个积分计算器,它工作得相当好,尽管一旦将y定义为x**2+x*2+2它就停止工作了。是什么提示我的程序使用y=x**2+2但不使用y=x**2+x*2+2 import math as math x0 = 0 x1 = 0

所以我现在正在研究一个积分计算器,它工作得相当好,尽管一旦将y定义为x**2+x*2+2它就停止工作了。是什么提示我的程序使用y=x**2+2但不使用y=x**2+x*2+2

import math as math

x0 = 0                                                                                      
x1 = 0                                                                                      

def func(y, x):                                                                             
    return eval(y)

def func2(z, x):                                                                            
    return eval(z)

def func3(c, d):        
    a = 0.0                                                                                 
    for i in range(1, n+1):                                                                 
        x0 = a + (i-1) * dx                                                                     
        Ai = dx * (c + d)/ 2.                                                           
        a = a + Ai                                                                      
    return a

y = str(raw_input("Function 1: "))                                                      
z = str(raw_input("Function 2: "))                                          

a = float(input("Left boundary: "))                                                     
b = float(input("Right boundary: "))                                                    
dx = float(input("Trapezoid width: "))                                                      

n = int((b - a) / dx)                                                               

Area2 = func3(func(y, x0), func(y, x1))                                                                             
Area3 = func3(func2(z, x0), func2(z, x1))

Area4 = Area2 - Area3
if Area4 < 0:
    Area4 = Area3 - Area2

print "Area = ", Area4                                                                  
将数学导入为数学
x0=0
x1=0
定义函数(y,x):
返回值(y)
def func2(z,x):
返回值(z)
def func3(c、d):
a=0.0
对于范围(1,n+1)内的i:
x0=a+(i-1)*dx
Ai=dx*(c+d)/2。
a=a+Ai
归还
y=str(原始输入(“函数1:”)
z=str(原始输入(“函数2:”)
a=浮动(输入(“左边界:”)
b=浮动(输入(“右边界”))
dx=浮动(输入(“梯形宽度:”)
n=int((b-a)/dx)
区域2=func3(func(y,x0),func(y,x1))
区域3=func3(func2(z,x0),func2(z,x1))
区域4=区域2-区域3
如果区域4小于0:
区域4=区域3-区域2
打印“Area=”,区域4
将数学作为数学导入
x0=0
x1=0
def f(功能,x):
函数=评估(函数)
返回函数
def func3(b、a、func):
面积=0.0
dx=(b-a)/n
对于范围(1,n+1)内的i:
x0=a+(i-1)*dx
x1=a+i*dx
Ai=dx*(f(func,x0)+f(func,x1))/2。
面积=面积+人工智能
返回区
y=str(输入(“函数1:”)
z=str(输入(“函数2:”)
a=浮动(输入(“左边界:”)
b=浮动(输入(“右边界”))
n=int(输入(“梯形宽度:”)
区域2=功能3(b、a、y)
区域3=功能3(b、a、z)
区域4=区域2-区域3
如果区域4小于0:
区域4=区域3-区域2
打印“Area=”,区域4

这或多或少是你想要做的吗?

这不清楚你需要什么,请修改。在什么意义上不清楚?我要求有人找出为什么它会给我y=x**2+2z=x**2的正确结果,而不是y=x**2+2x+2z=x的正确结果**2@Meh你试过调试你的代码吗?@nemo是的,否则我就不在这里了请注意,
func
func2
是相同的,第二个参数也没有任何作用。
import math as math

x0 = 0                                                                                      
x1 = 0                                                                

def f(function, x):
   function = eval(function)
   return function

def func3(b, a, func):        
   area = 0.0
   dx = (b - a) / n                                                
   for i in range(1, n+1):                                                                 
       x0 = a + (i-1) * dx  
       x1 = a + i*dx
       Ai = dx * (f(func, x0) + f(func, x1))/ 2.                                                          
       area = area + Ai                                                                      
   return area

y = str(input("Function 1: "))                                                      
z = str(input("Function 2: "))                                          

a = float(input("Left boundary: "))                                                     
b = float(input("Right boundary: "))                                                    
n = int(input("Trapezoid width: "))                                                      


Area2 = func3(b, a, y)                                                                             
Area3 = func3(b, a, z)

Area4 = Area2 - Area3
if Area4 < 0:
   Area4 = Area3 - Area2

print "Area = ", Area4