0% found this document useful (0 votes)
98 views3 pages

Math Techniques for Coders

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

Topics covered

  • Loop Structures,
  • Mathematical Functions,
  • Output Formatting,
  • Error Handling,
  • Numerical Analysis Techniques,
  • Mathematical Modeling,
  • Simpson's Rule,
  • Floating Point Arithmetic,
  • Environmental Modeling,
  • Research Methodologies
0% found this document useful (0 votes)
98 views3 pages

Math Techniques for Coders

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

Topics covered

  • Loop Structures,
  • Mathematical Functions,
  • Output Formatting,
  • Error Handling,
  • Numerical Analysis Techniques,
  • Mathematical Modeling,
  • Simpson's Rule,
  • Floating Point Arithmetic,
  • Environmental Modeling,
  • Research Methodologies

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