Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 02.11.2009, 16:13   #1 (permalink)
SGE
Member
 
Регистрация: 04.06.2009
Сообщений: 75
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 37
По умолчанию Задачка

Приветствую вас, уважаемые программисты. Долго и упорно сидел, думая над выполнением задачи в паскале. Итак:
Необходимо найти корень третьей степени из a (или a в степени 1/3, что тоже самое) как предел последовательности x0,x1,x2,...,где x0=a/3, а каждое следующее x с нижним индексом n-1 получается из предыдущего по формуле:
xn-1 = 2/3*(xn + a/2*sqr(xn)),n = 0,1,2...
К вам просьба следующего характера: попытаться как-то разъяснить мне суть этой задачи (естественно в текстовом варианте). Но программу не составляйте, хотелось бы сделать её самому.
SGE вне форума   Ответить с цитированием

Старый 02.11.2009, 16:13
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Я уверен, что в этих обсуждениях вы найдете решение

Задачка на ассемблере
Задачка.
Задачка по Паскалю
Задачка (Paskal)

Старый 02.11.2009, 21:25   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Прежде всего, что-то не то с условием. Я взял для проверки а=8, и получил, что последовательность, вместо того, чтобы стремиться к 2, очень медленно сходится к 0.
Проверьте формулировку. И потом, не совсем ясно вот что. Вы пишете "каждое следующее x с нижним индексом n-1 получается из предыдущего..." но в формуле всё наоборот - каждое ПРЕДЫДУЩЕЕ выражено через ПОСЛЕДУЮЩЕЕ. Здесь нет лажи с индексами?
Vladimir_S вне форума   Ответить с цитированием
Старый 02.11.2009, 22:05   #3 (permalink)
SGE
Member
 
Регистрация: 04.06.2009
Сообщений: 75
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 37
По умолчанию

Я думаю, что такой вопрос лучше следует задать автору книги "Изучаем Turbo Pascal" (т.е. С. Немнюгину). Задачку я взял именно оттуда. Но, всё равно спасибо.
SGE вне форума   Ответить с цитированием
Старый 02.11.2009, 22:12   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

И еще. Правильно ли я понимаю, что a/2*sqr(xn) означает, что а нужно поделить на 2 и результат умножить на хn в квадрате, а не, скажем, а поделить на произведение 2 и квадрат хn?
Vladimir_S вне форума   Ответить с цитированием
Старый 02.11.2009, 22:23   #5 (permalink)
SGE
Member
 
Регистрация: 04.06.2009
Сообщений: 75
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 37
По умолчанию

Да, здесь моя ошибка. Действительно необходимо a разделить на произведение 2-х и sqr(xn)
SGE вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 02.11.2009, 22:27   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от SGE Посмотреть сообщение
Да, здесь моя ошибка. Действительно необходимо a разделить на произведение 2-х и sqr(xn)
Опаньки! Но тогда уравнение относительно Хn получается кубичным - и что же, его по Кардано решать прикажете? Впрочем, надо еще подумать: вдруг озарит!
Vladimir_S вне форума   Ответить с цитированием
Старый 02.11.2009, 22:42   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Так, кое в чем разобрался. В условии таки лажа с индексами. Вместо
xn-1 = 2/3*(xn + a/2*sqr(xn)),n = 0,1,2...
должно быть
xn = 2/3*(xn-1 + a/(2*sqr(xn-1))),n = 1,2...
Тогда всё получается. Проверил. Но вот как получить самО разложение кубического корня... Не представляю. Никогда с таким не встречался. Интересно.
Vladimir_S вне форума   Ответить с цитированием
Старый 02.11.2009, 22:57   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ага, в принципе доехало. За основу взято тождество
х = 2/3*(x + x³/(2x²)).
Это, вероятно, какой-нибудь итерационный метод Лагранжа или что-то в этом роде. Не силён, извините.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 07:52.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.