Russian Qt Forum
Ноябрь 22, 2024, 22:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3 4   Вниз
  Печать  
Автор Тема: Матьиматика  (Прочитано 23421 раз)
OKTA
Гость
« : Октябрь 20, 2014, 12:18 »

Товарищи, есть функция вида x = y * exp(y). Как вывести y??  Веселый
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Октябрь 20, 2014, 13:30 »

Товарищи, есть функция вида x = y * exp(y). Как вывести y??  Веселый
Вывести куда? На улицу и там разобраться? Улыбающийся Наверное имелось ввиду "выразить y через x", т.е. найти обратную ф-цию. Точно помню - производная обратной равна 1 / производную прямой

(y * exp(y))' = exp(y) * (1 + y)  // производная прямой ф-ции
Значит обратная будет =
Цитировать
интеграл(1 / (exp(y) * (1 + y))
Ну конечно такой интеграл я не возьму - но погуглите, помню видел взятие интегралов в online. Не исключено что он берется
Записан
Day
Частый гость
***
Offline Offline

Сообщений: 290


Просмотр профиля
« Ответ #2 : Октябрь 20, 2014, 15:54 »

Не исключено что он берется
Исключено (в элементарных функциях)
Записан
OKTA
Гость
« Ответ #3 : Октябрь 20, 2014, 16:02 »

намек на то, что выразить y через х не удастся?
Записан
Day
Частый гость
***
Offline Offline

Сообщений: 290


Просмотр профиля
« Ответ #4 : Октябрь 20, 2014, 16:07 »

намек на то, что выразить y через х не удастся?
В элементарных функциях - нет, не удастся. Доказано. Можно через специальную функцию "интегральный синус"
https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D1%81%D0%B8%D0%BD%D1%83%D1%81
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #5 : Октябрь 20, 2014, 16:08 »

Товарищи, есть функция вида x = y * exp(y). Как вывести y??  Веселый

Аналитически вы не выразите y через x..

Но численно это делается достаточно просто..
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
OKTA
Гость
« Ответ #6 : Октябрь 20, 2014, 16:10 »

Ну, численно это понятно, график построить всегда можно.
Но вот интегральный синус меня печалит..  Плачущий

Или намек не просто на график, а на вывод зависимости по графику?
« Последнее редактирование: Октябрь 20, 2014, 16:14 от OKTA » Записан
Day
Частый гость
***
Offline Offline

Сообщений: 290


Просмотр профиля
« Ответ #7 : Октябрь 20, 2014, 16:36 »

ОКТА, оставьте напрасные надежды. Интеграл exp(x)dx/x в элементарных функциях НЕ БЕРЕТСЯ. Как и все, к нему сводящиеся. Доказано, ИМХО, еще до Эйлера.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #8 : Октябрь 20, 2014, 16:36 »

Если верить маткаду, то в аттаче решение.
Ei - интегрально показательная функция
Записан
OKTA
Гость
« Ответ #9 : Октябрь 20, 2014, 16:46 »

Да, тут на работе уже кандидат один и доктор подтвердили, что никак  Смеющийся
Но все равно, спасибо всем!  Веселый
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #10 : Октябрь 20, 2014, 16:50 »

Ну, численно это понятно, график построить всегда можно.
Но вот интегральный синус меня печалит..  Плачущий

Или намек не просто на график, а на вывод зависимости по графику?
Сейчас вам в уши тут надуют)
То что там выше понаписано - полная ерунда.. я про это:
Цитировать
интеграл(1 / (exp(y) * (1 + y))
Ну конечно такой интеграл я не возьму - но погуглите, помню видел взятие интегралов в online. Не исключено что он берется
Вообще непонятно что это даст..

Можно свести это выражение к интегральной форме, но в итоге это всё равно приведёт к начальной неявной зависимости y(x)..
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #11 : Октябрь 20, 2014, 16:51 »

Если верить маткаду, то в аттаче решение.
Ei - интегрально показательная функция

Только вот это решение не имеет никакого отношения к первоночальной задаче..
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #12 : Октябрь 20, 2014, 17:18 »

Значит обратная будет =
Цитировать
интеграл(1 / (exp(y) * (1 + y))
Да, неверно. Интегрировать-то надо по dx (в не по dy). Т.е. когда получили производную прямой - надо выразить ее через x. Пример

x = exp(y) // прямая
x' = exp(y)  // производная прямой
y' = 1/x' = 1/exp(x) => 1 / x  // выражаем y через x
интеграл(1/x) dx = ln(x)  // нашли обратную

Но в случае y * exp(y) избавиться от y не удается

ОКТА, оставьте напрасные надежды. Интеграл exp(x)dx/x в элементарных функциях НЕ БЕРЕТСЯ. Как и все, к нему сводящиеся. Доказано, ИМХО, еще до Эйлера.
Если нетрудно, покажите доказуху  Улыбающийся
Записан
Day
Частый гость
***
Offline Offline

Сообщений: 290


Просмотр профиля
« Ответ #13 : Октябрь 20, 2014, 17:27 »

Доказухи не нашел. Но вот такая парочка ссылок. Я думаю, что если бы интегральная экспонента выражалась бы через элементарные, то не было бы смысла вводить для нее СПЕЦИАЛЬНУЮ функцию. Но это, конечно, не доказательство, а так, общие соображения
https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BF%D0%BE%D0%BA%D0%B0%D0%B7%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F
https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B5%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #14 : Октябрь 20, 2014, 18:26 »

Вообще какая то раздутая проблема..

Это решается банальным нахождением корня уравнения x = y*exp(y).. Например, обычным bisection..

Код
C++ (Qt)
#include <iostream>
#include <fstream>
 
#include <boost/math/tools/roots.hpp>
 
template <class T>
T my_func(const T & x, const T & err = 0.000001)
{
   using namespace boost::math::tools;
   const T min = 0;
   const T max = x; // x >= 0
 
   auto res = bisect([&](const T& s) { return x - s * exp(s); }, min, max,
   [&](const T& a, const T& b) { return std::fabs(b-a) <= err; });
 
   return (res.first + res.second)/2;
}
 
int main()
{
   double x = 0;
   const double dx = 0.01;
 
   std::ofstream out("data.txt");
 
   while (x < 100)
   {
       out << x << " " << my_func(x) << std::endl;
       x += dx;
   }
 
   return 0;
}
 


При x < 0, решения не существует вовсе.. А вот при каких x решения не существует - вопрос интересней)
« Последнее редактирование: Октябрь 20, 2014, 19:37 от m_ax » Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Страниц: [1] 2 3 4   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.141 секунд. Запросов: 23.