Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- double MyFunc(double x)
- {
- return sin(x);
- }
- /*MyFunc .............*/
- double Pr(double Xleft, double Xright, int k)
- /* метод прямоугольника*/
- {
- int i;
- double S,dx;
- dx = (Xright-Xleft)/k;
- S = 0;
- for(i = 0;i < k;i++)
- {
- S = S + dx*MyFunc(Xleft);
- Xleft = Xleft + dx;
- Xright = Xleft + dx;
- }
- return(S);
- }
- double Tr(double Xleft, double Xright,int k)
- /*метод трапеций*/
- {
- int i;
- double S, dx;
- dx = (Xright-Xleft)/k;
- S = (MyFunc(Xleft) + MyFunc(Xright))/2;
- for(i = 1;i < k;i++)
- {
- Xleft = Xleft + dx;
- S = S + MyFunc(Xleft);
- }
- S = S*dx;
- return(S);
- }
- double Sim( double Xleft, double Xright, int k)
- /*метод симпсона*/
- {
- int i;
- double S,dx;
- dx = (Xright- Xleft)/k;
- S = MyFunc(Xleft) + MyFunc(Xright);
- for(i = 1;i < k;i++)
- {
- if (i%2==0)
- {
- Xleft = Xleft + dx;
- S = S + 2*MyFunc(Xleft);
- }
- else
- {
- Xleft = Xleft + dx;
- S = S+ 4*MyFunc(Xleft);
- }
- }
- S = S*dx/3;
- return(S);
- }
- int main()
- {
- double a, b, Eps, s1, s2, s3, s4, s5, s6;
- int i, Ncycles1, Ncycles2, Ncycles3;
- a = 0.;
- b = M_PI/2;
- printf("Eps\t Xpr\t\t Prm\t Xtr\t\t Trm\t Xsim\t\t Simm\n");
- Eps = 0.1;
- for(i = 0;i < 4; i++)
- {
- Ncycles1 = 4;
- s1 = 0;
- s2 = Pr(a, b, Ncycles1);
- while(fabs(s1-s2)>Eps)
- {
- Ncycles1 = Ncycles1*2;
- s1 = s2;
- s2 = Pr(a, b, Ncycles1);
- }
- Ncycles2 = 4;
- s3 = 0;
- s4 = Tr(a, b, Ncycles2);
- while(fabs(s3-s4)>Eps)
- {
- Ncycles2 = Ncycles2*2;
- s3 = s4;
- s4 = Tr(a, b, Ncycles2);
- }
- Ncycles3 = 4;
- s5 = 0;
- s6 = Sim(a, b, Ncycles3);
- while(fabs(s5-s6)>Eps)
- {
- Ncycles3 = Ncycles3*2;
- s5 = s6;
- s6 = Sim(a, b, Ncycles3);
- }
- printf("%6.4f\t %8.5f\t\t %4d\t %8.5f\t\t %4d\t %8.5f\t\t %4d\n",Eps, s2, Ncycles1, s4, Ncycles2, s6, Ncycles3);
- Eps = Eps*0.1;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement