【发布时间】:2016-06-05 21:22:58
【问题描述】:
程序需要计算定义积分与预定 梯形规则的准确性(eps),我的函数需要返回:
1.积分的近似值。
2.迭代次数。
我的代码:
from math import *
def f1(x):
return (x ** 2 - 1)**(-0.5)
def f2(x):
return (cos(x)/(x + 1))
def integral(f,a,b,eps):
n = 2
x = a
h = (b - a) / n
sum = 0.5 * (f(a) + f(b))
for i in range(n):
sum = sum + f(a + i * h)
sum_2 = h * sum
k = 0
flag = 1
while flag == 1:
n = n * 2
sum = 0
k = k + 1
x = a
h = (b - a) / n
sum = 0.5 * (f(a) + f(b))
for i in range(n):
sum = sum + f(a + i * h)
sum_new = h * sum
if eps > abs(sum_new - sum_2):
t1 = sum_new
t2 = k
return t1, t2
else:
sum_2 = sum_new
x1 = float(input("First-begin: "))
x2 = float(input("First-end: "))
y1 = float(input("Second-begin: "))
y2 = float(input("Second-end: "))
int_1 = integral(f1,x1,y1,1e-6)
int_2 = integral(f2,x2,y2,1e-6)
print(int_1)
print(int_2)
它不能正常工作。请帮忙!
【问题讨论】:
-
你已经问过你的rubber duck了吗?
-
请比“它不能正常工作”更具体。你尝试了什么测试用例,你期望什么输出,你得到了什么输出或回溯?
-
在
integral中,您重复使用for i in range(n): sum = sum + f(a + i * h),但这样一个循环的主体会被评估,例如,n=2fori-0和i=1这样你就有了在循环结束时,sum=f(a)+f(a+h)这不是你想要的,不是吗?
标签: python function python-3.x rule integral