• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Ряд

Ququmber

Ученик
Регистрация
23 Сен 2015
Сообщения
1
Реакции
0
Баллы
0
Ряд

Реализовать функцию через ряд,ограничивая число элементов ряда первым элементом меньше 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();
}
 
Функцию реализовал.Вопрос в том ,что при x= 2.7, значение функции равно 1 ;а сумма ряда не дотягивает до 1 она получается 0.9 из за чего это происходит ?
Скорее всего, из-за неправильного формата вывода. Я на СИ, увы, не пишу, поэтому нарисовал программку на Паскале, и для х=2.7 получилось:
Результат: 0.98611666
Точное значение: 0.99325177
А так, на взгляд, программа написана правильно.
 
Назад
Сверху