Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2013, 16:07   #11
Bilymo
Пользователь
 
Регистрация: 25.09.2009
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение
ничего не понял, если честно.
Вообщем я перемножил как надо, ведь: Ax=b, ищем x-иксы, должны получить b, тут до меня дошло


Цитата:
Сообщение от Sciv Посмотреть сообщение
ничего не понял, если честно.



Я неточно выразился - на самом деле все зависит от заданной точности вычислений.
Суть в том, что корень, вычисленный точно (например, методом Гаусса) будет отличаться от корня, вычисленного приближенно. Так же будут отличаться корни, приближенно вычисленные разными итерационными методами.


Я таки склоняюсь к мнению, что ошибки нет, просто попробуйте повысить точность в методе Зейделя.
Здесь, как не увеличивай точность, а конечные значения, при увеличении точности, будут отличаться лишь числами после запятой, так вот из результата: исходный вектор b свободных членов:

155.16
180.96
208.74
238.5
270.24
303.96
339.66

Проверка с точностью 0.00001; на простых итерациях:

| 155.160000534118
| 180.960000578628
| 208.740000623138
| 238.500000667647
| 270.240000712157
| 303.960000756667
| 339.660000801176 тут вроде норм

Проверка с той же точностью 0.00001; на Зейделе:

| 153.028881133383
| 179.412159639975
| 205.4010177821 отседа касяки
| 233.109191164432
| 262.519464055556
| 293.614786836238
| 339.66
Bilymo вне форума Ответить с цитированием
Старый 12.05.2013, 16:40   #12
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

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

Насколько я помню, метод итераций (соответственно, и Зейдель) идеально работает на матрице с диагональным преобладанием - проверьте исходную матрицу на этот критерий.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 12.05.2013, 17:57   #13
Bilymo
Пользователь
 
Регистрация: 25.09.2009
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение
ну что тут предложить... возьмите матрицу попроще, проверьте значения на каждой итерации трассировкой и посчитайте на бумажке - и сравните промежуточные значения переменных.

Насколько я помню, метод итераций (соответственно, и Зейдель) идеально работает на матрице с диагональным преобладанием - проверьте исходную матрицу на этот критерий.
Матрица исходная проверочная, на диаганали и так значения целые, а вне его нецелые меньше единицы.
Bilymo вне форума Ответить с цитированием
Старый 12.05.2013, 19:00   #14
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
на диаганали и так значения целые, а вне его нецелые меньше единицы.
ну это не совсем показатель диагонального преобладания... я бы даже сказал - совсем не.
А если другую матрицу ввести?
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 12.05.2013, 22:06   #15
Bilymo
Пользователь
 
Регистрация: 25.09.2009
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение
ну это не совсем показатель диагонального преобладания... я бы даже сказал - совсем не.
А если другую матрицу ввести?

Каую проще? На этой матрице проверяли:гаусса, прогонки, теперь дошли до итерации и зейделя. Суть расположения элементов бОльших значений по величине на диаганальных, чем внедиаганальных элементах заключается в том, чтобы результат т.е. решения получаются в точности как на диаганали мвтрицы. Или Вы программу даже не запускали?
Bilymo вне форума Ответить с цитированием
Старый 13.05.2013, 07:42   #16
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Или Вы программу даже не запускали?
Каюсь, не запускал, просто код посмотрел - вроде алгоритм верный.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 13.05.2013, 14:32   #17
Bilymo
Пользователь
 
Регистрация: 25.09.2009
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение
Каюсь, не запускал, просто код посмотрел - вроде алгоритм верный.
Вроде жигуль, как жигуль, но не едет. Так будьте добры запустить прогу? Или у Вас возможности такой нет?
Bilymo вне форума Ответить с цитированием
Старый 15.05.2013, 21:36   #18
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Вообще по логике, метод зейделя менее точен, так как в нем каждый икс[i] в текущей итерации рассчитывается на основе x[i-1] в этой же итерации. И если, скажем, x[1] расходится с истинным решением на сколько то знаков, то вычисленное на его основе x[2] разойдется с истинным на большее число... и т.д.

По крайней мере, запустил Вашу прогу, выкопал из загашника свою, проверил - так и есть. Простые итерации и прогонка дали более точные результаты, чем Зейдель, практически на любой матрице.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
решить систему нелинейных уравнений методом зейделя или простых итераций malishka_ Помощь студентам 1 02.12.2012 12:43
метод простых итераций, с++ kaljan775 Помощь студентам 0 08.03.2011 16:55
Метод простых итераций bloodargus Общие вопросы C/C++ 0 24.11.2010 19:20
Метод простых итераций bloodargus Общие вопросы C/C++ 1 20.11.2010 12:48