Python 当给定的公式在公式中超过1倍时,积分计算器不起作用
所以我现在正在研究一个积分计算器,它工作得相当好,尽管一旦将y定义为x**2+x*2+2它就停止工作了。是什么提示我的程序使用y=x**2+2但不使用y=x**2+x*2+2Python 当给定的公式在公式中超过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
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