Что не так с кодом? - C (СИ)
Формулировка задачи:
Всем здравствуйте. Программа должна вычислять значение e^(2*x) в точках X∈[0;0,8] шагом h=0,1 и точностью эпсилон=0,00001. При компиляции цикл идет бесконечно и значение функции всегда=1. Пожалуйста, помогите закончить код:
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <conio.h> long int fact(long int n) { if (n == 0 || n == 1) return 1; return n * fact(n - 1); } int main() { int i; float x, t, xn=0, xk=0.8, s, h=0.1, n=8, eps=0.00001; x=xn; puts("Программа вычисляет значение exp^2x , где X принадлежит промежутку [0;0,8] с шагом 0,1 и точностью эпсилон=0,00001"); t=1; s=1; for (i=1;i<n;i++) { t=t*pow((2*x),i); s=s+t*fact(i); while (abs(s)>eps) { printf("\n При X=%2.2f exp^2x(X)=%2.2f\n",x,s); x=x+h; } return 0;} }
Решение задачи: «Что не так с кодом?»
textual
Листинг программы
#include <stdio.h> #include <math.h> long fact(long n) { if(!n) return 1; return n * fact(n - 1); } double seq_member(double x, long n) { return pow(2 * x, n) / fact(n); } double seq_sum(double x, double eps) { double sum = 0; long n = 0; for(double sm = seq_member(x, n); sm > eps; sm = seq_member(x, ++n)) sum += sm; return sum; } int main() { const double eps = 1e-5; double xmin = 0; double xmax = .8; double step = .1; for(; xmin <= xmax; xmin += step) printf("f(%lf)=%lf ", xmin, seq_sum(xmin, eps)); }
Объяснение кода листинга программы
- В функции fact() реализован рекурсивный вычислительный алгоритм факториала для неотрицательных целых чисел.
- В функции seq_member() вычисляется член последовательности, для этого используется формула n! / (x^n * (1-x)^n).
- В функции seq_sum() вычисляется сумма членов последовательности в интервале от x до eps, для этого используется итерационный цикл.
- В функции main() задаются константы и переменные: eps = 1e-5, xmin = 0, xmax = 0.8, step = 0.1.
- В цикле for вызывается функция seq_sum() с аргументами xmin и eps, и выводится на экран значение суммы и шаг xmin.
- Цикл выполняется, пока xmin меньше или равно xmax.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д