Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Написать программу вычисления приближенных значений функции, представленной в виде ряда, в десяти равностоящих друг от друга точках
- указанного диапозона возможных значений аргумента. (e^(-x^2))
- */
- // IterSum.cpp: определяет точку входа для консольного приложения.
- //
- #include "stdafx.h"
- #include <math.h>
- #include <stdlib.h>
- FILE* fopen_secure(const char fname[], const char mode[]) //функция безопасного открытия
- {
- FILE *f=fopen(fname, mode);
- if (f==NULL) //если fopen возвращает нулевой указатель, то выводит ошибку
- {
- fclose(f);
- printf("Cannot open file %s with mode %s \n", fname, mode);
- exit(0);
- }
- return f;
- }
- bool checkX (float x) //чекаем диапозон
- {
- if (x<-4 || x>4)
- {
- printf("Incorrect x: it should be -4 >= x <= 4. \n");
- system("pause");
- exit(0);
- }
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- float x0, x1, x, sh, eps, fun;
- double sum;
- int n;
- fflush(stdin);
- FILE* fp;
- fp=fopen_secure("f.txt","w+");
- printf("x begin: ");
- scanf("%f", &x0);
- checkX(x0);
- printf("x end: ");
- scanf("%f", &x1);
- checkX(x1);
- sh=(x1-x0)/9;
- x=x0;
- for (eps=0.1f; x<=4; eps=eps/10)
- {
- for (int j=0; j<6; ++j)
- {
- fun=1;
- sum=fun;
- n=1;
- while (abs(fun)>=eps)
- {
- fun=-(fun*x*x)/n;
- sum=sum+fun;
- n=n+1;
- }
- printf("%0.3f %f %.10f %d \n", x, eps, sum, n);
- fprintf(fp, "%0.3f %f %.10f %d \n", x, eps, sum, n);
- }
- printf("test %.10f \n",expf(-(x*x)));
- x=x+sh;
- }
- system("pause");
- fclose(fp);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement