Вычислить сумму ряда с точностью eps - C (СИ) (79229)

Узнай цену своей работы

Формулировка задачи:

Помогите решить задачу: Вычислить сумму ряда (приближенное значение функции ln для |x|<1) с точностью eps. Значения x и eps вводятся с клавиатуры. Полученный результат и значение библиотечной функции ln вывести на экран. Что-то написал, но похоже неправильно и не работает(( помогите. если возможно, без pow
Листинг программы
  1. int main(int argc, char *argv[])
  2. {
  3. double eps,i,x,S,ln,a,X,q,w;
  4. printf("vvedite tochnost'\n");
  5. scanf("%lf",&eps);
  6. printf("vvedite x\n");
  7. scanf("%lf",&x);
  8. S=0;
  9. a=-1;
  10. for(i=0;S>eps;i++){
  11. q=pow(a,i);
  12. w=pow(x,i+1);
  13. X=q*w/(i+1);
  14. S+=X;
  15. }
  16. ln=log(x+1);
  17. printf("%.10lf\n",S);
  18. printf("ln=%.10lf\n",ln);
  19. return 0;
  20. }

Решение задачи: «Вычислить сумму ряда с точностью eps»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. double myLn(double x, double eps);
  5.  
  6. int main()
  7. {
  8.     double x;
  9.     double eps;
  10.  
  11.     printf("Input x: ");
  12.     scanf("%lf", &x);
  13.     printf("Input eps: ");
  14.     scanf("%lf", &eps);
  15.  
  16.     printf("myLn(%lf, %lf) = %lf\n", x, eps, myLn(x, eps));
  17.     printf("libLn(1 + %lf) = %lf", x, log(1.0 + x));
  18.  
  19.     getch();
  20.     return 0;
  21. }
  22.  
  23. double myLn(double x, double eps)
  24. {
  25.     double sum;
  26.     double an;
  27.     int i;
  28.  
  29.     sum = 0.0;
  30.     an = -1.0;
  31.     i = 0;
  32.  
  33.     do
  34.     {
  35.         an *= -x / ++i;
  36.         sum += an;
  37.     }
  38.     while (fabs(an) > eps);
  39.  
  40.     return sum;
  41. }

Объяснение кода листинга программы

В этом коде:

  1. Сначала определяют функцию myLn(x, eps), которая вычисляет ряд для значения x с точностью eps.
  2. В функции main() считывают значения x и eps с помощью функции scanf().
  3. Вызывают функцию myLn(x, eps) и выводят результат на экран.
  4. Также в функции main() вычисляют приближенное значение функции ln(1+x) с помощью функции log() из библиотеки math.h и выводят его на экран.
  5. В функции myLn(x, eps) используется цикл do-while для вычисления ряда с точностью eps.
  6. Значение переменной an инициализируется как -1.0, а переменная i как 0.
  7. В цикле do-while значение an обновляется как произведение -x и i, а затем прибавляется к сумме sum.
  8. Цикл продолжается, пока абсолютное значение an не станет меньше eps.
  9. В конце функция возвращает сумму ряда.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут