Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Численные методы. Решение трансцендентного уравнения методом итераций. / 25 сообщений из 41, страница 1 из 2
07.04.2006, 21:34:25
    #33653419
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Численные методы. Решение трансцендентного уравнения методом итераций.
Есть трансцендентное уравнение.

ƒ(x) = 0
ƒ(x) = x - Sqrt(Lg(x) - 2)

Вместе с этими заданиями мне дали методичку в которой описан процесс решения.
Там сказанно, что ƒ(x) надо преобразовать в φ
...
Рейтинг: 0 / 0
07.04.2006, 21:43:37
    #33653430
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Численные методы. Решение трансцендентного уравнения методом итераций.
SarinЕсть трансцендентное уравнение.

ƒ(x) = 0
ƒ(x) = x - Sqrt(Lg(x) - 2)

Вместе с этими заданиями мне дали методичку в которой описан процесс решения.
Там сказанно, что ƒ(x) надо преобразовать в φ
Простите. Кнопачка нажалась нечаянно.
Есть трансцендентное уравнение.

ƒ(x) = 0
ƒ(x) = x - Sqrt(Lg(x) - 2)

Вместе с этими заданиями мне дали методичку в которой описан процесс решения.
Там сказанно, что ƒ(x) надо преобразовать в φ(x). Сказанно что этого можно добится разрешением ƒ(x) относительно x. Что такое разрешение я не знаю. А можно таким преобразованием:
φ(x) = x + λƒ(x)
При этом за методикой подбора λ рекомендуют обращаться к книжке которой у меня у меня нет.

Соответственно вопрос: как λ подобрать?
...
Рейтинг: 0 / 0
07.04.2006, 22:22:42
    #33653455
mikhail_n
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Численные методы. Решение трансцендентного уравнения методом итераций.
Если я Вас правильно понял, Вы пытаетесь решить ур-е

lg(x) = x*x + 2

Боюсь вас огорчить, но действительного решения у этого ур-я нет (ну так уж сложилось что x*x растет значительно быстрее lg(x)). Судя по тому, что Вас просят сделать в методичке, предполагается решать это ур-е т.н. методом простой итерации. Этот метод сходится только в том случае, если

а)в окрестности корня производная того, что остаётся после выражения f(x) через x по модулю меньше 1;
б)Вам с первой же итерации удалось попасть в эту окрестность.

Не то чтобы этот метод совсем уж был плох, но при изучении вычматов как при выращивании хорошего футболиста - если с детства технику не поставишь, так и будет всё жизнь и сам толком не играть и тем кто умеет играть ноги ломать. Поэтому берём учебник и смотрим "Метод Ньютона для решения систем нелинейных алгебраических уравнений". Тоже не панацея, но панацеи в этом деле быть и не может. Но тем не менее в реальной прикладной математике это "промышленный" метод для таких задач. Успехов.
...
Рейтинг: 0 / 0
07.04.2006, 22:36:13
    #33653465
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Численные методы. Решение трансцендентного уравнения методом итераций.
Большое спасибо. Когда мне были нужны эти методы я их знал. С вышкой у меня напряжонно-мирные отношения. Я могу в неё врубится. Но сейчас этих всех методов не помню.

Там не квадрат. Там корень.

Решать итерациями велено в задании.
...
Рейтинг: 0 / 0
07.04.2006, 22:48:41
    #33653475
fabler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Численные методы. Решение трансцендентного уравнения методом итераций.
если надо, завтра напомню смысл методов Ньютона, половинного деления и дихотомии, можно даже золотого сечения, если поможет.
...
Рейтинг: 0 / 0
07.04.2006, 22:49:21
    #33653476
fabler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Численные методы. Решение трансцендентного уравнения методом итераций.
fablerесли надо, завтра напомню смысл методов Ньютона, половинного деления и дихотомии, можно даже золотого сечения, если поможет.
да, и ресов отправлю а то флоты только завта с утра приходят
...
Рейтинг: 0 / 0
08.04.2006, 00:19:55
    #33653521
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Численные методы. Решение трансцендентного уравнения методом итераций.
fablerесли надо, завтра напомню смысл методов Ньютона, половинного деления и дихотомии, можно даже золотого сечения, если поможет.
Спасибо. Мне для дела нужны только итерации. Но в хозяйстве не помешает.
Дихотомию вообще первый раз слышу.
...
Рейтинг: 0 / 0
08.04.2006, 00:52:12
    #33653534
c127
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Численные методы. Решение трансцендентного уравнения методом итераций.
Sarin fablerесли надо, завтра напомню смысл методов Ньютона, половинного деления и дихотомии, можно даже золотого сечения, если поможет.
Спасибо. Мне для дела нужны только итерации. Но в хозяйстве не помешает.
Дихотомию вообще первый раз слышу.

Гораздо проще решать методом деления попалам, чем методом Ньютона, он сходится чуть медленнее, но зато нет проблем с производными. Это тоже итерации, так что основное условие выполнено. Единственное ограничение - функция должна быть непрерывной в области определения. Если нулей несколько то метод найдет один из них.

Записываем уравненеие в виде F(x)=0, пусть g - заданная точность;
находим две точки x0, x1 из области определения, в которых F имеет разные знаки, если |F(xi)|<g то решение найдено;
(*) делим отрезок [x0,x1] попалам точкой x2 (можно делить в любой пропорции, но можно доказать что попалам дает в среднем наилучший результат);
если |F(x2)|<g, то это решение,
если нет то из трех точек {x0,x1,x2} выбираем две, в которых F имеет разные знаки и переходим к (*).
...
Рейтинг: 0 / 0
08.04.2006, 01:02:34
    #33653541
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Численные методы. Решение трансцендентного уравнения методом итераций.
c127
Спасибо большое.
Думаю надо всётаки с преобразованием уравнения.

У меня интервал изоляции находился через шаг 0.00000001
при заданной точности 0.001. Так что уравнение фактически решено.

Но я сам загорелся мыслью сделать через итерации.

Как я понял главная фишка метода итерациии в том, что каждый новый x по модулю будет менше предыдущего.
Зачем там новый x суммируется с предыдущим?
...
Рейтинг: 0 / 0
08.04.2006, 01:03:33
    #33653543
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Численные методы. Решение трансцендентного уравнения методом итераций.
проц на минуту очень крепко задумывается
...
Рейтинг: 0 / 0
08.04.2006, 04:40:13
    #33653564
mikhail_n
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Численные методы. Решение трансцендентного уравнения методом итераций.
Да ничего там не суммируется. Метод простой итерации состоит в следующем: есть нелинейное алгебраическое ур-е:

F(x) = 0

перепишем его в виде:

F(x) + x = x

это собственно и значит разрешить его относительно х. Обозначим теперь то, что получилось слева f(x):

f(x) = F(x) + x

таким образом, начальное ур-е свелось к:

f(x) = x

а вот собсно и метод простой итерации:

x(n + 1) = f(x(n))

очевидно, что если x* является корнем уравнения, то линеаризуя в его окрестности, получим:

x(n + 1) - x* = f'(x*)*(x(n) - x*)

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

|f'(x*)| < 1

Вот и вся арифметика.

Теперь про деления пополам, золотое сечение и прочиe штуки очень популярные в учебниках по программированию. Одно нелинейное уравнение Вы этими методами таки довольно легко решите. При большом усилии воли может быть даже систему из двух нелинейных уров с двумя неизвестными. При попытке поднять что-нибудь типа 10000 нелинейных уров с 10000 неизвестными (пусть даже хорошо разреженную) - грыжа гарантирована. Если думаете что 10000 это какое то приувеличение, то насегодня это семечки. В реальных задачах дело доходит до миллионов уров и колют их Ньтоном, ну или модифицированным Ньтоном-Рафсоном, ну если таки колют а не юзают явные схемы. Да, да, знаю, помню, аффтар просил только одно ур-е и всё такое. Сарин, если планируете заниматься выч. матами профессионально - забудьте деление пополам. Если только чтоб лабу сдать и забить на это - делите пополам.
...
Рейтинг: 0 / 0
08.04.2006, 09:28:35
    #33653585
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Численные методы. Решение трансцендентного уравнения методом итераций.
Спасибо.

Да я понял что деление пополам бесперспективно. Слишком трудоёмкие вычисления и медленная сходимость.
...
Рейтинг: 0 / 0
08.04.2006, 10:40:31
    #33653625
fabler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Численные методы. Решение трансцендентного уравнения методом итераций.
" итерация " - это шаг решения (а не метод!), поэтому любой циклический метод - итеративный .
Сегодня прочитал твою задачу, там сказано решать ее методом простой итерации (последовательной итерации). У тебя есть по нему материал?
...
Рейтинг: 0 / 0
08.04.2006, 10:57:55
    #33653644
fabler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Численные методы. Решение трансцендентного уравнения методом итераций.
x = - Sqrt(Lg(x) - 2), т.е. x = φ(x), с производной φ(x) у тебя все нормально (см. рисунок)
далее выбираешь начальное приближение на первом шаге х(0) и вперед:
х(1) = φ(x(0))
х(2) = φ(x(2))... так ты придедешь к победе коммунизма, только в окрестности самого корня будет очень медленно сходиться к корню, поэтому применяют совместно МПИ и метод Ньютона - Рафсона. Но тебе предлагаю забить на это.
...
Рейтинг: 0 / 0
08.04.2006, 10:58:26
    #33653645
fabler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Численные методы. Решение трансцендентного уравнения методом итераций.
рисунок забыл :)
...
Рейтинг: 0 / 0
08.04.2006, 14:33:38
    #33653767
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Численные методы. Решение трансцендентного уравнения методом итераций.
fabler, вот спасибо тебе огромное.

Девчёнка которой я это делаю будет тебе безмерно благодарна:)
...
Рейтинг: 0 / 0
08.04.2006, 16:17:05
    #33653829
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Численные методы. Решение трансцендентного уравнения методом итераций.
Я, наверное, что-то не правильно делаю.

Ещё в методичке указанна величина q. А откуда её брать не понятно. Нужна для определения точности.

Вот код.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
 program  Project2;

 {$APPTYPE CONSOLE} 

 uses 
  math,
  System;

 const 
  DELTA_X =  0 . 1 ;   {Ýòî ÿ áàëîâàëñÿ. DELTA_X ñòàâü ìíîãî ìåíüøå. Èíà÷å âàøè êîìïû îõðåíåþò òàê ñ÷èòàòü. Ó ìåíÿ ìàøèíà ìèíóòó äóìàëà.} 
  EPSILON =  0 . 001 ;

 {function - ðàçäåë îïèñàíèÿ ôóíêöèè.
Ñèíòàêñèñ:
function [èìÿ](<ïàðàìåòðû>)[: òèï âîçâðàùàåìîãî ðåçóëüòàòà];
begin
  êîä ôóíêöèè.
end;

ôóíêöèè ìîãóò ïåðåäàâàòüñÿ ïàðàìåòðû. Ìîãóò íå ïåðåäîâàòüñÿ. Ôóíêöèÿ âîçâðàùàåò ðåçóëüòàò.
 ôóíêöèè àâòîìàòè÷åñêè îïðåäåëåíà ïåðåìåííàÿ ñ èìåíåì ôóíêöèè. Ïðèñâàèâàÿ åé ÷òî-òî âîçâðàùàåøü ðåçóëüòàò.
 äàííîé ôóíêöèè âñ¸ âðîäå ïîíÿòíî è ïðîçðà÷íî.
Ïîìèìî ôóíêöèé åñòü åù¸ ïðîöåäóðû. Îòëè÷èå òîëüêî â òîì ÷òî ïðîöåäóðà íå âîçâðàùàåò çíà÷åíèå.
 áîëüøèíñòâå ÿçûêîâ ïðîãðàììèðîâàíèÿ ôóíêöèè è ïðîöåäóðû íå ðàçäåëÿþòñÿ ïîñðåäñòâàì êëþ÷åâûõ ñëîâ.
 òàêèõ ÿçûêàõ îòëè÷èå ëèø â òîì ÷òî â ôóíêöèè ïðîèçâîäèòñÿ ïîäú¸ì êàêîãî-òî çíà÷åíèÿ ïî ñòýêó. Òîåñòü âîçâðàò ðåçóëüòàòà.
procedure è function ÿ âèäåë òîëüêî â ïàñêàëå.

Ôóíêöèÿ òóò îïèñûâàåò ôóíêöèþ èñ çàäàíèÿ.
} 
 function  f(x: real): real;
 begin 
  f := x - sqrt(ln(x +  2 ));
 end ;

 function  fi(x: real): real;   {äåëàåì åù¸ îäíó ôóíêöèþ. Ñì. îïèñàíèå ìåòîäà èòåðàöèé} 
 begin 
  fi := x + f(x);
 end ;

 var 
  x, x1: real;
 begin 
   {Èíòåðâàë èçîëÿöèè òðåáîâàëîñü íàéòè ãðàôè÷åñêè. Ìíå áûëî ëåíü è ÿ íàøîë ÷èñëåííî.
  Åñëè áîèøüñÿ íå îáúÿñíèòü òî óäàëè ýòîò ó÷àñòîê êîäà.} 
  x := - 1 ;
   while  (f(x) * f(x + DELTA_X) >  0AND  (x <  10do  x := x + DELTA_X;
  writeln(x: 1 : 8 , ' ', (abs(fi(fi(x)) - fi(x)) > EPSILON));
  readln;
   while  (abs(fi((fi(x))) - fi(x)) > EPSILON)  do 
   begin 
    readln;
    write(fi(fi(fi(x))): 1 : 8 , ' fi(fi(x)) ', fi(fi(x)): 1 : 8 , ' abs((fi(x)) - fi(fi(x)) ', abs((fi(x)) - fi(fi(x))): 1 : 8 , ' x: ', x: 1 : 8 );
    x := fi(x);
   end ;
  writeln(fi(fi(fi(x))): 1 : 6 , ' ', fi(fi(x)): 1 : 6 , ' ', abs(fi(fi(x)) - fi(x)): 1 : 6 , ' ', x: 1 : 6 , ' ', f(x): 1 : 6 );
  readln;
   { TODO -oUser -cConsole Main : Insert code here } 
 end .
...
Рейтинг: 0 / 0
08.04.2006, 16:19:42
    #33653831
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Численные методы. Решение трансцендентного уравнения методом итераций.
Опять кнопачка сама нажалась падла.

В общем нет схождения.
...
Рейтинг: 0 / 0
08.04.2006, 17:30:58
    #33653870
-me-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Численные методы. Решение трансцендентного уравнения методом итераций.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 perl -e '$x = 10; $eps = 0.0001; do {$xp = $x; $x = sqrt(log($x+2)); print "$x\n" } while(abs($x-$xp)>$eps) '
 1 . 57635866787606 
 1 . 12886896976786 
 1 . 06802227867072 
 1 . 05878852709375 
 1 . 05736414323271 
 1 . 0571438661097 
 1 . 05710978758515 
...
Рейтинг: 0 / 0
08.04.2006, 23:53:59
    #33654052
fabler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Численные методы. Решение трансцендентного уравнения методом итераций.
SarinЕщё в методичке указанна величина q. А откуда её брать не понятно. Нужна для определения точности.

не понимаю, о чем ты.
тогда приведи задание полностью.
по поводу кода: конечно, я его не читал :)
но вот этого я не понял:
Sarin
Вот код.
Код: plaintext
1.
2.
3.
4.
5.
6.
....
 function  f(x: real): real;
 begin 
f := x - sqrt(ln(x +  2 ));
 end ;
....


у тебя же другая ф-ция...
...
Рейтинг: 0 / 0
09.04.2006, 00:56:57
    #33654084
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Численные методы. Решение трансцендентного уравнения методом итераций.
fabler

у тебя же другая ф-ция...
ƒ(x) = x - Sqrt(Lg(x) - 2)
...
Рейтинг: 0 / 0
09.04.2006, 01:44:42
    #33654098
fabler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Численные методы. Решение трансцендентного уравнения методом итераций.
только сильно не расстраивайся
...
Рейтинг: 0 / 0
09.04.2006, 11:26:14
    #33654190
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Численные методы. Решение трансцендентного уравнения методом итераций.
Дык для работы я использую другую:

fi := x + f(x)
...
Рейтинг: 0 / 0
09.04.2006, 12:46:02
    #33654224
fabler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Численные методы. Решение трансцендентного уравнения методом итераций.
я не знаю, о чем ты, но график говорит, что ур-е
ƒ(x) = x - Sqrt(Lg(x) - 2)
не имеет корней.
...
Рейтинг: 0 / 0
09.04.2006, 15:17:05
    #33654315
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Численные методы. Решение трансцендентного уравнения методом итераций.
Я дурак.
Уравнение: &fnof(x) = x - Sqrt(lg(x + 2))
Но врядли это много чего меняет.

Должно иметь. Может иррациональные? Ведь для численных методов и иррациональный корень - корень:)
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Численные методы. Решение трансцендентного уравнения методом итераций. / 25 сообщений из 41, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]