Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.05.24;
Скачать: [xml.tar.bz2];

Вниз

Как решить уравнение(если можно)?   Найти похожие ветки 

 
Кое кто   (2009-03-17 19:01) [0]

x^x = a


 
тимохов ©   (2009-03-17 19:03) [1]

методом герона


 
Кое кто   (2009-03-17 19:04) [2]

тимохов ©
А поточнее можно, я уже испробовал многое...


 
тимохов ©   (2009-03-17 19:04) [3]

Вот он
http://ru.wikipedia.org/wiki/%D0%98%D1%82%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D1%84%D0%BE%D1%80%D0%BC%D1%83%D0%BB%D0%B0_%D0%93%D0%B5%D1%80%D0%BE%D0%BD%D0%B0


 
тимохов ©   (2009-03-17 19:06) [4]

в принципе в виках описан алгорим для любой степени.
главное сходится быстро. но нужно начальное приближение. :)


 
тимохов ©   (2009-03-17 19:06) [5]

а... блин,  :) это x в степени x
а я подумал, что помножить

не пойдет :)


 
Кое кто   (2009-03-17 19:14) [6]

Я пока что думаю, преобразовать его в ln x = ln a (1/x)... А дальше нужно найти пересечение графиков, обвести квадратом эту области и устремить сторону квадрата к нулю, тогда по идеи, мы найдем точку, ну как это математизировать??


 
Игорь Шевченко ©   (2009-03-17 19:31) [7]

с английским у тебя проблемы уже закончились ?


 
DillerXX ©   (2009-03-18 00:04) [8]

Вижу 2 способа:
1) Метод Ньютона
2) Бинарный поиск
Помидорами не кидать.


 
DillerXX ©   (2009-03-19 02:56) [9]

Какого-то хрена, в 2.10 ночи меня дёрнуло написать код этой задачи методом Ньютона :( В результате промучался проблемой начального приближения, но десятичный логарифм оказался кстати. Так вот, сразу выяснил, что программа работает для любых чисел в диапазоне 1..10^30 (и больше), а вот в интервале (0..1) не для всех. Методом мартышки выяснил, что для всех чисел меньших числа 0.6922006275554 x рано или поздно вылетает в x < 0, и на очередной итерации получается бесконечность. С мыслью, а не это ли число искали в "автостопом по галактике", пойду спать.
Вот код, хотя автору вряд ли уже нужно.


#include <algorithm>
#include <iostream>
#include <cmath>

using namespace std;

double EPS = 1E-13;

int main()
{
freopen("input.txt", "rt", stdin);
freopen("output.txt", "wt", stdout);
double a, x0, x1;
cin >> a;
int iters = 0;
x0 = log10(a) + 1;
for (;;)
{
 x1 = x0 - ((pow(x0, x0) - a) / ((log(x0) + 1) * pow(x0, x0)));
 if (abs(x1 - x0) < EPS)
  break;

 ++iters;
 x0 = x1;
 if (iters > 1000000)
 {
  puts("Oh f*ck :(");
  break;
 }
}


printf("Iteration: %d\nanswer: %.15f", iters, x0);

}


 
Eraser ©   (2009-03-19 03:43) [10]

> Как решить уравнение(если можно)?

в среднюю школу запишись.


 
Дуб ©   (2009-03-19 05:50) [11]

> а вот в интервале (0..1) не для всех

И это понятно, достаточно начертить график. Лучше хордами там.


 
Дуб ©   (2009-03-19 05:57) [12]


> Методом мартышки выяснил, что для всех чисел меньших числа
> 0.6922006275554 x рано или поздно вылетает

Методом научного анализа устанавливается, что для чисел меньше 0,692200628 = (1/e)^(1/e) уравнение не имеет решения в положительном действительном диапазоне. В интервале же от этого до 1(не включая 1) имеет по 2 решения.


 
DillerXX ©   (2009-03-19 09:32) [13]


> Методом научного анализа устанавливается, что для чисел
> меньше 0,692200628 = (1/e)^(1/e) уравнение не имеет решения
> в положительном действительном диапазоне. В интервале же
> от этого до 1(не включая 1) имеет по 2 решения.

Спасибо что объяснили! А есть способы не-численного решения, или более быстро-сходящиеся способы?


 
Дуб ©   (2009-03-19 11:19) [14]

>DillerXX ©   (19.03.09 09:32) [13]

В квадратурах скорее всего не существует решения. Но, по хорошему, это доказать надо.

Сходимость хорошая, вычисления не сложные - ускорять смысла нет. Про хорды - это от начального приближения зависит. Для правой части больше 1 начально приближение - любое больше 1. Для меньших одно решение - начальное любое больше 1/е. И тут в обоих случаях сработает Ньютон.
Для второго же решения для меньших 1 - я бы хорды взял. Начальное приближение интервал [0,1/e]. Функцию x^x в 0 замыкаем на 1 и вперед.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2009.05.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.006 c
3-1221221950
ореол
2008-09-12 16:19
2009.05.24
Неправильный шрифт в таблице


2-1239196029
Лёша
2009-04-08 17:07
2009.05.24
Как создать диалог выбора записей?


15-1237568747
@!!ex
2009-03-20 20:05
2009.05.24
Подскажите литературу во вселенной киберпанка.


2-1239098097
Анфиса
2009-04-07 13:54
2009.05.24
Модуль MathLabel


2-1239120004
tony
2009-04-07 20:00
2009.05.24
аналог EOMSG в Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский