17.12.2018, 02:34 [+3 UTC]
в нашей команде: 3 237 чел. | участники онлайн: 4 (рекорд: 19)

:: РЕГИСТРАЦИЯ

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.58 (11.12.2018)

Общие новости:
13.12.2018, 11:36

Форум:
16.12.2018, 14:55

Последний вопрос:
16.12.2018, 22:36

Последний ответ:
16.12.2018, 21:15

Последняя рассылка:
17.12.2018, 00:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
19.04.2010, 18:43 »
Vitvol
Спасибо Вам огромное!!!!!! [вопрос № 177926, ответ № 260912]
13.10.2009, 12:07 »
Anjali
Спасибо! Такое решение показалось наиболее оптимальным и более понятным. [вопрос № 173235, ответ № 255367]

РАЗДЕЛ • .NET Framework / C# / Java

Создание программ на программной платформе .NET Framework и языках С# и Java.

[администратор рассылки: Коцюрбенко Алексей aka Жерар (Мастер-Эксперт)]

Лучшие эксперты в этом разделе

Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 826
Лысков Игорь Витальевич
Статус: Старший модератор
Рейтинг: 166
solowey
Статус: Студент
Рейтинг: 145

Перейти к консультации №:
 

Консультация онлайн # 193312
Раздел: • .NET Framework / C# / Java
Автор вопроса: dasha.savina2012 (Посетитель)
Отправлена: 24.05.2018, 21:51
Поступило ответов: 1

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
Не используя стандартные функции (за исключением abs), вычислить с точностью eps>0:
y=ln(1+x)=x-x^2/2+x^3/3-...+((-1)^(n-1))*x^n+...(|x|<1);
Считать, что требуемая точность достигнута, если очередное слагаемое по модулю меньше eps, - все последующие слагаемые можно уже не учитывать.
Программа есть, но не знаю как сделать рекурентную формулу для расчета.
Помогите, пожалуйста.

Приложение:

Состояние: Консультация закрыта

Ответ # 276550 от solowey (Студент)

Здравствуйте, dasha.savina2012!
вот вариант рекурсивной функции

        /// <summary>
        ////Функция вычисления ln(1+x)=x-x^2/2+x^3/3-...+((-1)^(n-1))*x^n/n+...
        /// </summary>
        /// <param name="eps">вычислить с точностью eps>0</param>
        /// <param name="x">введеное значение Х</param>
        /// <param name="n">число n</param>
        /// <param name="minus">значение -1</param>
        /// <param name="res">результат текущего цикла</param>
        /// <returns>результат вычисления</returns>
        static double Func(double eps, double x, int n, int minus, double res)
        {
            double temp = 1.0;
            for (int i = 0; i < n; i++)
            {
                temp *= x;
            }
            temp /= n;
            temp *= minus;

            if (Math.Abs(temp) < eps)
                return temp + res;

            temp += res;
            return Func(eps, x, ++n, minus * -1, temp);
        }

вызов будет так:
Func(eps, x, 1, 1, 0);


Консультировал: solowey (Студент)
Дата отправки: 27.05.2018, 13:35

5
нет комментария
-----
Дата оценки: 28.05.2018, 18:25

Рейтинг ответа:

+1

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 193312

solowey
Студент

ID: 400484

# 1

 +1 
 
= общий = | 25.05.2018, 12:05 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Добрый день,
вот вариант рекурсивной функции

        /// <summary>
        ////Функция вычисления ln(1+x)=x-x^2/2+x^3/3-...+((-1)^(n-1))*x^n/n+...
        /// </summary>
        /// <param name="eps">вычислить с точностью eps>0</param>
        /// <param name="x">введеное значение Х</param>
        /// <param name="n">число n</param>
        /// <param name="minus">значение -1</param>
        /// <param name="res">результат текущего цикла</param>
        /// <returns>результат вычисления</returns>
        static double Func(double eps, double x, int n, int minus, double res)
        {
            double temp = 1.0;
            for (int i = 0; i < n; i++)
            {
                temp *= x;
            }
            temp /= n;
            temp *= minus;

            if (Math.Abs(temp) < eps)
                return temp + res;

            temp += res;
            return Func(eps, x, ++n, minus * -1, temp);
        }

вызов будет так:
Func(eps, x, 1, 1, 0);

dasha.savina2012
Посетитель

ID: 402095

# 2

= общий = | 26.05.2018, 21:17 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
solowey:

© Цитата: solowey
Спасибо за помощь

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.14324 сек.

© 2001-2018, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.58 от 11.12.2018