Ask Question

Name:
Title:
Your Question:

Answer Question

Name:
Your Answer:
User Submitted Source Code!


Description:
  уке
Language: C/C++
Code:
#include <iostream.h>

#include <conio.h>

#include <math.h>

char* rus (char* st)

{

unsigned char* p = st;

while (*p)

{

if (*p >= 192)

if (*p<=239)

*p -= 64;

else

*p -= 16;

p++;

}

return st;

}

float f(float x)

{

return x*x*x;

}

float df(float x)

{

return 3*x*x;

}

float df3points(float h,float x)

{

return (-0.5f*f(x-h) + 0.5f*f(x+h)) / h;

}

float df4points(float h,float x)

{

return (f(x-1.5*h)/24.f-9.f*f(x-0.5*h)/8.f+9.f*f(x+0.5*h)/8.f-f(x+1.5*h)/24.f) / h;

}

float df5points(float h,float x)

{

return ( f(x-2*h)/12.f - 2.f*f(x-h)/3.f + 2.f*f(x+h)/3.f - f(x+2*h)/12.f ) / h;

}

double df6points(double h,double x)

{

return ( 9./580. * f(x-2.5f*h) - 25./696.*f(x-1.5f*h) - 225./232.*f(x-0.5f*h) + 225./232.*f(x+0.5f*h) + 25./696.*f(x+1.5f*h) - 9./580.*f(x+2.5f*h) ) / h;

}

int main(int argc, char* argv[])

{

float x = 0.23f;

float e = 1e-4f;

float h , tmpDF;

printf ("f(%f)= %fn",x,f(x));

printf ("df(%f)= %fn",x,df(x));

printf (rus("Точность: %fn"),e);

/* ------------------------------------- */

h = 1;

do

{

tmpDF = df3points(h,x);

h/=10;

if (h==0) break;

}

while (fabs(fabs(tmpDF)-fabs(df3points(h,x)))<e);

if(!h)

{

printf ("%s",rus("Не могу посчитать производную по 3 точкам,с заданной точностьюn"));

}

else

{

printf (rus("По 3 точкам: %fn"),df3points(h,x) );

}

/* ------------------------------------- */

h=1;

do

{

tmpDF = df4points(h,x);

h/=10;

if (h==0) break;

}

while (fabs(fabs(tmpDF)-fabs(df4points(h,x)))<e);

if(!h)

{

printf ("%s",rus("Не могу посчитать производную по 4 точкам,с заданной точностьюn"));

}

else

{

printf (rus("По 4 точкам: %fn"),df4points(h,x) );

}

/* ------------------------------------- */

h=1;

do

{

tmpDF = df5points(h,x);

h/=10;

if (h==0) break;

}

while (fabs(fabs(tmpDF)-fabs(df5points(h,x)))<e);

if(!h)

{

printf ("%s",rus("Не могу посчитать производную по 5 точкам,с заданной точностьюn"));

}

else

{

printf (rus("По 5 точкам: %fn"),df5points(h,x) );

}

h=1;

do

{

tmpDF = df6points(h,x);

h/=10;

if (h==0) break;

}

while (fabs(fabs(tmpDF)-fabs(df6points(h,x)))<e);

if(!h)

{

printf ("%s",rus("Не могу посчитать производную по 6 точкам,с заданной точностьюn"));

}

else

{

printf (rus("По 6 точкам: %fn"),df6points(h,x) );

}

getch();

return 0;

}
          
Comments: