积分计算器不会工作时,给定的公式给出超过1倍的公式

2024-10-05 14:27:58 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我现在正在研究一个积分计算器,它工作得很好,尽管一旦定义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                                                                  

Tags: inputreturndefevalmathfloatfuncx1
1条回答
网友
1楼 · 发布于 2024-10-05 14:27:58
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

这或多或少是你想做的吗?你知道吗

相关问题 更多 >