0% found this document useful (0 votes)
52 views

Math For Programming

This document discusses Simpson's rule, a numerical approximation method for definite integrals. It provides the Simpson's rule formula that approximates the integral of a function f(x) from a to b as the weighted sum of f(a), f((a+b)/2), and f(b). The rest of the document contains C++ code that implements Simpson's rule to solve a field test problem about estimating the area under a curve to meet an environmental protection standard.

Uploaded by

Coeus Apollo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
52 views

Math For Programming

This document discusses Simpson's rule, a numerical approximation method for definite integrals. It provides the Simpson's rule formula that approximates the integral of a function f(x) from a to b as the weighted sum of f(a), f((a+b)/2), and f(b). The rest of the document contains C++ code that implements Simpson's rule to solve a field test problem about estimating the area under a curve to meet an environmental protection standard.

Uploaded by

Coeus Apollo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

Contents

1 Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1 Simpsons rule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1
Competitive Programming Notebook : Math Integration
1 Integration
1.1 Simpsons rule
Numerical approximation of denite integrals, given by:

b
a
f(x)dx
b a
6

f(a) + 4f

a + b
2

+ f(b)

1.1.1 Field test: Environmental Protection


Source:Latin America Regional Contest - 2012
1 #include<iostream>
2 #include<iomanip>
3
4
5 using namespace std;
6
7 double W,D,A,K;
8 double p1[10],q1[10],p2[10],q2[10];
9 double EPS = 1e-4;
10
11 double f(double x, double cut){
12 double n1,n2,d1,d2; //Horners rule.
13 n1 = n2 = d1 = d2 = 0.0;
14 for(int i=K;i>=0;i--){
15 n1 = n1 * x + p1[i];
16 d1 = d1 * x + q1[i];
17 n2 = n2 * x + p2[i];
18 d2 = d2 * x + q2[i];
19 }
20 double f1 = n1/d1 , f2 = n2/d2;
21
22 if(f1 <= cut)
23 return 0;
24 else if(cut < f2)
25 return f1 - f2;
26 else return f1 - cut;
27 }
28
29 double simpson(double a, double b, double x){
2
Competitive Programming Notebook : Math 1.1 Simpsons rule
30 double fa,fab,fb;
31 fa = f(a,x);
32 fab = f((a+b)/2.0, x);
33 fb = f(b,x);
34 double r = ((b-a)/6.0) * (f(a,x) + (4*f((a+b)/2.0,x)) + f(b,x));
35 return r;
36 }
37
38 int main(){
39 freopen("E.in" , "r" , stdin);
40
41 while(cin>> W >> D >> A >> K){
42 for(int i=0;i<=K;i++)
43 cin>>p1[i];
44 for(int i=0;i<=K;i++)
45 cin>>q1[i];
46 for(int i=0;i<=K;i++)
47 cin>>p2[i];
48 for(int i=0;i<=K;i++)
49 cin>>q2[i];
50 double lo = -D, hi = 0.0;
51 for(int i=0;i<25;i++){
52 double m = (lo + hi)/2.0;
53 double act_area = 0.0;
54 for(double a=0.0; a+EPS-1e-5<W ; a+=EPS){
55 act_area += simpson(a, a+EPS,m);
56 }
57 if(act_area < A)
58 hi = m;
59 else lo = m;
60
61 }
62 cout <<fixed << setprecision(5) << -lo << endl;
63 }
64 return 0;
65 }
3

You might also like