b_lab4

1646 days ago by derevjaginti

p1(x) = (cos(1/x+1/x^2))^2*ln(1+x^2) p2(x) = x*(sin(1+ln(x)))^2 p3(x) = x^2+atan(exp(x^(1/2))) f(x) = (p1(x)+p2(x))/p3(x) b = 4.0 a = 3.0 
       
plot(f(x), a, b) 
       
def error(a, b): print('Abs =', abs(a-b)) print('Rel =', abs(a-b)/abs(b)) def get_integral(h, a, b, f): sum=0.0 while a<b: sum+=(f(a)+f(a+h))*h/2.0 a+=h return sum def find_best(f, a, b): h=sqrt(EPS) sum=0.0 while abs(a-b)>EPS: I1 = get_integral(h, a, a+h, f) I2 = get_integral(h/2.0, a, a+h, f) n = abs(I1-I2)/(abs(I2)*3)<EPS print(bool(n), h, a+h) if abs(I1-I2)/(abs(I2)*3)<EPS: a+=h h*=2 sum+=I2 else: h/=2.0 if (a+h>b): h=b-a return sum 
       
#проверка, интеграл от 3.0 до 4.0 ответ должен быть 16.0-9.0=7.0 EPS = 0.001 check = find_best(2*x, a, b) check 
       
(True, 0.0316227766016838, 3.13162277660168)
(True, 0.0632455532033676, 3.19486832980505)
(True, 0.126491106406735, 3.32135943621179)
(True, 0.252982212813470, 3.57434164902526)
(True, 0.425658350974743, 4.00000000000000)
6.39000000000000
their = numerical_integral(f,a,b)[0] my = N(find_best(f, a, b)) my 
       
(True, 0.0316227766016838, 3.03162277660168)
(True, 0.0632455532033676, 3.09486832980505)
(True, 0.126491106406735, 3.22135943621179)
(True, 0.252982212813470, 3.47434164902526)
(False, 0.505964425626941, 3.98030607465220)
(True, 0.252982212813470, 3.72732386183873)
(True, 0.272676138161273, 4.00000000000000)
0.321245113442672
error(my, their) 
       
('Abs =', 0.0000601487101528075)
('Rel =', 0.000187271251015436)
http://habrahabr.ru/post/184436/ http://habrahabr.ru/post/182610/ http://habrahabr.ru/post/182626/ http://habrahabr.ru/post/72929/ http://habrahabr.ru/post/141744/ http://habrahabr.ru/post/150801/ http://habrahabr.ru/post/222227/ http://habrahabr.ru/company/ifree/blog/195948/ 
       
Traceback (click to the left of this block for traceback)
...
SyntaxError: invalid syntax