
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РФ СТАВРОПОЛЬСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ На правах рукописи Плюта Алексей Иванович Об итерационных методах решения операторных уравнений второго рода Специальность ...
-- [ Страница 2 ] --Рассмотрим теперь применение предложенного варианта метода Зейделя в случае, когда метод Зейделя имеет порядок один. Реализуем этот случай на вышеизложенном примере. Необходимые начальные условия полностью совпадают с начальными условиями в рассмотренном выше примере. Используя вышеизложенный метод ускорения сходимости, получим * * приближения un и vn. * * Соответствующие приближения un и vn, к координатам вектора решения представим в виде таблицы. Таблица 25 Приближения к 1-ой координате вектора решения Номер приближе ний n 1 363 1185 1957 3312 1 363 1185 1957 3312 1 363 -19145.167945 20.887959 451.585334 454.926203 454.961474 -19935.975115 22.692057 471.407031 474.887660 474.924407 -19650.507350 22.616370 20488.931731 887.679663 458.327096 454.996660 454.961498 21336.627643 925.744732 478.430825 474.961064 474.924432 21031.240179 912. * У un Ф * У vn Ф Приближения к 2-ой координате вектора решения Приближения к 3-ой координате вектора решения 1185 1957 3312 1 363 1185 1957 3312 1 363 1185 1957 464.956456 468.387635 468.423861 -18159.668279 21.358973 430.619226 433.793809 433.827326 -22790.544091 28.279619 541.354262 545.334120 545. 471.880463 468.459997 468.423885 19436.269267 845.007810 437.025430 433.860760 433.827348 24396.542036 1060.858104 549.385486 545.418054 545. Приближения к 4-ой координате вектора решения Приближения к 5-ой координате вектора решения Как видно из последней таблицы, по сравнению с предыдущим случаем * * несколько возросла скорость сходимости приближений un и vn к точному решению. Отметим также тот факт, что основные вычисления по предложенному варианту метода Зейделя получены с помощью разработанной автором программы на языке программирования TURBO PASCAL
ОСНОВНЫЕ ВЫВОДЫ И РЕЗУЛЬТАТЫ Проведенные в диссертационной работе исследования направленные на разработку новых методов решения операторных уравнений, описывающих экономические 1. Разработан модели и (модель межотраслевого на большом баланса). количестве Получены примеров следующие научные и практические результаты. апробирован итерационный метод решения системы линейных алгебраических уравнений вида x = Ax + f с квадратной матрицей A, в случае, когда наибольшее по модулю собственное значение матрицы A, больше чем единица. 2. Предложен метод получения двусторонних оценок точного решения x* операторного уравнения вида x = Ax + f, в случае, когда спектральный соответствующими монотонных x = Ax + f радиус не обязательно меньше единицы, а также подходы к уточнению полученных примерами. 3. Получен приближений синтез к методов x* оценок.
Метод проиллюстрирован ускорения сходимости вида решению уравнения и однопараметрического итеративного агрегирования. 4. Предложен вариант метода ускорения сходимости монотонных приближений к решению уравнения вида x = Ax + f, в котором упрощена задача поиска начальных приближений. 5. Разработан и апробирован на большом количестве примеров вариант метода Зейделя, позволяющий строить двусторонние приближения к точному решению уравнения вида x = Ax + f. 6. Составлена библиотека программ на языке программирования TURBO PASCAL, которая позволяет реализовывать полученные в данной работе методы и алгоритмы. Таким образом:
- Разработаны новые методы решения операторных уравнений, описывающих экономические модели (модель межотраслевого баланса), обладающих высокой скоростью сходимости последовательностей к точному решению данных уравнений, а также единицы. - Разработан комплекс программ на языке программирования TURBO PASCAL, реализующих эти алгоритмы. способностью сходится к точному решению даже в тех случаях, когда спектральный радиус оператора больше Литература. 1. Архангельский, Ю.С. Численные исследования методов итеративного агрегирования для решения задачи межпродуктового баланса /Ю.С. Архангельский, И.А. Вахутинский, Л.М. Дудкин и др. //Автоматика и телемеханика. - 1975. - №7. - С.75-82. 2. Ашманов, С.А. Введение в математическую экономику /С.А. Ашманов. - М.:Наука, 1984. - 296с. 3. Бабаджанян, А.А. О скорости сходимости метода однопараметрического итеративного агрегирования/А.А. Бабаджанян //Автоматика и телемеханика. - 1982. - №11. - С.171-173. 4. Бахвалов Н. Численные методы /Н. Бахвалов, Н. Жидков, Г. Кобельков - М.: Лаборатория Базовых Знаний, 2000. - 624 c. 5. Бахтин, И.А. Исследование уравнений с положительными операторами: Дис. Е д-ра физ.-мат. наук /И.А. Бахтин. - Ленинград, 1967. - 320с. 6. Бахтин, И.А. Метод последовательных приближений в теории уравнений с вогнутыми операторами /И.А. Бахтин, М.А. Красносельский // Сибирский математический журнал. - 1961.- Т.2, № 3.- С.313-330. 7. Бахтин, И.А. О непрерывности положительных операторов /И.А. Бахтин, М.А. Красносельский, В.Я. Стеценко // Сибирский математический журнал. - 1962.- Т.3, № 1.- С.8-17. 8. Беллман Р. Квазилинеаризация и нелинейные краевые задачи /Р. Беллман, Р. Калаба. - М.: Мир, 1968. - 270с. 9. Вен, В.Л. Некоторые вопросы агрегирования линейных моделей /В.Л. Вен, А.И. Эрлих //Известия АН СССР. Сер. техническая кибернетика. - 1970.- №5. - С.3-8. 10. Вержбицкий, В.М. Численные методы (линейная алгебра и нелинейные уравнения): Учеб. Пособие для вузов /В.М. Вержбицкий. - М.: Высш. шк., 2000. - 266 с. 11. Вулих, Б.З. Введение в теорию полуупорядоченных пространств /Б.З. Вулих. - М.: Наука, 1961. - 407 с. 12. Вулих, Б.З. Введение в функциональный анализ /Б.З. Вулих. - М.: Физматгиз, 1967. - 415с. 13. Вулих, Б.З. Специальные вопросы геометрии конусов в нормированных пространствах: Учебное пособие /Б.З. Вулих. - Калинин: Издательство калининского университета, 1978. - 84 с. 14. Гантмахер, Ф.Р. Теория матриц /Ф.Р. Гантмахер. - М: Наука, 1966. - 576с. 15. Гробова, Т.А. О методе однопараметрического итеративного агрегирования для решения систем линейных и нелинейных алгебраических уравнений, интегральных уравнений /Т.А. Гробова //Ставропольский государственный университет, Ставрополь, 2001. - 24с. - Деп. в ВИНИТИ 19.11.01 №2392 - В2001. 16. Гробова, Т.А. Об одном новом варианте метода Зейделя /Т.А. Гробова //Научно-методическая конф. преподавателей и студентов XXI век - век образования. Материалы 46 научно-метод. конф. преподавателей и студентов XXI век - век образования. - Ставрополь, 2001. - С.4-9. 17. Гробова, Т.А., Об одном аналоге метода однопараметрического итеративного агрегирования /Т.А. Гробова, В.Я. Стеценко //Вестник СГУ. -2001. - Выпуск 28. - С.12-16. 18. Гробова, Т.А. Об одной новой схеме реализации вариантов метода Зейделя /Т.А. Гробова, В.Я. Стеценко // Вестник молодых ученых. Санкт - Петербург, 2001. - С.34-39. 19. Данфорд Н., Шварц Дж. Линейные операторы. Общая теория /Н. Данфорд, Дж. Шварц. - М.: Иностранная литература, 1962. - 895c. 20. Демиденко, Н.А. Применение метода итеративного агрегирования к расширенной модели межотраслевого баланса /Н.А. Демиденко //Экономика и математические методы. - 1977. - Т.13, №3. - С.594598. 21. Дудкин, Л.М. Межотраслевой баланс и материальные балансы отдельных продуктов /Л.М. Дудкин, Э.Б. Ершов // Плановое хозяйство. - 1965. - №5. - С.59-63. 22. Есаян, А.Р. Локализация спектра линейного оператора /А.Р. Есаян, В.Я. Стеценко //Междунар. Конгресс математиков (1966;
Москва). Тезисы кр. науч. сообщений Междунар. Конгресса математиков. Секция 5. - М., 1966. - С.45-74. 23. Есаян, А.Р. О разрешимости уравнений второго рода /А.Р. Есаян, В.Я. Стеценко // Труды семинара по функциональному анализу. Воронежский гос. ун-т. - Воронеж, 1963. - Вып. 7. - С.36-41. 24. Есаян, А.Р. Оценки спектра интегральных операторов и бесконечных матриц /А.Р. Есаян, В.Я. Стеценко // Докл. АН СССР. - 1964. - Т. 157, №2. - С.12-19. 25. Итеративное агрегирование и его применение в планировании /Под ред. Л.М. Дудкина. - М.: Экономика, 1979. - 328 с. 26. Канторович, Л.В. Функциональные анализ в нормированных пространствах /Л.В. Канторович, Г.П. Акилов. - М.: Наука, 1977. - 496 с. 27. Канторович, Л.В. Функциональный анализ в полуупорядоченных пространствах /Л.В. Канторович, Б.З. Вулих, А.Г. Пинскер. - М.: Физматгиз, 1959. - 684 с. 28. Канторович, Л.В. Приближенные методы высшего анализа /Л.В. Канторович, В.И. Крылов. - М.-Л.: Физматгиз, 1962. - 708с.
29. Коллатц Л. Функциональный анализ и вычислительная математика /Л. Коллатц. - М.: Мир, 1969. - 421с. 30. Колмогоров, А.Н. Элементы теории функций и функционального анализа /А.Н. Колмогоров, С.В. Фомин. - М.: Наука, 1981. - 543с. 31. Коршунова Н. Математика в экономике /Н. Коршунова, В. Плясунов. - М.:Издательство Вита-Пресс, 1996. - 368с. 32. Костенко, Т.А. К вопросу о существовании и единственности решения операторного уравнения, нелинейного относительно параметра. /Т.А. Костенко // Международная школа-семинар по геометрии и анализу памяти Н.В. Ефимова (1998;
Ростов-на-Дону). Тезисы докладов Междунар. школы-семинара по геометрии и анализу памяти Н.В. Ефимова (5-11 сент., 1998г.). - Ростов-на-Дону, 1998. - С.104105. 33. Костенко, Т.А. О разрешимости операторных уравнений второго рода с линейными и нелинейными операторами /Т.А. Костенко // Проблемы физико-математических наук, науч.-метод. конф. преподавателей и студентов Университетская наука - региону (43;
1998;
Ставрополь). Материалы XLIII науч.-метод. конф. преподавателей и студентов Университетская наука - региону. - Ставрополь, 1998. - С.111-122. 34. Красносельский, М.А. Положительные решения операторных уравнений /М.А. Красносельский. - М.: Физматгиз, 1962. - 394с. 35. Красносельский, М.А. Правильные и вполне правильные конусы /М.А. Красносельский // Докл. АН СССР.-1960. - Т.135. - № 2. - С.241-255. 36. Красносельский, М.А. Приближенное решение операторных уравнений /М.А. Красносельский, Г.М. Вайникко, П.П. Забрейко и др. - М: Наука, 1969. - 456с. 37. Красносельский, М.А. Геометрические методы нелинейного анализа /М.А. Красносельский, П.П. Забрейко. - М.: Наука, 1965. - 624с. 38. Красносельский, М.А. Позитивные линейные системы: метод положительных операторов /М.А. Красносельский, Е.А. Лифшиц, В.И. Соболев. - М: Наука, 1985. - 256с. 39. Красносельский, М.А. Положительно обратимые линейные операторы и разрешимость линейных уравнений /М.А. Красносельский, Е.А. Лифшиц, В.В. Покорный, В.Я. Стеценко // Докл. АН Таджикской ССР. -1974. - Т.XVII, № 1. - С.12-15. 40. Красносельский, М.А. О сходимости метода однопараметрического агрегирования /М.А. Красносельский, А.Ю. Островский, А.В. Соболев // Автоматика и телемеханика. - 1978. - №9. - С.102-109.
41. Красносельский, М.А. Замечания о методе Зейделя /М.А. Красносельский, В.Я. Стеценко // Журнал вычислительной математики и математической физики. - 1969. - Т.9, №1. - С.177-182. 42. Крейн, М.Г. Линейные операторы, оставляющие инвариантным конус в пространстве Банаха /М.Г. Крейн, М.А. Рутман // Успехи математических наук. - 1948. - Т.1, №3. - С.3-95. 43. Крукиер, Л.А. Численные методы решения задач конвекциидиффузии со смешанными производными /Л.А. Крукиер, Т.С. Мартынова. - г. Ростов-на ЦДону: Изд-во РГУ, 2003. -156с. 44. Кубекова, Б.С. Об уточнении оценок решения операторного уравнения в полуупорядоченном пространстве с u0Цограниченным снизу оператором /Б.С. Кубекова // Понтрягинские чтения ЦXI, науч. конф. (2000;
Воронеж). Тезисы докладов науч. конф. Понтрягинские чтения ЦXI (3-9 мая, 2000г.). - Воронеж, 2000. - С.95-98. 45. Кубекова, Б.С. Отыскание приближений по недостатку и по избытку к решению операторного уравнения с монотонно разложимым оператором /Б.С. Кубекова //Математическое моделирование в научных исследованиях, Всероссийская науч. конф. (2000). Тезисы докладов Всероссийской науч. конф. Математическое моделирование в научных исследованиях (21-30 сент., 2000г.). - Ставрополь, 2000. - С.47-49. 46. Кубекова, Б.С. О методе однопараметрического итеративного агрегирования /Б.С. Кубекова, В.Я. Стеценко, Т.А. Гробова //Математика. Компьютер. Образование, междунар. конф. (8;
2001;
Пущино). Тезисы докладов восьмой междунар. конф. Математика. Компьютер. Образование (31 янв. - 5 февр., 2001г.). - Пущино, 2001. - С.230-232. 47. Кубекова, Б.С. Об одном методе построения двусторонних приближений к решению операторного уравнения с монотонно разложимым оператором /Б.С. Кубекова, В.Я. Стеценко, М.Н. Павлова //Журнал вычислительной математики и математической физики. - 2001. - Т.41, № 6. - С.846-854. 48. Кузнецов, Ю.А. К теории итерационных процессов /Ю.А. Кузнецов //Докл. АН СССР. - 1969. - Т.184, №4, -С.863-866. 49. Леонтьев, В.В. Экономика и математические методы /В.В. Леонтьев, Д. Форд. - М: Наука, 1972. - 242с. 50. Лифшиц, Е.А. К теории полуупорядоченных банаховых пространств /Е.А. Лифшиц // Функциональный анализ и его приложения, 1969. Т.3, №1. - С.91Ц92. 51. Люстерник, Л.А. Элементы функционального анализа /Л.А. Люстерник, В.И. Соболев. - М: Наука, 1965. - 520с.
52. Моришима М. Равновесие, устойчивость, рост /М. Моришима. - М.: Наука, 1972. - 179с. 53. Никайдо Х. Выпуклые структуры и математическая экономика /Х. Никайдо. - М.: Мир, 1972. - 518с. 54. Ортега Дж. Итерационные методы решения нелинейных систем уравнений со многими неизвестными /Дж. Ортега, В. Рейнболдт. М.: Мир, 1975. - 327с. 55. Островский, А.Ю. О сходимости монотонных итерационных процессов /А.Ю. Островский //Журнал вычислительной математики и математической физики. - 1977. - Т. 17, №1. - С.233-238. 56. Пароди М. Локализация характеристических чисел матриц и ее применения /М. Пародии. - М.: Иностранная литература, 1960. 270с. 57. Плюта, А.И. Об одном варианте метода ускорения сходимости монотонных приближений к решению уравнения вида x = Ax + f /А.И. Плюта //Теоретические и прикладные проблемы современной физики, региональная науч. конф. (2002;
Ставрополь). Материалы региональной науч. конф. Теоретические и прикладные проблемы современной физики. - Ставрополь, 2002. - С.255-262. 58. Плюта, А.И. О некоторых методах получения оценок точного решения x * операторных уравнений вида x = Ax + f в случае, когда спектральный радиус ( A) не обязательно меньше единицы /А.И. Плюта //Итерационные методы и матричные вычисления, Международная летняя школа молодых ученых. -Ростов-на-Дону, 2002. - С.482-486. 59. Плюта, А.И. Гибрид методов ускорения сходимости монотонных приближений к решению уравнения вида x = Ax + f и однопараметрического итеративного агрегирования /А.И. Плюта, В.Я. Стеценко //Ученые записки /Ставропольский гос. ун-т, физикоматематический факультет. - Ставрополь, 2002. - С.79-85. 60. Плюта, А.И. Об одном варианте метода Зейделя /А.И. Плюта, В.Я. Стеценко //Математическое моделирование. - Москва. - 2003г. - Т.15, №12. - С.29-36 61. Радченко, В.В. Применение метода Ньютона-Канторовича для расчета нелинейного межотраслевого баланса /В.В. Радченко, В.Я. Стеценко // Модели и методы экономических целенаправленных систем.- Новосибирск, 1977. - С.160-166. 62. Самарский, А.А. Численные методы /А.А. Самарский, А.В. Гулин - М.: Наука, 1989. - 187с. 63. Стеценко, В.Я. Исследование сходимости метода многопараметрического итеративного агрегирования при решении линейных алгебраических систем и интегральных уравнений /В.Я. Стеценко //Теория и практика использования методов агрегирования в планировании и управлении, совещание (Киев). Материалы совещания Теория и практика использования методов агрегирования в планировании и управлении. - Киев, 1984. - С. 74-81. 64. Стеценко, В.Я. Исследования по теории положительных операторов в пространствах с конусом: Дисс. Е д-ра физ.-мат. наук /В.Я. Стеценко. - Воронеж, 1968. - 307с. 65. Стеценко, В.Я. Об одном методе ускорения сходимости итерационных процессов /В.Я. Стеценко //Докл. АН СССР. - 1968. - Т.178, №3. - С.1021-1024. 66. Стеценко, В.Я. Элементы теории полуупорядоченных пространств. Приближенное решение операторных уравнений: Учеб. пособие /В.Я. Стеценко, В.А. Галкина. - Ставрополь: Изд-во СГУ, 1998. - 168c. 67. Стеценко, В.Я. О методе однопараметрического итеративного агрегирования для нелинейных уравнений /В.Я. Стеценко, Т.А. Гробова // Воронежская зимняя математическая школа: Тезисы докладов. Воронеж, 2001.- С.254-256. 68. Стеценко, В.Я. Квалифицированные двусторонние оценки для спектрального радиуса линейного положительного оператора /В.Я. Стеценко, Т.А. Костенко //Ставропольский государственный университет, Ставрополь. - 1997. - 13с. Деп. в ВИНИТИ 14.11.97 №3321 - В97. 69. Стеценко, В.Я. Метод ускорения сходимости приближений к спектральному радиусу линейного положительного оператора и к решению линейного операторного уравнения /В.Я. Стеценко, Т.А. Костенко //Вестник СГУ. -1999. - Вып. 20. - С.3-13. 70. Стеценко, В.Я. Новые оценки сверху спектрального радиуса матричных и интегральных операторов /В.Я. Стеценко, Л.Н. Кириллова, А.И. Плюта //Международная школа-семинар по геометрии и анализу памяти Н.В. Ефимова (2002;
Ростов-на-Дону). Труды участников Междунар. школы-семинара по геометрии и анализу памяти Н.В. Ефимова. - Ростов-на-Дону, 2002.-С.160-161. 71. Стеценко, В.Я. Методы ускорения при отыскании спектрального радиуса линейного оператора и решении линейного операторного уравнения /В.Я. Стеценко, Т.А. Костенко //Международная школасеминар по геометрии и анализу памяти Н.В. Ефимова (1998;
Ростов-на-Дону). Тезисы докладов Междунар. школы-семинара по геометрии и анализу памяти Н.В. Ефимова (5-11 сент., 1998г.). - Ростов-на-Дону, 1998. - С.124-126.
72. Стеценко, В.Я. Обзор и реализация на ЭВМ методов решения систем линейных и нелинейных уравнений: Учебное пособие /В.Я. Стеценко, А.И. Плюта. - Ставрополь: Изд-во СГУ, 2003.-71с. 73. Стеценко, В.Я. О некоторых методах построения монотонных приближений к решению линейных операторных уравнений /В.Я. Стеценко, А.И. Плюта //Теоретические и прикладные проблемы современной физики, региональная науч. конф. (2000;
Ставрополь). Материалы региональной науч. конф. Теоретические и прикладные проблемы современной физики. - Ставрополь, 2002.-С.281284. 74. Стеценко, В.Я. Об одном итерационном методе решения систем линейных алгебраических уравнений вида x = Ax + f с квадратной матрицей A /В.Я. Стеценко, А.И. Плюта //Современные методы теории функций и смежные проблемы, конф. (2003;
Воронеж). Материалы конф. Современные методы теории функций и смежные проблемы - Воронеж, 2003. -С.250-251. 75. Фаддеев, Д.К. Сборник задач по высшей алгебре /Д.К. Фаддеев, И. С. Соминский. - М.: Наука, 1964. - 304с. 76. Фаддеев, Д.К. Вычислительные методы линейной алгебры /Д.К. Фаддеев, В.Н. Фаддеева. - М.: Физматгиз, 1960. - 656с. 77. Форсайт Дж. Численное решение систем линейных алгебраических уравнений /Дж. Форсайт, К. Молер. - М.: Мир, 1969. - 354с. 78. Функциональный анализ /Под ред. С.Г. Крейна. - М.: Наука, 1972. - 544с. 79. Хомяков, В.А. Обобщение одного доказательства сходимости процесса итеративного агрегирования для решения систем линейных уравнений /В.А. Хомяков // Автоматика и телемеханика. - 1973.№7. - С.15-23. 80. Шаабан М. Обобщенная норма интегральных операторов и матриц /М. Шаабан //Изв. АН Таджикской ССР. - 1998. - Т.108, №2. - С.312. 81. Щенников, Б.А. Метод агрегирования для решения систем линейных уравнений /Б.А. Щенников // Докл. АН СССР.- 1967.- Т.173, №4. С.781-784. 82. Щенников, Б.А. Применение метода итеративного агрегирования для решения систем линейных уравнений /Б.А. Щенников // Экономика и математические методы. - 1966. - Т.2, №5. - С.723-731.
ПРИЛОЖЕНИЕ з1. Метод последовательных приближений. program wer2;
var e,k,k1,m1,l,k0,r,max1,max2,k2,k3,k4,k5,max3:real;
i,p,m,m01,m2,n:integer;
a: array [1..30,1..30] of real;
x,b,c,c1,t,c2,t1,c3,t2: array [1..30] of real;
procedure wwodm;
var i,j: integer;
begin writeln('Введите размерность матрицы А:');
readln(n);
for i:=1 to n do begin for j:=1 to n do begin write('введите элемент матрицы A[ ',i,',',j,']=');
readln(a[i,j]);
end;
end;
end;
procedure wwodv;
var i:integer;
begin writeln('введите координаты свободного вектора f:');
for i:=1 to n do readln(b[i]);
end;
procedure wwodp;
var i:integer;
begin writeln('введите координаты начального приближения Х:');
for i:=1 to n do readln(x[i]);
writeln('введите необходимую точность вычислений E:');
readln(e);
end;
procedure umnog;
var i,j: integer;
begin for i:=1 to n do begin l:=0;
for j:=1 to n do begin l:=a[i,j]*x[j]+l;
end;
c[i]:=l+b[i];
{ writeln(c[i]);
} end;
{ for i:=1 to n do begin g[i]:=c[i]+b[i];
end};
end;
procedure vivod;
var i: integer;
begin for i:=1 to n do write(c[i]:11:8,' ');
end;
procedure usl1;
var i,j: integer;
begin for i:=1 to n do begin r:=0;
for j:=1 to n do begin r:=abs(a[i,j])+r;
end;
c1[i]:=r;
{writeln(c1[i]:3:3);
} end;
max1:=c1[1];
for i:=2 to n do begin if c1[i]>max1 then max1:=c1[i];
end;
{ writeln(max1:3:3);
} if max1<1 then begin writeln('первое условие выполняется');
umnog;
for i:=1 to n do begin t[i]:=c[i]-x[i];
{ writeln(t[i]);
} end;
m1:=t[1];
for i:=2 to n do begin if abs(t[i])>m1 then m1:=abs(t[i]);
end;
{writeln(m1);
} m:=trunc(ln((e*(1-(max1)))/m1)/(ln(max1)))+1;
{writeln(m);
} end else writeln('первое условие не выполняется');
end;
procedure usl2;
var i,j: integer;
begin for i:=1 to n do begin k:=0;
for j:=1 to n do begin k:=abs(a[j,i])+k;
end;
c2[i]:=k;
{writeln(c2[i]:3:3);
} end;
max2:=c2[1];
for i:=2 to n do begin if c2[i]>max2 then max2:=c2[i];
end;
{writeln(max2:3:3);
} if max2<1 then begin writeln('выполняется второе условие');
umnog;
for i:=1 to n do begin t1[i]:=c[i]-x[i];
{writeln(t1[i]:3:3);
} end;
k1:=0;
for i:=1 to n do begin k1:=k1+t1[i];
end;
m01:=trunc((ln((e*(1-max2))/abs(k1)))/(ln(max2)))+1;
{writeln(m01:3);
} end else writeln('второе условие не выполняется');
end;
procedure usl3;
var i,j:integer;
begin for i:=1 to n do begin k2:=0;
for j:=1 to n do begin k2:=sqr(a[i,j])+k2;
end;
c3[i]:=k2;
{ writeln(c3[i]:3:3);
} end;
k3:=0;
for i:=1 to n do begin k3:=k3+c3[i];
end;
max3:=sqrt(k3);
{writeln(max3:3);
} if max3<1 then begin writeln('третье условие выполняется');
umnog;
for i:=1 to n do begin t2[i]:=c[i]-x[i];
{writeln(t2[i]:3:3);
} end;
k4:=0;
for i:=1 to n do begin k4:=sqr(t2[i])+k4;
end;
k5:=sqrt(k4);
m2:=trunc((ln((e*(1-max3))/k5))/(ln(max3)))+1;
writeln(m2:3);
end else writeln('третье условие не выполняется');
end;
begin {основная программа} wwodm;
wwodv;
wwodp;
umnog;
usl1;
usl2;
usl3;
p:=m2;
readln;
{writeln(m);
} for i:=1 to p do begin umnog;
write( i,':');
vivod;
x:=c;
writeln;
readln;
end;
readln;
end.
з2. Метод ускорения сходимости монотонных приближений к решению уравнения вида x = Ax + f (r ( A) < 1). program wert;
var ch,ch1,zn,zn1,f,z0,z01,z1,a1,a2,a00,b00,b0,u0,v0,u,v,p0,q0,u2,v2,u02,c72,p1,q1,u 1,v1: array[1..25] of real;
a: array[1..25,1..25] of real;
h1,h2,h01,h02,h11,h12,h101,h102,s,k,b,t,k1,d0,d1,d01,d10,m01,m02,d02,d12,d01 2,d102,k0:real;
c,n1,i,j,n,q,l,i1 :integer;
procedure wwod;
var i,j:integer;
begin writeln('введите размерность матрицы A:');
readln(n);
writeln('Ввод элементов матрицы А:');
for i:=1 to n do begin for j:=1 to n do begin write('элемент A[',i,',',j,']=');
readln(a[i,j]);
end;
end;
writeln('Введите координаты свободного вектора f:');
for i:=1 to n do begin readln(f[i]);
end;
end;
procedure byferr;
var i,j:integer;
begin for i:=1 to n do begin z01[i]:=z0[i];
{ writeln(u01[i]:4:4)} end;
end;
procedure umn;
var i,j: integer;
s: real;
begin for i:=1 to n do begin s:=0;
for j:=1 to n do begin s:=a[i,j]*z01[j]+s;
end;
a1[i]:=s;
end;
end;
procedure vich;
var i,j:integer;
begin for i:=1 to n do begin d0:=0;
d1:=0;
for j:=1 to n do begin d01:=a[i,j]*u0[j];
d0:=d0+d01;
d10:=a[i,j]*v0[j];
d1:=d10+d1;
end;
u[i]:=d0+f[i];
v[i]:=d1+f[i];
end;
end;
procedure otn;
var i,j:integer;
begin for i:=1 to n do begin zn[i]:=v0[i]-v[i];
ch[i]:=u[i]-u0[i];
{writeln(u[i]:5:5);
} end;
h2:=zn[1];
for i:=2 to n do begin if zn[i]>h2 then h2:=zn[i];
end;
{ writeln(h2:6:6);
} h1:=ch[1];
for i:=2 to n do begin if ch[i]
end;
{writeln(h1:8:8);
} m01:=h1/h2;
{writeln(m01:8:8);
} h01:=zn[1];
for i:=2 to n do begin if zn[i] end; h02:=ch[1]; for i:=2 to n do begin if ch[i]>h02 then h02:=ch[i]; end; m02:=h01/h02; { writeln(m02:8:8); } end; procedure byferr2; var i,j : integer; begin for i:=1 to n do begin u2[i]:=u[i]; v2[i]:=v[i]; u02[i]:=u0[i]; c72[i]:=v0[i]; p1[i]:=p0[i]; q1[i]:=q0[i]; end; end; begin {начало основной программы} wwod; writeln('Введите начальные векторы:'); writeln('вектор u0:'); for i:=1 to n do readln(u0[i]); writeln('вектор v0:'); for i:=1 to n do readln(v0[i]); writeln('Введите количество приближений:'); readln(q); for l:=1 to q do begin vich; otn; { writeln(m01:5:5); } for i:=1 to n do begin u1[i]:=(u[i]+m01*v[i])/(1+m01); v1[i]:=(v[i]+m02*u[i])/(1+m02); writeln(l,':',u1[i]:11:8,' ',v1[i]:11:8); end; for i1:=1 to n do begin u0[i1]:=u[i1]; v0[i1]:=v[i1]; end; readln; end; end. з3. Метод однопараметрического итеративного агрегирования решения линейных операторных уравнений вида x = Ax + f, где оператор A - матрица n - го порядка. program wert; type Mat = Array[1..30,1..30] of real; Vec = Array[1..30] of real; var z : Mat; f,l,x,s,a,y :Vec; m,m1,g,g1,u,u1,h,h1,t:real; r,i,j,k,p,k1 : integer; procedure wwodmatr; var i,j:integer; begin for i:=1 to p do begin for j:=1 to p do begin write('Введите элемент матрицы А[',i,',',j,']='); readln(z[i,j]); end; end; end; procedure wwodf; var i:integer; begin writeln('Введите координаты свободного вектора f:'); for i:=1 to p do readln(f[i]); end; procedure wwodl; var i: integer; begin for i:=1 to p do l[i]:=1; end; procedure wwodx; var i:integer; begin writeln('Введите координаты вектора x (начального приближения) :'); for i:=1 to p do readln(x[i]); end; procedure umnog; var i,j : integer; begin for i:=1 to p do begin m:=0; for j:=1 to p do begin m1:=z[i,j]*x[j]; m:=m1+m; end; s[i]:=m; end; end; procedure scalf; var i :integer; begin g:=0; for i:=1 to p do begin g1:=f[i]*l[i]; g:=g+g1; end; end; procedure scalx; var i:integer; begin h:=0; for i:=1 to p do begin h1:=x[i]*l[i]; h:=h+h1; end; end; procedure scalAx; var i: integer; begin u:=0; for i:=1 to p do begin u1:=s[i]*l[i]; u:=u1+u; end; end; procedure ttt; var t: real; begin t:=g/(h-u); end; procedure rrr ; var i: integer; begin for i:=1 to p do a[i]:=s[i]*t; end; procedure summ; var i: integer; begin for i:=1 to p do y[i]:=a[i]+f[i]; end; procedure wewod; var i: integer; begin for i:=1 to p do write(y[i]:11:8,' '); end; begin { основная программа } writeln('Решение линейного уравнения вида x=Ax+f'); writeln('Введите размерность матрицы А:'); readln(p); wwodmatr; wwodf; wwodl; wwodx; scalf; writeln('ВВЕДИТЕ КОЛИЧЕСТВО ИТЕРАЦИЙ:'); readln(r); for k:=1 to r do begin umnog; scalx; scalAx; t:=g/(h-u); rrr; summ; write(k,':'); wewod; for k1:=1 to p do x[k1]:=y[k1]; writeln; end; writeln('Итак, на ',r,'-м шаге мы получили приближения к решению'); writeln('линейного уравнения вида x=Ax+f'); readln; end. з4. Метод однопараметрического итеративного агрегирования решения нелинейных операторных уравнений вида x = F ( x) + f, где F (x) - нелинейный оператор. program wert; type Mat = Array[1..30,1..30] of real; Vec = Array[1..30] of real; var z,k1,x1 : Mat; f,l,x,s,a,y :Vec; m,m1,g,g1,u,u1,h,h1,t:real; r,i,j,k,p,k2 : integer; procedure wwodmatr; var i,j:integer; begin writeln('Ввод коэффициентов при неизвестных переменных системы:'); for i:=1 to p do begin for j:=1 to p do begin write(' коэффициент системы [',i,',',j,']='); readln(z[i,j]); end; end; end; procedure wwodf; var i:integer; begin writeln('Введите координаты свободного вектора f:'); for i:=1 to p do readln(f[i]); end; procedure wwodl; var i: integer; begin for i:=1 to p do l[i]:=1; end; procedure wwodx; var i:integer; begin writeln('Введите координаты вектора x (начального приближения) :'); for i:=1 to p do readln(x[i]); end; procedure wwodk; var i,j:integer; begin writeln('Ввод показателей степеней:'); for i:=1 to p do begin for j:=1 to p do begin write(' ',i,'-ая строка уравнения, степень при ',j,'-ом неизвестном:'); readln(k1[i,j]); end; end; end; procedure umnog1; var i,j:integer; begin for i:=1 to p do begin for j:=1 to p do begin x1[i,j]:=exp(k1[i,j]*ln(x[j])); end; end; end; procedure umnog; var i,j : integer; begin for i:=1 to p do begin m:=0; for j:=1 to p do begin m1:=z[i,j]*x1[i,j]; m:=m1+m; end; s[i]:=m; end; end; procedure scalf; var i :integer; begin g:=0; for i:=1 to p do begin g1:=f[i]*l[i]; g:=g+g1; end; end; procedure scalx; var i:integer; begin h:=0; for i:=1 to p do begin h1:=x[i]*l[i]; h:=h+h1; end; end; procedure scalAx; var i: integer; begin u:=0; for i:=1 to p do begin u1:=s[i]*l[i]; u:=u1+u; end; end; procedure ttt; var t: real; begin t:=g/(h-u); end; procedure rrr ; var i: integer; begin for i:=1 to p do a[i]:=s[i]*t; end; procedure summ; var i: integer; begin for i:=1 to p do y[i]:=a[i]+f[i]; end; procedure wewod; var i: integer; begin for i:=1 to p do write(y[i]:11:8,' '); end; begin { основная программа } writeln('Решение нелинейного уравнения вида x=F(x)+f, с нелинейным оператором F(x):'); writeln('Введите размерность матрицы:'); readln(p); wwodmatr; wwodf; wwodl; wwodx; wwodk; scalf; writeln('ВВЕДИТЕ КОЛИЧЕСТВО ИТЕРАЦИЙ:'); readln(r); for k:=1 to r do begin umnog1; umnog; scalx; scalAx; t:=g/(h-u); rrr; summ; write(k,':'); wewod; for k2:=1 to p do x[k2]:=y[k2]; writeln; end; writeln('Итак, на ',r,'-м шаге получили приближения'); writeln(' к решению нелинейного уравнения вида x=F(x)+f'); readln; end. з5. Спектральный радиус. program wert; {uses printer; } var a :array [1..100,1..100] of real; b,d,c,k :array [1..100] of real; maxi,mini,r,c1,p : real; alf, beta :real; i,j,t,l,s : integer; procedure wwod; var i,j:integer; begin writeln('Ввод элементов матрицы А:'); {writeln(lst,'Ввод элементов матрицы А:'); } for i:=1 to s do begin for j:=1 to s do begin write('элемент A[',i,',',j,']='); { write(lst,'элемент A[',i,',',j,']='); } readln(a[i,j]); { writeln(lst,a[i,j]:5:3); } end; end; writeln('Введите координаты вектора u (координаты должны'); writeln('быть больше нуля):'); { writeln(lst,'Введите координаты вектора u:'); } for i:=1 to s do begin readln(b[i]); { writeln(lst,b[i]:4:4); } end; end; procedure umnog; var r,c1:real; i,j:integer; begin for i:=1 to s do begin r:=0; for j:=1 to s do begin c1:=a[i,j]*k[j]; r:=r+c1; end; c[i]:=r; end; end; procedure delen; var i:integer; begin for i:=1 to s do d[i]:=c[i]/b[i]; end; procedure wibor; var i:integer; begin maxi:=d[1]; for i:=2 to s do begin if d[i]>maxi then maxi:=d[i]; end; mini:=d[1]; for i:=2 to s do begin if d[i] end; end; begin { основная программа } writeln('Определение спектрального радиуса матрицы А:'); writeln('Введите размерность матрицы:'); readln(s); wwod; for i:=1 to s do k[i]:=b[i]; writeln('Введите количество приближений:'); { writeln(lst,'введите количество приближений:'); } readln(t); { writeln(lst,t:4); } for i:=1 to t do begin umnog; delen; wibor; p:=1/i; (alf):=(exp(p*ln(abs(mini)))); (beta):=(exp(p*ln(abs(maxi)))); writeln(i,':', alf:11:8,' ',beta:11:8); { writeln(lst,i,':', alf:11:8,' ',beta:11:8); } for l:=1 to s do k[l]:=c[l]; readln; end; writeln('Итак мы получили на ',t,'-м шаге приближение'); writeln('к спектральному радиусу "снизу"- ',alf:11:8,' и "сверху"- ',beta:11:8,''); readln; end. з6. Собственный вектор. program qq; var t0,t1,t2,t3,t4,t5,t6,t7,t8,g1,g2,max1,max2,max3,min3:real; k1,k2,k3,k4,k,y,y1,y2,y3,y4,max4,max5,max6:real; i,n,r,i1,j,l,p,w:integer; a,b: array [1..30,1..30] of real; x0,u0,c,c1,c2,c3,c4,c5,c6,x00,u1,v1,x1,z1,z2,x: array [1..30] of real; procedure wwod; var i,j: integer; begin writeln('Введите размерность матрицы А:'); readln(n); writeln('Ввод элементов матрицы А:'); for i:=1 to n do begin for j:=1 to n do begin write('введите элемент матрицы A[ ',i,',',j,']='); readln(a[i,j]); end; end; writeln('Введите координаты начального приближения вектора X:'); for i:=1 to n do readln(x0[i]); writeln('Введите координаты вектора u0:'); for i:=1 to n do readln(u0[i]); end; procedure byfer; begin x00:=x0; x:=x0; end; procedure umn; var i,j:integer; begin for i:=1 to n do begin t0:=0; for j:=1 to n do begin t0:=a[i,j]*x00[j]+t0; end; c[i]:=t0; end; for i:=1 to n do c1[i]:=c[i]/u0[i]; max1:=c1[1]; for i:=2 to n do begin if c1[i]>max1 then max1:=c1[i]; end; end; procedure umn2; var i,j : integer; begin for i:=1 to n do begin t2:=0; for j:=1 to n do begin t2:=b[i,j]*x0[j]+t2; end; c5[i]:=t2; end; end; begin {основная программа} wwod; byfer; writeln('Введите количество приближений:'); readln(r); writeln('Соответствующие приближения к координатам собственного вектора:'); for i1:=1 to r do begin umn; { writeln('матрица B:'); } for i:=1 to n do c2[i]:=c[i]/(max1); if (i1=1) then begin for i:=1 to n do x1[i]:=c2[i]; end; write(i1,':',' '); for i:=1 to n do write(c2[i]:6:6,' '); for i:=1 to n do x00[i]:=c2[i]; writeln; end; readln; writeln('Получим теперь двустороннее приближение к собственному вектору:'); for i:=1 to n do begin t1:=0; for j:=1 to n do begin t1:=a[i,j]*x0[j]+t1; end; c3[i]:=t1; end; for i:=1 to n do c4[i]:=c3[i]/u0[i]; max2:=c4[1]; for i:=2 to n do begin if c4[i]>max2 then max2:=c4[i]; end; for i:=1 to n do begin for j:=1 to n do begin b[i,j]:=a[i,j]/(max2); {write(b[i,j]:3:3,' '); } end; {writeln; } end; for i:=1 to n do c6[i]:=c3[i]/x0[i]; min3:=c6[1]; for i:=2 to n do begin if c6[i] end; max3:=c6[1]; for i:=2 to n do begin if c6[i]>max3 then max3:=c6[i]; end; { for i:=1 to n do writeln(c6[i]:4:4); } writeln('a=',min3:3:3, 'b=',max3:3:3); writeln('Введите первое наибольшее значение матрицы А:'); readln(k1); writeln('Введите второе наибольшее значение матрицы А:'); readln(k2); writeln('Введите первое наименьшее значение матрицы А:'); readln(k3); writeln('Введите второе наименьшее значение матрицы А:'); readln(k4); k:=sqrt((k1*k2)/(k3*k4)); writeln('постоянная оператора сжатия-',k:3:3); g1:=min3/max3; g2:=max3/min3; t3:=(k-1)/2; t4:=(k-1)/(k+1); readln; for l:=1 to r do begin t5:=exp(l*ln(t4)); t6:=t3*t5; t7:=exp(t6*ln(g1)); t8:=exp(t6*ln(g2)); for i:=1 to n do x00[i]:=x0[i]; umn; for i:=1 to n do begin c5[i]:=c[i]/max1; end; for i:=1 to n do begin u1[i]:=t7*c5[i]; v1[i]:=t8*c5[i]; end; for i:=1 to n do begin write(l,':'); write(u1[i]:5:5,' ',v1[i]:5:5); writeln; end; readln; for i:=1 to n do x0[i]:=c5[i]; writeln; end; readln; writeln('Теперь оценим степень близости к точному решению'); for i:=1 to n do z1[i]:=x1[i]/x0[i]; max4:=z1[1]; for i:=2 to n do begin if z1[i]>max4 then max4:=z1[i]; end; for i:=1 to n do begin z2[i]:=x[i]/x1[i]; { writeln(z2[i]:3:3); } end; max5:=z2[1]; for i:=2 to n do begin if z2[i]>max5 then max5:=z2[i]; end; max6:=max4; if max5>max6 then max6:=max5; y:=ln(max6); y1:=(k-1)/(k+1); writeln('Введите номер приближения с котoрого вы хотите определить расстояние до точного решения:'); readln(w); y2:=exp(w*ln(y1)); y3:=y2/(1-y1); y4:=y3*y; writeln('Вы находитесь от точного решения на расстоянии:',y4:8:8); readln; end. з7. Об одном итерационном методе решения системы линейных алгебраических уравнений вида x = Ax + f с квадратной матрицей A, в случае, когда наибольшее по модулю собственное значение матрицы A, больше чем единица. program trt; {$N+,E+} type matr= record b:array [1..10,1..10] of extended; x,l2:array [1..10] of extended; G:extended; end; matx= array[1..20] of matr; var u: matx; a1,s,a2,a3,a,a0 :array [1..10,1..10] of extended; y0,l0,y00,l00,f,c,cw,c1,l,y,y1,l1,x,z0,z,x1,c2,c3:array [1..10] of extended; i,j,n,k,k1,r0,r,q,w,v,s1,iq:integer; t,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,G1,t01,t11,t21,t31,h:extended; procedure wwod; var i,j: integer; begin writeln('Введите размерность матрицы А:'); readln(n); writeln('Ввод элементов матрицы А:'); for i:=1 to n do begin for j:=1 to n do begin write('элемент A[',i,',',j,']='); readln(a[i,j]); end; end; writeln('Ввод свободного вектора f:'); for i:=1 to n do begin readln(f[i]); end; end; procedure byfer; var i,j:integer; begin for i:=1 to n do begin for j:=1 to n do begin a0[i,j]:=a[i,j]; end; end; end; procedure obr_A; var i,j:integer; begin for i:=1 to n do begin for j:=1 to n do begin a1[i,j]:=a0[j,i]; end; end; writeln('Для отыскания собственных значений необходимо'); writeln('ввести вектора l0 и y0.'); writeln; writeln('Введите вектор l0:'); for i:=1 to n do begin readln(l0[i]); end; writeln('Введите вектор y0:'); for i:=1 to n do begin readln(y0[i]); end; end; procedure byfer2; var i :integer; begin for i:=1 to n do begin y00[i]:=y0[i]; l00[i]:=l0[i]; end; end; Procedure otisk; var i,j : integer; begin for i:=1 to n do begin t:=0; for j:=1 to n do begin t:=a0[i,j]*y00[j]+t; end; c[i]:=t; end; t1:=0; for i:=1 to n do begin t1:=l00[i]*c[i]+t1; end; t2:=0; for i:=1 to n do begin t2:=l00[i]*y00[i]+t2; end; u[q].G:=abs(t1/t2); for i:=1 to n do begin y[i]:=u[q].G*c[i]; end; for i:=1 to n do begin t3:=0; for j:=1 to n do begin t3:=a1[i,j]*l00[j]+t3; end; c1[i]:=t3; end; for i:=1 to n do begin l[i]:=u[q].G*c1[i]; end; end; procedure otisk2; var i,j: integer; begin for i:=1 to n do begin t01:=0; for j:=1 to n do begin t01:=a0[i,j]*y00[j]+t01; end; c[i]:=t01; end; t11:=0; for i:=1 to n do begin t11:=l00[i]*c[i]+t11; end; t21:=0; for i:=1 to n do begin t21:=l00[i]*y00[i]+t21; end; G1:=abs(t11/t21); for i:=1 to n do begin y[i]:=G1*c[i]; end; for i:=1 to n do begin t31:=0; for j:=1 to n do begin t31:=a1[i,j]*l00[j]+t31; end; c1[i]:=t31; end; for i:=1 to n do begin l[i]:=G1*c1[i]; end; end; procedure normma; var i:integer; begin for i:=1 to n do begin y1[i]:=sqr(y[i]); l1[i]:=sqr(l[i]); end; t4:=0; t5:=0; for i:=1 to n do begin t4:=y1[i]+t4; t5:=l1[i]+t5; end; t6:=sqrt(t4); t7:=sqrt(t5); for i:=1 to n do begin u[q].x[i]:=y[i]/t6; u[q].l2[i]:=l[i]/t7; end; end; procedure vivod; var i:integer; begin for i:=1 to n do begin writeln(u[q].x[i]:13:13,' ',u[q].l2[i]:13:13); end; end; procedure sobstv; var i,j:integer; begin obr_A; byfer2; writeln('Введите количество приближений для отыскания'); writeln('собственных векторов l,y операторов А и А~ и'); writeln('собственного значения T оператора А:'); readln(k); for k1:=1 to k do begin otisk; normma; writeln(k1,':',' ', 'T=',u[q].G:13:13); vivod; for i:=1 to n do begin y00[i]:=y[i]; l00[i]:=l[i]; end; end; end; procedure metod2; var i,j: integer; begin for i:=1 to n do begin for j:=1 to n do begin u[q].b[i,j]:=a0[i,j]-u[q].G*u[q].x[i]*u[q].l2[j]; end; end; end; procedure metod1; var i: integer; begin writeln('Введите начальные приближения для отыскания решения'); writeln('уравнения вида y=By+f:'); for i:=1 to n do begin readln(z0[i]); end; end; procedure metod3; var i,j:integer; begin for i:=1 to n do begin t8:=0; for j:=1 to n do begin t8:=u[q].b[i,j]*z0[j]+t8; end; z[i]:=t8+f[i]; end; end; procedure vivod1; var i: integer; begin for i:=1 to n do begin write(z[i]:13:13,' '); end; end; procedure ccc; var i,j: integer; begin for i:=1 to n do begin for j:=1 to n do begin if (i=j) then s[i,j]:=1 else s[i,j]:=0; end; end; for i:=1 to n do begin for j:=1 to n do begin a2[i,j]:=s[i,j]-a[i,j] end; end; for i:=1 to n do begin t9:=0; for j:=1 to n do begin t9:=a2[i,j]*u[1].x[j]+t9; end; c2[i]:=t9; end; for i:=1 to n do begin for j:=1 to n do begin a3[i,j]:=a[i,j]-s[i,j]; end; end; for i:=1 to n do begin t10:=0; for j:=1 to n do begin t10:=a3[i,j]*z[j]+t10; end; c3[i]:=t10+f[i]; end; h:=c3[1]/c2[1]; for i:=1 to n do begin x1[i]:=z[i]+h*u[1].x[i]; end; end; procedure ccc1; var i,j: integer; begin for i:=1 to n do begin for j:=1 to n do begin if (i=j) then s[i,j]:=1 else s[i,j]:=0; end; end; for i:=1 to n do begin for j:=1 to n do begin a2[i,j]:=s[i,j]-u[s1].b[i,j]; end; end; for i:=1 to n do begin t9:=0; for j:=1 to n do begin t9:=a2[i,j]*u[s1+1].x[j]+t9; end; c2[i]:=t9; end; for i:=1 to n do begin for j:=1 to n do begin a3[i,j]:=u[s1].b[i,j]-s[i,j]; end; end; for i:=1 to n do begin t10:=0; for j:=1 to n do begin t10:=a3[i,j]*z[j]+t10; end; c3[i]:=t10+f[i]; end; h:=c3[1]/c2[1]; for i:=1 to n do begin x1[i]:=z[i]+h*u[s1+1].x[i]; end; end; begin {основная программа} wwod; q:=0; byfer; repeat q:=q+1; sobstv; metod2; writeln(q,'-я матрица B:'); for i:=1 to n do begin for j:=1 to n do begin a0[i,j]:=u[q].b[i,j]; a1[i,j]:=a0[j,i]; write( u[q].b[i,j]:4:4,' '); end; writeln; end; byfer2; for w:=1 to 9 do begin otisk2; for iq:=1 to n do begin y00[iq]:=y[iq]; l00[iq]:=l[iq]; end; end; writeln('T=',G1:5); if G1>1 then writeln('На ',q,'-ом шаге спектральный радиус больше единицы.') else v:=1 until v=1; readln; metod1; writeln('Введите количество приближений для отыскания решения уравнения y=By+f:'); readln(r); for r0:=1 to r do begin metod3; write(r0,':'); vivod1; for i:=1 to n do z0[i]:=z[i]; writeln; end; for s1:=(q-1) downto 1 do begin ccc1; z:=x1; end; readln; writeln('Решением исходного уравнения x=Ax+f есть вектор:'); ccc; for i:=1 to n do begin writeln(x1[i]:13:13); end; readln; end. з8. Получение двусторонних оценок точного решения x операторного уравнения вида x = Ax + f, в случае, когда спектральный радиус не обязательно меньше единицы. * program wer2; var t1,t2,t3,max1,min1,l,min2,s1,min3,s2,s3,min4,t4:real; n,k1,k2,k3,i,j,i1,k4,i2,i3,i4 :integer; a: array [1..30,1..30] of real; x,f,c,u1,u2,u3,u4,u5,u6,u7,u8,u0,u00,u9,u10,u11,u12,u13,u14,u15,u16,u140,u100: array [1..30] of real; procedure wwodm; var i,j: integer; begin writeln('Введите размерность матрицы А:'); readln(n); for i:=1 to n do begin for j:=1 to n do begin write('введите элемент матрицы A[ ',i,',',j,']='); readln(a[i,j]); end; end; end; procedure wwodv; var i:integer; begin writeln('введите координаты свободного вектора f:'); for i:=1 to n do readln(f[i]); end; procedure wwodx; var i:integer; begin writeln('введите координаты начального приближения Х:'); for i:=1 to n do readln(x[i]); writeln('введите порядок определения для приближений:'); readln(k1); readln(k2); readln(k3); end; procedure umnog; var i,j: integer; begin for i:=1 to n do begin l:=0; for j:=1 to n do begin l:=a[i,j]*x[j]+l; end; c[i]:=l+f[i]; end; end; procedure umnog2; var i,j: integer; begin for i:=1 to n do begin u9[i]:=(max1*(u2[i]-u1[i]))-(u3[i]-u2[i]); end; writeln('Координаты вектора v0:'); for i:=1 to n do begin writeln(u9[i]:6:6); end; for i:=1 to n do begin u13[i]:=(u3[i]-u2[i])-(min1*(u2[i]-u1[i])); end; writeln('Координаты вектора w0:'); for i:=1 to n do begin writeln(u13[i]:6:6); end; end; begin {основная программа} wwodm; wwodv; wwodx; for i1:=1 to k3 do begin umnog; if (i1=k1) then begin for i:=1 to n do u1[i]:=c[i]; end; if (i1=k2) then begin for i:=1 to n do u2[i]:=c[i]; end; if (i1=k3) then begin for i:=1 to n do u3[i]:=c[i]; end; for i:=1 to n do x[i]:=c[i]; end; writeln('искомый вектор u[',k1,']:'); for i:=1 to n do writeln(u1[i]:7:7); readln; writeln('искомый вектор u[',k2,']:'); for i:=1 to n do writeln(u2[i]:7:7); readln; writeln('искомый вектор u[',k3,']:'); for i:=1 to n do writeln(u3[i]:7:7); readln; for i:=1 to n do begin u4[i]:=(u3[i]-u2[i])/(u2[i]-u1[i]); end; max1:=u4[1]; for i:=2 to n do begin if u4[i]>max1 then max1:=u4[i]; end; writeln('"гамма" равно - ',max1:5:5); min1:=u4[1]; for i:=2 to n do begin if u4[i] end; writeln('"бетта" равно - ',min1:5:5); t1:=(max1)/(1-max1); t2:=(min1)/(1-min1); for i:=1 to n do begin u5[i]:=u3[i]+t1*(u3[i]-u2[i]); u6[i]:=u3[i]+t2*(u3[i]-u2[i]); end; writeln('точное решение заключено между следующими векторами:'); for i:=1 to n do begin writeln( ' ',u6[i]:5:5,' ',u5[i]:5:5); end; readln; writeln('Теперь произведем улучшение полученных оценок.'); readln; writeln('Введите координаты вектора u0:'); for i:=1 to n do begin readln(u0[i]); u00[i]:=u0[i]; end; k4:=k2-k1; for i2:=1 to k4 do begin for i:=1 to n do begin s1:=0; for j:=1 to n do begin s1:=a[i,j]*u00[j]+s1; end; u7[i]:=s1; end; for i3:=1 to n do u00[i3]:=u7[i3]; end; for i:=1 to n do u8[i]:=u7[i]/u0[i]; min2:=u8[1]; for i:=2 to n do begin if u8[i] end; writeln('q0=',min2:3:3); readln; umnog2; readln; for i3:=1 to k4 do begin for i:=1 to n do begin s2:=0; for j:=1 to n do begin s2:=a[i,j]*u9[j]+s2; end; u10[i]:=s2; end; for i:=1 to n do u9[i]:=u10[i]; end; for i:=1 to n do u100[i]:=u10[i]/u0[i]; min3:=u100[1]; for i:=2 to n do begin if u100[i] end; writeln('q=',min3:5:5); t3:=(min3)/((1-max1)*(1-min2)); for i:=1 to n do u11[i]:=t3*u0[i]; for i:=1 to n do begin u12[i]:=u5[i]-u11[i]; end; for i4:=1 to k4 do begin for i:=1 to n do begin s3:=0; for j:=1 to n do begin s3:=a[i,j]*u13[j]+s3; end; u14[i]:=s3; end; for i:=1 to n do u13[i]:=u14[i]; end; for i:=1 to n do u140[i]:=u14[i]/u0[i]; min4:=u140[1]; for i:=2 to n do begin if u140[i] end; writeln('q1=',min4:6:6); t4:=(min4)/((1-min1)*(1-min2)); for i:=1 to n do u15[i]:=t4*u0[i]; for i:=1 to n do begin u16[i]:=u6[i]+u15[i]; end; writeln('После улучшения оценок получаем следующие векторы:'); for i:=1 to n do begin writeln(u16[i]:6:6,' ',u12[i]:6:6); end; readln; end. з9. О некоторых подходах к уточнению границ решения операторных уравнений вида x = Ax + f в случае, когда спектральный радиус r ( A) не обязательно меньше единицы. program wert; type Mat = Array[1..30,1..30] of real; Vec = Array[1..30] of real; var a : Mat; f,l,x,s,y,b,u1,u2,u3,u4,u5,u6,u0,u00,u7,u8,u9,u10,u11,u12 :Vec; u13,u14,u15,u16,u100,u140:Vec; m,m1,g,h,h1,t,t1,t2,max1,min1,s1,min2,min3,min4,s2,s3,t3,t4:real; r,i,j,k,p,k1,k2,k3,i1,k4,n,i2,i3,i4 : integer; procedure wwodmatr; var i,j:integer; begin for i:=1 to p do begin for j:=1 to p do begin write('Введите элемент матрицы А[',i,',',j,']='); readln(a[i,j]); end; end; end; procedure wwodf; var i:integer; begin writeln('Введите координаты свободного вектора f:'); for i:=1 to p do readln(f[i]); end; procedure wwodl; var i: integer; begin for i:=1 to p do l[i]:=1; end; procedure wwodx; var i:integer; begin writeln('Введите координаты вектора x (начального приближения) :'); for i:=1 to p do readln(x[i]); writeln('введите порядок определения для приближений:'); readln(k1); readln(k2); readln(k3); end; procedure umnog; var i,j : integer; begin for i:=1 to p do begin m:=0; for j:=1 to p do begin m:=a[i,j]*x[j]+m; end; s[i]:=m; end; end; procedure scalf; var i :integer; begin g:=0; for i:=1 to p do begin g:=f[i]*l[i]+g; end; end; procedure scalx; var i:integer; begin h:=0; for i:=1 to p do begin h:=x[i]*l[i]+h; end; end; procedure scalAx; var i: integer; begin h1:=0; for i:=1 to p do begin h1:=s[i]*l[i]+h1; end; end; procedure ttt; begin t:=g/(h-h1); end; procedure rrr ; var i: integer; begin for i:=1 to p do b[i]:=s[i]*t; end; procedure summ; var i: integer; begin for i:=1 to p do y[i]:=b[i]+f[i]; end; procedure umnog2; var i,j: integer; begin for i:=1 to p do begin u9[i]:=(max1*(u2[i]-u1[i]))-(u3[i]-u2[i]); end; writeln('Координаты вектора v0:'); for i:=1 to p do begin writeln(u9[i]:6:6); end; for i:=1 to p do begin u13[i]:=(u3[i]-u2[i])-(min1*(u2[i]-u1[i])); end; writeln('Координаты вектора w0:'); for i:=1 to p do begin writeln(u13[i]:6:6); end; end; begin { основная программа } writeln('Введите размерность матрицы А:'); readln(p); wwodmatr; wwodf; wwodl; wwodx; scalf; for i1:=1 to k3 do begin umnog; scalx; scalAx; ttt; rrr; summ; if (i1=k1) then begin for i:=1 to p do u1[i]:=y[i]; end; if (i1=k2) then begin for i:=1 to p do u2[i]:=y[i]; end; if (i1=k3) then begin for i:=1 to p do u3[i]:=y[i]; end; for i:=1 to p do begin x[i]:=y[i]; end; end; writeln('искомый вектор u[',k1,']:'); for i:=1 to p do writeln(u1[i]:7:7); readln; writeln('искомый вектор u[',k2,']:'); for i:=1 to p do writeln(u2[i]:7:7); readln; writeln('искомый вектор u[',k3,']:'); for i:=1 to p do writeln(u3[i]:7:7); readln; for i:=1 to p do begin u4[i]:=(u3[i]-u2[i])/(u2[i]-u1[i]); end; max1:=u4[1]; for i:=2 to p do begin if u4[i]>max1 then max1:=u4[i]; end; writeln('"гамма" равно - ',max1:5:5); min1:=u4[1]; for i:=2 to p do begin if u4[i] end; writeln('"бетта" равно - ',min1:5:5); t1:=(max1)/(1-max1); t2:=(min1)/(1-min1); for i:=1 to p do begin u5[i]:=u3[i]+t1*(u3[i]-u2[i]); u6[i]:=u3[i]+t2*(u3[i]-u2[i]); end; writeln('точное решение заключено между следующими векторами:'); for i:=1 to p do begin writeln( ' ',u6[i]:15:15,' ',u5[i]:15:15); end; readln; writeln('Теперь произведем улучшение полученных оценок.'); readln; n:=p; writeln('Введите координаты вектора u0:'); for i:=1 to n do begin readln(u0[i]); u00[i]:=u0[i]; end; k4:=k2-k1; for i2:=1 to k4 do begin for i:=1 to n do begin s1:=0; for j:=1 to n do begin s1:=a[i,j]*u00[j]+s1; end; u7[i]:=s1; end; for i3:=1 to n do u00[i3]:=u7[i3]; end; for i:=1 to n do u8[i]:=u7[i]/u0[i]; min2:=u8[1]; for i:=2 to n do begin if u8[i] end; writeln('q0=',min2:3:3); readln; umnog2; readln; for i3:=1 to k4 do begin for i:=1 to n do begin s2:=0; for j:=1 to n do begin s2:=a[i,j]*u9[j]+s2; end; u10[i]:=s2; end; for i:=1 to n do u9[i]:=u10[i]; end; for i:=1 to n do u100[i]:=u10[i]/u0[i]; min3:=u100[1]; for i:=2 to n do begin if u100[i] end; writeln('q=',min3:5:5); t3:=(min3)/((1-max1)*(1-min2)); for i:=1 to n do u11[i]:=t3*u0[i]; for i:=1 to n do begin u12[i]:=u5[i]-u11[i]; end; for i4:=1 to k4 do begin for i:=1 to n do begin s3:=0; for j:=1 to n do begin s3:=a[i,j]*u13[j]+s3; end; u14[i]:=s3; end; for i:=1 to n do u13[i]:=u14[i]; end; for i:=1 to n do u140[i]:=u14[i]/u0[i]; min4:=u140[1]; for i:=2 to n do begin if u140[i] end; writeln('q1=',min4:6:6); t4:=(min4)/((1-min1)*(1-min2)); for i:=1 to n do u15[i]:=t4*u0[i]; for i:=1 to n do begin u16[i]:=u6[i]+u15[i]; end; writeln('После улучшения оценок получаем следующие векторы:'); for i:=1 to n do begin writeln(u16[i]:6:9,' ',u12[i]:6:9); end; readln; end. end. з10. УГибридФ методов ускорения сходимости монотонных приближений к решению x* уравнения вида x = Ax + f и однопараметрического итеративного агрегирования. program wert; { uses printer; } var lr,ch,ch1,zn,zn1,f,sn,sn1,sn2,sn3,z0,z01,z1,a1,a2,a00,b00,b0,u0,v0,u,v,p,q,p1,q1,u 1,v1: array[1..25] of real; a: array[1..25,1..25] of real; it,it1,h1,h2,h3,h11,h12,s,k,b,kt,k1,d0,d1,d01,d10,m01,m02,d02,d12,d012,d102,k0: real; g,g2,t,t1,t2,t3,r,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11:real; c,n1,i,j,n,x,hl,i1,l :integer; procedure wwod; var i,j:integer; begin writeln('введите размерность матрицы A:'); readln(n); writeln('Ввод элементов матрицы А:'); for i:=1 to n do begin for j:=1 to n do begin write('элемент A[',i,',',j,']='); readln(a[i,j]); end; end; writeln('Введите координаты свободного вектора f:'); for i:=1 to n do begin readln(f[i]); end; { writeln('Введите координаты вектора z0 :'); for i:=1 to n do begin readln(z0[i]); end; } for i:=1 to n do lr[i]:=1; end; procedure byferr; var i,j:integer; begin for i:=1 to n do begin z01[i]:=z0[i]; { writeln(u01[i]:4:4)} end; end; procedure umn; var i,j: integer; s: real; begin for i:=1 to n do begin s:=0; for j:=1 to n do begin s:=a[i,j]*z01[j]+s; end; a1[i]:=s; end; end; procedure it_agr; var i,j:integer; begin for i:=1 to n do begin r:=0; r1:=0; for j:=1 to n do begin r:=a[i,j]*u0[j]+r; r1:=a[i,j]*v0[j]+r1; end; sn[i]:=r; sn1[i]:=r1; end; r2:=0; r3:=0; for i:=1 to n do begin r2:=sn[i]*lr[i]+r2; r3:=sn1[i]*lr[i]+r3; end; r4:=0; r5:=0; for i:=1 to n do begin r4:=u0[i]*lr[i]+r4; r5:=v0[i]*lr[i]+r5; end; g:=0; for i:=1 to n do begin g:=f[i]*lr[i]+g; end; t:=g/(r4-r2); t1:=g/(r5-r3); for i:=1 to n do begin u[i]:=t*sn[i]+f[i]; v[i]:=(t1)*sn1[i]+f[i]; end; end; procedure otn; var i,j:integer; begin for i:=1 to n do begin zn[i]:=v0[i]-v[i]; ch[i]:=u[i]-u0[i]; end; for i:=1 to n do begin p[i]:=ch[i]/zn[i]; end; h2:=0; for i:=1 to n do begin h2:=p[i]+h2; end; m01:=h2/n; for i:=1 to n do begin q[i]:=zn[i]/ch[i]; end; h3:=0; for i:=1 to n do begin h3:=q[i]+h3; end; m02:=h3/n; end; begin { начало основной программы } wwod; byferr; writeln('Введите вектор u0:'); for i:=1 to n do begin readln(u0[i]); end; writeln('Введите вектор v0:'); for i:=1 to n do begin readln(v0[i]); end; writeln('Введите количество приближений:'); readln(x); for l:=1 to x do begin it_agr; otn; for i:=1 to n do begin if (m01=-1) or (m02=-1) then begin u1[i]:=u[i]; v1[i]:=v[i]; writeln(l,':',u1[i]:11:8,' ',v1[i]:11:8); writeln('деление на ноль'); end else begin u1[i]:=(u[i]+m01*v[i])/(1+m01); v1[i]:=(v[i]+m02*u[i])/(1+m02); writeln(l,':',u1[i]:11:8,' ',v1[i]:11:8); { writeln(lst,l,':',u1:11:8,' ',v1:11:8); } end; end; for i1:=1 to n do begin u0[i1]:=u[i1]; v0[i1]:=v[i1]; end; readln; end; end. program wert; { uses printer; } var lr,ch,ch1,zn,zn1,f,sn,sn1,sn2,sn3,z0,z01,z1,a1,a2,a00,b00,b0,u0,v0,u,v,p,q,p1,q1,u 2,v2,u02,c72: array[1..25] of real; a: array[1..25,1..25] of real; it,it1,h1,h2,h3,h11,h12,s,k,b,kt,k1,d0,d1,d01,d10,m01,m02,d02,d12,d012,d102,m0 12,m022,u1,v1,k0:real; g,g2,t,t1,t2,t3,r,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,h9,h10,h88,h99:real; c,n1,i,j,n,x,hl,i1,l,dd :integer; procedure wwod; var i,j:integer; begin writeln('введите размерность матрицы A:'); readln(n); writeln('Ввод элементов матрицы А:'); for i:=1 to n do begin for j:=1 to n do begin write('элемент A[',i,',',j,']='); readln(a[i,j]); end; end; writeln('Введите координаты свободного вектора f:'); for i:=1 to n do begin readln(f[i]); end; writeln('Введите координаты вектора z0 :'); for i:=1 to n do begin readln(z0[i]); end; for i:=1 to n do lr[i]:=1; end; procedure byferr; var i,j:integer; begin for i:=1 to n do begin z01[i]:=z0[i]; { writeln(u01[i]:4:4)} end; end; procedure umn; var i,j: integer; s: real; begin for i:=1 to n do begin s:=0; for j:=1 to n do begin s:=a[i,j]*z01[j]+s; end; a1[i]:=s; end; end; procedure it_agr; var i,j:integer; begin for i:=1 to n do begin r:=0; r1:=0; for j:=1 to n do begin r:=a[i,j]*u0[j]+r; r1:=a[i,j]*v0[j]+r1; end; sn[i]:=r; sn1[i]:=r1; end; r2:=0; r3:=0; for i:=1 to n do begin r2:=sn[i]*lr[i]+r2; r3:=sn1[i]*lr[i]+r3; end; r4:=0; r5:=0; for i:=1 to n do begin r4:=u0[i]*lr[i]+r4; r5:=v0[i]*lr[i]+r5; end; g:=0; for i:=1 to n do begin g:=f[i]*lr[i]+g; end; t:=g/(r4-r2); t1:=g/(r5-r3); for i:=1 to n do begin u[i]:=t*sn[i]+f[i]; v[i]:=(t1)*sn1[i]+f[i]; writeln(v[i]:3:3); end; end; procedure otn; var i,j:integer; begin for i:=1 to n do begin zn[i]:=v0[i]-v[i]; ch[i]:=u[i]-u0[i]; end; h2:=ch[1]; for i:=2 to n do begin if ch[i] end; h9:=zn[1]; for i:=2 to n do begin if zn[i]>h9 then h9:=zn[i]; end; m01:=h2/h9; h3:=zn[1]; for i:=2 to n do begin if zn[i] end; h10:=ch[1]; for i:=2 to n do begin if ch[i]>h10 then h10:=ch[i]; end; m02:=h3/h10; end; procedure byferr2; var i,j : integer; begin for i:=1 to n do begin u2[i]:=u[i]; v2[i]:=v[i]; u02[i]:=u0[i]; c72[i]:=v0[i]; end; end; procedure it_agr2; var i,j:integer; begin for i:=1 to n do begin r6:=0; r7:=0; for j:=1 to n do begin r6:=a[i,j]*u02[j]+r6; r7:=a[i,j]*c72[j]+r7; end; sn2[i]:=r6; sn3[i]:=r7; end; r8:=0; r9:=0; for i:=1 to n do begin r8:=sn2[i]*lr[i]+r8; r9:=sn3[i]*lr[i]+r9; end; r10:=0; r11:=0; for i:=1 to n do begin r10:=u02[i]*lr[i]+r10; r11:=c72[i]*lr[i]+r11; end; g2:=0; for i:=1 to n do begin g2:=f[i]*lr[i]+g2; end; t2:=(g2)/(r10-r8); t3:=(g2)/(r11-r9); for i:=1 to n do begin u2[i]:=(t2)*sn2[i]+f[i]; v2[i]:=(t3)*sn3[i]+f[i]; end; end; procedure otn2; var i,j: integer; begin for i:=1 to n do begin ch1[i]:=(u2[i]-u02[i]); zn1[i]:=(c72[i]-v2[i]); end; h11:=ch1[1]; for i:=2 to n do begin if ch1[i] end; h88:=zn1[1]; for i:=2 to n do begin if zn1[i]>h88 then h88:=zn[i]; end; m012:=h11/h88; h12:=zn1[1]; for i:=2 to n do begin if zn1[i] end; h99:=ch1[1]; for i:=2 to n do begin if ch1[i]>h99 then h99:=ch1[i]; end; m022:=h12/h99; end; begin { начало основной программы } wwod; byferr; writeln('Введите вектор u0:'); for i:=1 to n do begin readln(u0[i]); end; writeln('Введите вектор v0:'); for i:=1 to n do begin readln(v0[i]); end; it_agr; otn; writeln('Введите количество приближений:'); readln(x); for i:=1 to n do begin writeln('приближение к ',i,'-ой координате вектора решения:'); byferr2; m012:=m01; m022:=m02; for l:=1 to x do begin if (m012=-1) or (m022=-1) then begin u1:=u2[i]; v1:=v2[i]; writeln(l,':',u1:11:8,' ',v1:11:8); writeln('деление на ноль'); end else begin u1:=(u2[i]+m012*v2[i])/(1+m012); v1:=(v2[i]+m022*u2[i])/(1+m022); writeln(l,':',u1:11:8,' ',v1:11:8); end; for dd:=1 to 4 do begin for i1:=1 to n do begin u02[i1]:=u2[i1]; c72[i1]:=v2[i1]; end; it_agr2; end; otn2; readln; end; end; end. Книги, научные публикации