Технический форум

Технический форум (http://www.tehnari.ru/)
-   Математика (http://www.tehnari.ru/f173/)
-   -   Ряд (http://www.tehnari.ru/f173/t104401/)

Ququmber 24.09.2015 14:42

Ряд
 
Реализовать функцию через ряд,ограничивая число элементов ряда первым элементом меньше eps=0.01
Функция: lnx(x>1/2-обл сх-ти)
Ряд :(x-1)^n/n*x^n;n=1
Функцию реализовал.Вопрос в том ,что при x= 2.7, значение функции равно 1 ;а сумма ряда не дотягивает до 1 она получается 0.9 из за чего это происходит ?

Код:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
void main()
{
   
double    eps = 0.01;
    int i = 1;
    double F,x = 2.71;
    double j = 1;
    double h = 0;

   
    while (x > 2)
    {
       
        for (i = 1;fabs(j) > eps; i++)
        {

            F = log(x);
            j = pow((x-1), i) / (i*pow(x, i));
           
            //printf("f= 8.5%f j = 8.5%f h=8.5%f \n", F, j, h);
            h = j + h;
//printf("f= 8.5%f j = 8.5%f h=8.5%f \n", F, j, h);
            //printf("f= %f j = %f h= %f \n", F, j, h); //вывод каждого члена ряда
       
        }

        printf("Rezultat pri x= %8.5f h=%8.5f\n", x, h);
        j = 1;
        h = 0;
        x = x - 0.05;
       
    }
   
   
    _getch();
}


Vladimir_S 24.09.2015 15:11

Цитата:

Сообщение от Ququmber (Сообщение 1163012)
Функцию реализовал.Вопрос в том ,что при x= 2.7, значение функции равно 1 ;а сумма ряда не дотягивает до 1 она получается 0.9 из за чего это происходит ?

Скорее всего, из-за неправильного формата вывода. Я на СИ, увы, не пишу, поэтому нарисовал программку на Паскале, и для х=2.7 получилось:
Результат: 0.98611666
Точное значение: 0.99325177
А так, на взгляд, программа написана правильно.


Часовой пояс GMT +4, время: 13:46.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.