Забавное уравнение
-
- Уже с Приветом
- Posts: 8832
- Joined: 18 Feb 2005 08:00
- Location: Yekaterinburg --> Toronto
-
- Уже с Приветом
- Posts: 2001
- Joined: 10 Nov 2004 00:34
- Location: MD
Во первых, аналитически оно не решается.
Но достаточно легко решается методом Ньютона.
1. Метод первого порядка.
Простая формула, но сходится не очень быстро, особенно около точки минимума - за 23 итерации.
x = 1+ln(a)
x = (x+ln(a))/(1+ln(x))
2. Метод второго порядка.
Формула немного сложнее, зато сходится в худшем случае за 5 итераций.
x = sqrt(1+2ln(a))
x = x*(sqrt(ln(x)^2+2ln(a)/x+1)-ln(x))
Но достаточно легко решается методом Ньютона.
1. Метод первого порядка.
Простая формула, но сходится не очень быстро, особенно около точки минимума - за 23 итерации.
x = 1+ln(a)
x = (x+ln(a))/(1+ln(x))
2. Метод второго порядка.
Формула немного сложнее, зато сходится в худшем случае за 5 итераций.
x = sqrt(1+2ln(a))
x = x*(sqrt(ln(x)^2+2ln(a)/x+1)-ln(x))
-
- Уже с Приветом
- Posts: 2001
- Joined: 10 Nov 2004 00:34
- Location: MD
-
- Posts: 7
- Joined: 03 Mar 2003 06:04
-
- Уже с Приветом
- Posts: 2001
- Joined: 10 Nov 2004 00:34
- Location: MD
-
- Уже с Приветом
- Posts: 8832
- Joined: 18 Feb 2005 08:00
- Location: Yekaterinburg --> Toronto
Я вывел следующее:
x = -c*ln c + SQRT ([c*ln c]^2 + c^2 + 2c*ln a),
где с это х из предыдущей итерации.
Юзал формулу Тейлора, отбросил члены выше второго порядка и решал квадратичное уравнение.
А можно это решить как-нибудь позаковыристей, с тригонометрией, через ряды Фурье, например?
PS А почему не существует аналитического решения? И как задать решение одним рядом без итераций? (как будет выглядеть такой ряд?)
x = -c*ln c + SQRT ([c*ln c]^2 + c^2 + 2c*ln a),
где с это х из предыдущей итерации.
Юзал формулу Тейлора, отбросил члены выше второго порядка и решал квадратичное уравнение.
А можно это решить как-нибудь позаковыристей, с тригонометрией, через ряды Фурье, например?
PS А почему не существует аналитического решения? И как задать решение одним рядом без итераций? (как будет выглядеть такой ряд?)
-
- Уже с Приветом
- Posts: 8832
- Joined: 18 Feb 2005 08:00
- Location: Yekaterinburg --> Toronto
-
- Уже с Приветом
- Posts: 10399
- Joined: 04 Feb 2004 14:14
- Location: Edgewater, NJ
Иоп wrote:И как задать решение одним рядом без итераций? (как будет выглядеть такой ряд?)
Ряд Тейлора спасет отца демократии. Стоит однако учестб, что функция должна иметь производные n-го порядка в точке x0. Если x0 = 0, то получается ряд Маклорена
You do not have the required permissions to view the files attached to this post.
-
- Уже с Приветом
- Posts: 2001
- Joined: 10 Nov 2004 00:34
- Location: MD
Иоп wrote:Я вывел следующее:
x = -c*ln c + SQRT ([c*ln c]^2 + c^2 + 2c*ln a),
где с это х из предыдущей итерации.
Это такая же формула, что и у меня под номером 2.
Юзал формулу Тейлора, отбросил члены выше второго порядка и решал квадратичное уравнение.
Это и есть метод Ньютона: http://mathworld.wolfram.com/NewtonsMethod.html
А можно это решить как-нибудь позаковыристей, с тригонометрией, через ряды Фурье, например?
Можно, но обычно метод последовательных приближений самый быстрый.
Сравните 3 итерации по Ньютону и несколько десятков членов ряда.
Например, корень все компьютеры считают именно этим методом.
Да и простое деление очень больших чисел быстрее считать по Ньютону, используя умножение и сложение.
PS А почему не существует аналитического решения? И как задать решение одним рядом без итераций? (как будет выглядеть такой ряд?)
Мне кажется многообещающей формула
Code: Select all
ln(a) - ln(ln(a))
-------------------------
ln(ln(a)) - ln(ln(ln(a)))
которая близка к ответу для очень больших чисел.
Если ето удастся модифицировать, чтобы и при малых аргументах она давала правильный результат...
-
- Уже с Приветом
- Posts: 10399
- Joined: 04 Feb 2004 14:14
- Location: Edgewater, NJ
-
- Уже с Приветом
- Posts: 2001
- Joined: 10 Nov 2004 00:34
- Location: MD
Ещё лучше формула:
Проблема в том, что при малых a формула для d расходится.
Code: Select all
b = ln(a)
c = ln(1+b)
d = c-ln(c-ln(c-ln(c....)))
x = b / d
Проблема в том, что при малых a формула для d расходится.
-
- Уже с Приветом
- Posts: 8832
- Joined: 18 Feb 2005 08:00
- Location: Yekaterinburg --> Toronto
-
- Уже с Приветом
- Posts: 266
- Joined: 23 Oct 2004 22:07
Это уравнение решается в специальных функциях (хотя, конечно, это жульничество , не можем решить уравнение - вводим новую функцию):
x = exp(W(ln(a))
где W - это W функция Ламберта:
http://mathworld.wolfram.com/LambertW-Function.html
x = exp(W(ln(a))
где W - это W функция Ламберта:
http://mathworld.wolfram.com/LambertW-Function.html
-
- Уже с Приветом
- Posts: 605
- Joined: 14 Feb 2002 10:01
- Location: Russia
-
- Уже с Приветом
- Posts: 605
- Joined: 14 Feb 2002 10:01
- Location: Russia