2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2
 
 Re: как правильнее организовать метод последовательных приближен
Сообщение23.07.2009, 11:47 
Аватара пользователя
PAV в сообщении #230749 писал(а):
TOTAL в сообщении #230748 писал(а):
(в несколько раз увеличьте начальное приближение, которое имеется)


Зачем?

Чтобы сделать начальное приближение достаточно большим.

 
 
 
 Re: как правильнее организовать метод последовательных приближен
Сообщение23.07.2009, 11:54 
PAV в сообщении #230751 писал(а):
Теперь осталось понять, почему от этого задача облегчается. По крайней мере, выражения точно не упрощаются.

Ну как? У Вас получается одномерное уравнение вида
$$u={(au+b)^{\alpha_1}\over(cu+d)^{\alpha_2}.$$
Вид правой части -- довольно простой, слишком сильно она приплясывать не будет, остаётся только проанализировать её поведение в зависимости от соотношения показателей.

 
 
 
 Re: как правильнее организовать метод последовательных приближен
Сообщение23.07.2009, 12:08 
PAV в сообщении #230751 писал(а):
Теперь осталось понять, почему от этого задача облегчается.
Ну, мне всегда казалось, что с одной переменной жить легче, чем с двумя. :lol: А теперь ещё кажется, что правая часть элементарно и явно исследуется на интервалы монотонности. (Это когда я перед дифференцированием догадался прологарифмировать). Ну, а ежели что-то дополнительно известно о константах...

 
 
 
 Re: как правильнее организовать метод последовательных приближен
Сообщение23.07.2009, 12:28 
Аватара пользователя
Так, все замечательно, всем большое спасибо, буду пробовать это реализовать и посмотрю, что получится.

-- Чт июл 23, 2009 13:32:11 --

На самом деле, хотя действительно здесь чуда никакого нет, но мне удивительно и неожиданно, что система так красиво свелась к одному уравнению.

 
 
 
 Re: как правильнее организовать метод последовательных приближен
Сообщение23.07.2009, 12:44 
Аватара пользователя
$ x_0 = 2\left( \frac{A}{(1+\beta) C} \right)^{1/\beta}, \; x_1 = 2\left( \frac{D}{(1+\gamma) F} \right)^{1/\gamma} $ и дальше методом Ньютона

 
 
 
 Re: как правильнее организовать метод последовательных приближен
Сообщение23.07.2009, 13:32 
PAV в сообщении #230758 писал(а):
но мне удивительно и неожиданно, что система так красиво свелась к одному уравнению.

Ну это случайность. Хотя и приятная. А вообще множество столь приятных систем имеет меру нуль.

 
 
 
 Re: как правильнее организовать метод последовательных приближен
Сообщение23.07.2009, 13:41 
Аватара пользователя
TOTAL
что-то я не понял, откуда это получилось (и что означает).

 
 
 
 Re: как правильнее организовать метод последовательных приближен
Сообщение23.07.2009, 13:51 
Аватара пользователя
Это начальное приближение для метода Ньютона.
Попробуйте, ведь легко проверить.

 
 
 
 Re: как правильнее организовать метод последовательных приближен
Сообщение23.07.2009, 13:53 
Аватара пользователя
Мне все равно не совсем понятно, зачем искусственно строить (или загрублять имеющееся) начальное приближение, если я предполагаю, что у меня уже есть, причем достаточно близкое к искомому решению.

 
 
 
 Re: как правильнее организовать метод последовательных приближен
Сообщение23.07.2009, 13:57 
Аватара пользователя
PAV в сообщении #230773 писал(а):
у меня уже есть, причем достаточно близкое к искомому решению.

Что такое "достаточно близкое", непонятно. Нужно то, которое гарантирует сходимость.
Попробуйте начальное приближение, которое имеете, увеличить в 5 раз.

 
 
 
 Re: как правильнее организовать метод последовательных приближен
Сообщение23.07.2009, 13:58 
Аватара пользователя
Ваше гарантирует?

 
 
 
 Re: как правильнее организовать метод последовательных приближен
Сообщение23.07.2009, 14:05 
Аватара пользователя
PAV в сообщении #230775 писал(а):
Ваше гарантирует?
Если после первой итерации обе компоненты останутся положительными, то дальше метод сойдется.

-- Чт июл 23, 2009 15:10:40 --

$ x_0 = \left( \frac{A+2B}{(1+\beta) C} \right)^{1/\beta}, \; x_1 = \left( \frac{D+2E}{(1+\gamma) F} \right)^{1/\gamma} $ - вот это гарантирует.

Код:
i=0
x=((A+2.*B)/((beta+1.)*C))**(1./beta)
y=((D+2.*E)/((gama+1.)*F))**(1./gama)

1 write(*,*) i,x,y; read *;  i=i+1
      xb=x**beta;  yg=y**gama
a11=A-(beta+1.)*C*xb
a12=B
a21=D
a22=E-(gama+1.)*F*yg
b1=-beta*C*x*xb
b2=-gama*F*y*yg

det=1./(a11*a22-a12*a21)
x=(b1*a22-b2*a12)*det;  y=(b2*a11-b1*a21)*det;  goto 1

 
 
 
 Re: как правильнее организовать метод последовательных приближен
Сообщение24.07.2009, 22:50 
Аватара пользователя
Возможно, участникам темы будет интересно узнать результаты моих экспериментов.

PAV в сообщении #230729 писал(а):
Решая одну практическую задачу, пришел к следующей системе уравнений относительно $x_0$ и $x_1$:
$$
A x_0 + B x_1 = C x_0^{\beta+1}\eqno(1)
$$
$$
D x_0 + E x_1 = F x_1^{\gamma+1}\eqno(2)
$$


Я каким-то образом реализовал все приведенные здесь идеи и сравнил результаты на решении 920 систем. Для оценки каждого шага итерации использовалась целевая функция, равная сумме модулей разностей левых и правых частей уравнений. Если значение функции уменьшалось, то шаг считался успешным, если увеличивалось - то неудачным. Решение целиком считалось успешным и останавливалось, когда целевая функция становилась меньше $0.000001$

Решение считалось неудачным, если десять итераций подряд были неудачными, или на некоторой итерации какая-то из переменных становилась отрицательной, или сумма переменных становилась меньше $0.001$ (чтобы не свалиться в тривиальное нулевое решение, которое мне не подходит).

Также для успешных решений считалось среднее число произведенных шагов (на одну задачу).

Прежде всего, первая гипотеза ИСН полностью подтвердилась.
ИСН в сообщении #230732 писал(а):
скорее всего из первых двух вариантов один сходится, а другой с такой же скоростью расходится.


Мой первый тривиальный вариант, основанный на формулах
$$
x_0=\frac{x_1(Fx_1^\gamma-E)}{D},\quad x_1=\frac{x_0(Cx_0^\beta-A)}{B}
$$
не сошелся ни разу, а второй, основанный на формулах
$$
x_0=\left(\frac{Ax_0+Bx_1}{C}\right)^{1/(\beta+1)},\quad x_1=\left(\frac{Dx_0+Ex_1}{F}\right)^{1/(\gamma+1)}
$$
сошелся во всех задачах; при этом среднее количество шагов на задачу составило 15.

Метод Ньютона с моими начальными условиями не сошелся 2 раза; в остальных случаях среднее число итераций равнялось 4.

Метод Ньютона с начальными условиями, которые предложил TOTAL сначала
TOTAL в сообщении #230761 писал(а):
$ x_0 = 2\left( \frac{A}{(1+\beta) C} \right)^{1/\beta}, \; x_1 = 2\left( \frac{D}{(1+\gamma) F} \right)^{1/\gamma} $ и дальше методом Ньютона

не сходился довольно часто - 126 раз (в остальных случаях среднее число итераций равнялось 6).

Зато с последними предложенными им начальными условиями метод сошелся во всех задачах и среднее число итераций равнялось 5. Похоже, что это самый лучший вариант; было бы интересно, каким образом были получены данные начальные условия и как обоснована сходимость во всех случаях :roll:

Метод перехода к одной переменной, который предложил Алексей К., я реализовал только в достаточно примитивном варианте: использовал уравнение $u=\cdots$ для метода последовательных приближений. Метод не сошелся 121 раз, среднее число итераций в случае успеха - 45. Возможно, какой-нибудь более разумный метод работал бы лучше, но реализовывать лень.

Наконец, метод, который предложил мат-ламер, основанный на минимизации функции
$$
(A x_0 + B x_1 - C x_0^{\beta+1})^2 + (D x_0 + E x_1 - F x_1^{\gamma+1})^2.
$$
Может быть, я что-то напортачил с реализацией, но результаты меня не очень порадовали. Метод дал ответ во всех случаях, кроме одного, однако работал очень медленно. Среднее число итераций составило 4181. Похоже, что было несколько очень долгих решений, когда программа задумывалась надолго, которые и дали такое большое среднее значение, но в среднем по "разумным" временам число итераций все равно порядка 200.

 
 
 
 Re: как правильнее организовать метод последовательных приближен
Сообщение27.07.2009, 07:18 
Аватара пользователя
PAV в сообщении #231022 писал(а):
было бы интересно, каким образом были получены данные начальные условия и как обоснована сходимость во всех случаях


$$
y=\frac{1}{B}\left(-A x +  C x^{\beta+1}\right), \;\;
x=\frac{1}{E}\left(-D y +  F y^{\gamma+1}\right)
$$
Нарисуем приблизительно графики. У этих функций есть точка пересечения в первом квадранте, которую и отыскиваем. Правее и выше этой точки пересечения находится часть плоскости, с любой точки которой метод Ньютона сойдется (смотри на выпуклость функций).

На графике $y=\frac{1}{B}\left(-A x +  C x^{\beta+1}\right)$ найдем точку с наклоном $2,$ т.е. $\frac{1}{B}\left(-A  + (\beta+1) C x_0^{\beta}\right)=2.$
На графике $x=\frac{1}{E}\left(-D y +  F y^{\gamma+1}\right)$ найдем точку с наклоном $2,$ т.е. $\frac{1}{E}\left(-D + (\gamma+1) F y_0^{\gamma}\right)=2.$

В качестве начального приближения взяв эти $x_0, y_0,$ после первой итерации метода Ньютона обязательно попадем в вышеупомянутую часть плоскости, с которой метод сходится.

 
 
 [ Сообщений: 29 ]  На страницу Пред.  1, 2


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group