Исправить ошибку в вычислениях функции - C (СИ)
Формулировка задачи:
Листинг программы
- #include<stdio.h>
- #include<conio.h>
- #include <math.h>
- #include<stdlib.h>
- #include<iostream.h>
- long double factorial(int n) {
- return !n ? 1 : n * factorial(n - 1);
- }
- float sum_r(float _x,float _e)
- {
- float rez,element;
- int i;
- rez=0;i=1;
- element=(pow((-1),i)*sqrt(i+M_PI)*pow(sin(i*x),2)/(factorial(i+1)+exp(i*x));
- while ( fabs(element)>=_e )
- {
- rez=rez+element;
- i++;
- element=(pow((-1),i)*sqrt(i+M_PI)*pow(sin(i*x),2)/(factorial(i+1)+exp(i*x));
- }
- return(rez);
- }
- int main()
- {
- float x, e, rezult;
- int ii;
- x=0.63;
- for (ii=1;ii<=10;ii++)
- {
- rezult=sum_r(0.63,pow(10,-ii));
- printf("\n For e = %12.10f x = %3.1f rezult = %15.14f",pow(10,-ii),x,rezult);
- }
- getch();
- return 0;
- }
Решение задачи: «Исправить ошибку в вычислениях функции»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #include <conio.h>
- long double factorial(int n)
- {
- return !n ? 1 : n * factorial(n - 1);
- }
- float element(int i, float x)
- {
- return (pow((-1), i) * sqrt(i + M_PI) * pow(sin(i * x), 2) /
- (factorial(i + 1) + exp(i * x)));
- }
- float sum_r(float x, float e)
- {
- float rez, elem;
- int i;
- rez = 0;
- i = 1;
- elem = element(i, x);
- while (fabs(elem) >= e)
- {
- rez = rez + elem;
- i++;
- elem = element(i, x);;
- }
- return(rez);
- }
- int main()
- {
- float x = 0.63, rezult;
- int ii;
- for (ii = 1; ii <= 10; ii++)
- {
- rezult = sum_r(0.63, pow(10, -ii));
- printf(" For e = %12.10f x = %3.1f rezult = %15.14f\n", pow(10, -ii), x, rezult);
- }
- getch();
- return 0;
- }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы:
, , , . - Определяем функцию factorial(), которая вычисляет факториал числа n.
- Определяем функцию element(i, x), которая вычисляет значение элемента функции на заданном шаге i и аргументе x.
- Определяем функцию sum_r(x, e), которая вычисляет сумму ряда на заданном интервале [0, x] с точностью до e.
- В функции main() задаем начальные значения переменных: x = 0.63, e = 10^-ii, где ii — номер итерации.
- Задаем цикл от 1 до 10 и выполняем вычисления в каждой итерации.
- Выводим результаты на экран.
- В конце программы вызываем функцию getch() для приостановки выполнения программы до нажатия клавиши.
- Возвращаем 0, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д