1 / 1 / 0
Регистрация: 22.11.2009
Сообщений: 37
|
|
1 | |
Как запрограммировать экспоненту01.08.2010, 17:50. Показов 18240. Ответов 26
Метки нет Все метки)
(
Добрый вечер!
Помогите пожалуйста с вопросом: как запрограммировать функцию exp(x). Это стандартная функция, мне нужно сделать аналог своей функции. exp(x) = 1 + x + (x^2)/2!+(x^3)/3!....+(x^n)/n!+..... Нужно использовать несколько циклов?
0
|
01.08.2010, 17:50 | |
Ответы с готовыми решениями:
26
Помогите запрограммировать экспоненту за соотношением... Как запрограммировать тест-программу на C++? Как запрограммировать математические многочлены, формулы? |
В астрале
![]() ![]() 8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
01.08.2010, 18:11 | 2 |
Rooney, exp=1 изначально. написать функцию факториала дополнительно. цикл начинать с 1:
exp+=(pow(x,i)/fact(i))
0
|
![]() ![]() |
||||||
01.08.2010, 18:14 | 3 | |||||
ряд, который вы привели не совсем экспонента. функция эскпоненты должна возвращать число e в степени x. у вас просто какая-то прогрессия, описать ее можно вот так.
если я все правильно понял ![]()
0
|
1 / 1 / 0
Регистрация: 22.11.2009
Сообщений: 37
|
|
01.08.2010, 18:22 [ТС] | 4 |
Спасибо всем!! Щас попробую разобраться))
0
|
![]() ![]() |
|
01.08.2010, 18:32 | 5 |
ну я говорю, я не экспоненту писал, а вычисления ряда.
а там было так: exp(x) = 1 + x + (x^2)/2!+(x^3)/3!....+(x^n)/n!+..... 1 + х, x - стартовое значение должно увеличиться на единицу, вот и все. но ошибка все таки есть =) цикл надо было с двойки начинать ![]() Не по теме: честно говоря, я не пробовал запускать, то что написал :-[
0
|
В астрале
![]() ![]() 8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
01.08.2010, 18:32 | 6 | |||||
fasked, Имхо так будет более похоже на данную последовательность
0
|
01.08.2010, 18:35 | 8 |
Не по теме: fasked, =) Я просто посмотрел на результат того что выдает твоя функция и надолго впал в ступор) 3 3 дает 10706 и какие-то копейки)
0
|
бжни
![]() 2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
||||||
01.08.2010, 18:59 | 9 | |||||
эфеективность плачет горькими слезами...
это ряд экспоненты, все правильно
2
|
1 / 1 / 0
Регистрация: 22.11.2009
Сообщений: 37
|
||||||
01.08.2010, 19:59 [ТС] | 10 | |||||
Как известно, есть в C встроенная функция (при подключении пакета #include<math.h>) вызывается exp(x)
Мне надо создать функцию с двумя аргументами, exp1(x,eps), где eps -- эпсилон. В сумме нужно учитывать все слогаемые больше этого эпсилон. Тогда значение своей функции будет очень близким к значению стандартной функции.
Добавлено через 57 секунд Пожалуйста, если вам не сложно не используйте С++ вариант..я ещё пока на стадии изучения языка С ![]()
0
|
![]() 115 / 36 / 3
Регистрация: 13.12.2009
Сообщений: 223
|
|
01.08.2010, 20:16 | 11 |
тогда сделай цикл while(sagaemoe>epsilon){.....}
как сслогаемое меньше выходит из цикла
0
|
бжни
![]() 2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
||||||
01.08.2010, 21:48 | 12 | |||||
1
|
1 / 1 / 0
Регистрация: 22.11.2009
Сообщений: 37
|
||||||
01.08.2010, 22:13 [ТС] | 13 | |||||
Постарался оформить по-своему. При вводе 2 и Эпсилон = 0.000001 результат отличается на несколько тысячных.. Чем дальше тем больше неточность... при вводе 8 и Эпсилон 0.00001 результат получается отрицательным, тогда как системное значение увеличивается
Вот корректные условия задачи : Описать функцию Exp1(x,eps) вещественного типа (параметры x, eps -- вещественныеб eps >0), находящую приближённое значение функции exp(x): exp(x) = 1+x+(x^2)/(2!)+(x^3)/(3!)+...+(x^n)+... В сумме учитывать все слагаемые, большие epsilon.
0
|
бжни
![]() 2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
01.08.2010, 22:14 | 14 |
Rooney, обратите внимание на мой пример - пересчитывать степень и факториал постоянно совершенно не надо
алгоритм странный, но вроде правильный, возможно факториал изза алгоритма получается очень большим и не помещается в int учитывайте, что точность результата должна быть порядка задаваемого eps
0
|
1 / 1 / 0
Регистрация: 22.11.2009
Сообщений: 37
|
||||||
01.08.2010, 22:45 [ТС] | 15 | |||||
Да, действительно Ваш способ лучше, но пожалуйста не могли бы вы прокомментировать этот кусок:
Но в условии задачи к сожалению функция вызывается только двумя параметрами: x и epsilon.
0
|
бжни
![]() 2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
01.08.2010, 22:50 | 16 |
последнее слагаемое больше эпсилон
dTemp - слагаемое x^n/n! вместо того, чтобы заново считать слагаемое x^(n+1)/(n+1)! можно просто домножить dTemp*x/(n+1) насчет шага сами решите как его возвращать, вы его никак не возвращаете
0
|
В астрале
![]() ![]() 8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
01.08.2010, 23:32 | 17 | |||||
Четко. Сравните.
Хех. Для двух работало а дальше что-то стопорится. Сейчас попробую исправить. Ссори ЗЫ для 8 и 0.00001 не могу понять что происходит. Факториал i увеличивается бесконечно. Следовательно факториал просто не влезает, ибо максимум факториал 20-21 память может в себя вместить. Даже если использовать самый большой целочисленный тип До пяти - работает. Дальше факториал превышает возможное. Так что... При точности 0.1 - до семи. При 0.01 - до шести. ЗЫ различия минимальные с результатом стандартной функции. При 0.001 до пяти и т.д. При 1 и 0.0000001 выдает 2.71828, что есть правильное значение экспоненты
%g можно заменить на %f для большей точности вывода
0
|
1 / 1 / 0
Регистрация: 22.11.2009
Сообщений: 37
|
|
02.08.2010, 11:45 [ТС] | 18 |
alex_x_x,
Скажите пожалуйста можно ли обойтись без указателя, и если не сложно объясните как он работает в этой программе. Ваш Вариант самый точный! (переменная int* step); И где мы задаём значение для этой константы : const double precision.
0
|
бжни
![]() 2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
02.08.2010, 14:07 | 19 |
Rooney, вы сказали, что вам на си надо, на си по-другому нельзя изменять значения параметров, можно использовать ссылку как в первом варианте, можно вообще забить на шаг, просто уберите его из заголовка функции
0
|
![]() 3576 / 2721 / 350
Регистрация: 11.03.2009
Сообщений: 6,264
|
||||||
02.08.2010, 14:17 | 20 | |||||
Можно обойтись без указателя, просто убери его объявление в прототипе и удали строку
Добавлено через 3 минуты Lavroff, настоятельно рекомендую ознакомиться с терминами "аналитическая форма записи" и "рекурентная форма записи" ![]()
1
|
02.08.2010, 14:17 | |
Помогаю со студенческими работами здесь
20
Как запрограммировать функцию со сменным количеством параметров C++ Threads или как запрограммировать кнопку Старт и Стоп Как запрограммировать в рекурсивной форме алгоритм бинарного поиска Посчитать экспоненту в степени -х с заданной точностью Сколько в float выделяется под экспоненту ? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Циклы for в Python
py-thonny 17.03.2025
Существует множество ситуаций, когда нам нужно выполнить одно и то же действие несколько раз. Цикл for в Python — настоящий рабочий конь для большинства программистов. Если вам нужно пройтись по всем. . .
|
Предсказание ветвлений - путь к высокопроизводительному C++
NullReferenced 17.03.2025
В высокопроизводительном программировании на C++ каждый такт процессора на счету. Когда речь заходит о разработке систем с низкой задержкой — будь то высокочастотная торговля, обработка потоковых. . .
|
Паттерн CQRS в C#
UnmanagedCoder 17.03.2025
Создание сложных корпоративных приложений часто требует нестандартных подходов к архитектуре. Один из таких подходов — паттерн CQRS (Command Query Responsibility Segregation), предлагающий простую,. . .
|
Паттерн Цепочка ответственности в C#
UnmanagedCoder 17.03.2025
Цепочка ответственности — это поведенческий паттерн проектирования, который позволяет передавать запросы последовательно по цепочке потенциальных обработчиков, пока один из них не обработает запрос. . . .
|
Создаем микросервисы с NestJS, TCP и Typescript
run.dev 17.03.2025
NestJS — фреймворк, который значительно упрощает создание серверных приложений на Node. js. Его прелесть в том, что он комбинирует концепции ООП, функционального программирования и предлагает. . .
|
Гексагональная архитектура со Spring Boot
Javaican 17.03.2025
Если вы когда-нибудь сталкивались с ситуацией, когда внесение простых изменений в базу данных или пользовательский интерфейс заставляло вас переписывать весь код, то вы точно оцените элегантность. . .
|
Позиционирование Kafka Consumer и Seek-операции
Javaican 17.03.2025
Что же такое Consumer Seek в Kafka? По сути, это API-метод, который позволяет программно указать, с какой позиции (offset) Consumer должен начать или продолжить чтение данных из партиции. Без этого. . .
|
Python NumPy: Лучшие практики и примеры
py-thonny 17.03.2025
NumPy (Numerical Python) — одна из ключевых библиотек для научных вычислений в Python. Она превращает Python из просто удобного языка общего назначения в среду для проведения сложных математических. . .
|
Java Micronaut в Docker: контейнеризация с Maven и Jib
Javaican 16.03.2025
Когда речь заходит о микросервисной архитектуре на Java, фреймворк Micronaut выделяется среди конкурентов. Он создан с учётом особенностей облачных сред и контейнеров, что делает его идеальным. . .
|
Управление зависимостями в Java: Сравнение Spring, Guice и Dagger 2
Javaican 16.03.2025
Инъекция зависимостей (Dependency Injection, DI) — один из фундаментальных паттернов проектирования, который радикально меняет подход к созданию гибких и тестируемых Java-приложений. Суть этого. . .
|