Ю.В. Клинаев, Д.В. Терин МЕТОДЫ И ТЕХНОЛОГИИ КОМПЬЮТЕРНЫХ ВЫЧИСЛЕНИЙ В МАТЕМАТИЧЕСКОМ МОДЕЛИРОВАНИИ

advertisement
Министерство образования и науки Российской Федерации
Федеральное агентство по образованию
Саратовский государственный технический университет
Ю.В. Клинаев, Д.В. Терин
МЕТОДЫ И ТЕХНОЛОГИИ КОМПЬЮТЕРНЫХ
ВЫЧИСЛЕНИЙ В МАТЕМАТИЧЕСКОМ
МОДЕЛИРОВАНИИ
Учебно-методический комплекс по дисциплине «Вычислительная
математика» для студентов направления «Информатика и вычислительная
техника» и специальности «Программное обеспечение вычислительной
техники и автоматизированных систем» всех форм обучения
Саратов 2009
УДК
ББК
Рецензенты:
Доктор физико-математических наук, профессор Д. А. Усанов
Кафедра «Теоретическая и математическая физика»
СГУ им. Н.Г. Чернышевского
Одобрено
редакционно-издательским советом
Саратовского государственного технического университета
Клинаев Ю.В., Терин Д.В.
Методы и технологии компьютерных вычислений в математическом
моделировании: Учеб. метод. комплекс. Саратов: Сарат. гос. техн. ун-т,
2009. 213 с.
ISBN
В основу учебно-методического комплекса положен курс лекций,
читаемых студентам кафедры технической физики и информационных
технологий Энгельсского технологического института Саратовского
государственного технического университета.
Учебно-методический комплекс по дисциплине «Вычислительная
математика» предназначен для студентов направления «Информатика и
вычислительная техника» и специальности «Программное обеспечение
вычислительной техники и автоматизированных систем» всех форм
обучения, а также научных сотрудников, магистрантов, аспирантов,
инженеров, занимающихся исследованиями и разработкой методов и
технологий компьютерных вычислений.
УДК
ББК
© Саратовский государственный
технический университет, 2009
© Клинаев Ю.В., Терин Д.В., 2009
ISBN
2
ОГЛАВЛЕНИЕ
стр
6
7
16
16
16
ВВЕДЕНИЕ.……………………………...……………………………...
Рабочая программа и методические указания…………………………
Краткий конспект лекций……………………………………………….
1.Решение алгебраических и трансцендентных уравнений…………..
1.1. Метод простых итераций………………………………………...
1.2. Усовершенствованный метод последовательных
приближений…………………………….. ……………………….…..
1.3. Метод Ньютона-Рафсона………………………………………...
1.4. Случай почти равных корней……………………………………
1.5. Метод хорд………………………………………………………..
1.6. Метод секущих…………………………………………………...
Варианты заданий……………………………………………………….
Вопросы для самопроверки …..………………………………………..
2. Методы интерполяции………………………………………………..
2.1. Метод Лагранжа………………………………………………….
2.2. Вычислительная схема Эйткена………………………………...
2.3. Определение явного вида интерполяционного многочлена…..
Варианты заданий……………………………………………………….
Вопросы для самопроверки …..………………………………………..
3. Метод наименьших квадратов……………………………………….
3.1. Постановка задачи и способ решения…………………………..
3.2. Вычислительная схема метода наименьших квадратов……….
3.3. Получение таблицы экспериментальных данных……………...
3.4. Методические указания по выполнению заданий……………...
3.5. Форматирование диаграмм………………………………………
Варианты заданий……………………………………………………….
Вопросы для самопроверки …..………………………………………..
4. Полином Чебышева…………………………………………………..
5. Решение систем линейных и нелинейных алгебраических
уравнений…………………………………………………………………...
5.1. Метод Ньютона – Рафсона……………………………………….
5.2. Метод итераций для систем нелинейных уравнений…………..
5.3. Метод простой итерации для систем линейных уравнений.…..
5.4. Метод Зейделя…………………………………………………….
Варианты заданий……………………………………………………….
Вопросы для самопроверки …..………………………………………..
6. Методы численного интегрирования………………………………..
6.1. Квадратурные формулы, порожденные интерполяционными
формулами……………………………………………………………..
20
22
27
28
29
30
30
31
31
33
36
37
39
40
40
42
50
50
52
59
59
61
66
66
68
69
71
79
79
80
80
3
6.2. Квадратурные формулы Гаусса………………………………….
6.3. Метод Ромберга…………………………………………………..
6.4. Вычисление интеграла по формуле прямоугольников………...
6.5. Вычисления интеграла по формуле трапеций………………….
6.6. Вычисление интеграла методом Симпсона…………………….
6.7. Вычисление интеграла методом Гаусса………………………...
Варианты заданий……………………………………………………….
Вопросы для самопроверки …..………………………………………..
7. Основы решения дифференциальных уравнений……………..……
Концепция решения дифференциальных уравнений. Задача
Коши…………………………………………………………………...
7.1. Метод разложений в ряд Тейлора…...…………………………..
7.2.Классический метод Эйлера……………………………………...
7.3.Метод Эйлера – Коши (метод усреднения тангенсов)………….
7.4. Модифицированный метод Эйлера (исправленный метод
ломаных)……………………………………………………………….
7.5. Общая форма записи методов Рунге-Кутта второго порядка…
7.6. Классический метод Рунге-Кутта……………………………….
Методические указания по выполнению задания…………………..
7.7. Метод Рунге-Кутта четвертого порядка для решения системы
дифференциальных уравнений……………………………………….
7.8. Метод Рунге-Кутта для решения дифференциального уравнения
второго порядка…………………………………………………..
Варианты заданий……………………………………………………….
Вопросы для самопроверки …..………………………………………..
8. Аппроксимация и интерполяция данных в MatLAB……………….
9. Вычисления в MathCAD……………………………………………...
10. Учебная вычислительная практика………………………………...
10.1. Цель и задачи учебной практики ……………………………...
10.2. Организация практики………………………………………….
10.3. Содержание практики…………………………………………..
10.4. Содержание и требования к оформлению отчета по практике
10.5. Список рекомендованной литературы при прохождении
учебной вычислительной практики………………………………….
11. Комплект тестовых заданий по дисциплине «Вычислительная
математика»……………………………………………………………...
11.1. Нахождение корней уравнений………………………………...
11.2. Задачи к методам решения уравнений…………………………
11.3. Решение СЛАУ и СНАУ………………………………………..
11.4. Метод наименьших квадратов………………………………….
11.5. Задачи к МНК……………………………………………………
11.6. Методы интерполяции………………………………………….
4
83
84
89
89
90
91
92
94
95
95
95
96
98
99
101
102
103
108
111
112
112
113
138
153
153
154
154
157
158
160
160
167
168
171
173
175
11.7. Численное интегрирование……………………………………..
11.8. Численное решение дифференциальных уравнений…………
11.9. Аппроксимация и интерполяция данных в MatLAB………….
11.10 Спецификация банка данных тестовых заданий……………..
ЗАКЛЮЧЕНИЕ
179
192
198
210
213
5
ВВЕДЕНИЕ
Настоящее учебное пособие является учебно-методическим
комплексом
по
дисциплине
«Вычислительная
математика»
предназначенного для студентов направления «Информатика и
вычислительная техника» и специальности «Программное обеспечение
вычислительной техники и автоматизированных систем».
При изучении дисциплины «Вычислительная математика» следует
особое внимание уделить методам приближенных вычислений,
изложенным в программе, усвоить их в процессе решения конкретных
задач, уметь оценивать результаты расчетов, проводить вычисления с
помощью простейших технических средств, научиться проводить
сравнительный анализ эффективности различных методов в приложении к
решению конкретной задачи, приобрести навыки выбора наиболее
рационального метода решения задачи и реализации выбранного метода с
доведением до формулы, графика, числа и т.д., ознакомиться с
математической постановкой и методами решения широкого круга
вопросов и задач, научиться работать со справочной литературой. Студент
должен приобрести твердые навыки: «прикидки» точности данных, исходя
из требуемой точности результата; «прикидки» объема вычислительных
работ и выбора средств вычислений; организации вычислений.
Государственный
стандарт
направления
«Информатика
и
вычислительная техника» и специальности «Программное обеспечение
вычислительной техники и автоматизированных систем» предусматривает
при изучении дисциплины «Вычислительная математика» следующее
ЕНФ015
Индекс
6
Наименование дисциплин
Всего
и их основные разделы
часов
Вычислительная
математика:
особенности 140
математических вычислений, реализуемых на ЭВМ:
теоретические
основы
численных
методов:
погрешности вычислений; устойчивость и сложность
алгоритма (по памяти, по времени); численные методы
линейной алгебры; решение нелинейных уравнений и
систем;
интерполяция
функций;
численное
интегрирование и дифференцирование; решение
обыкновенных дифференциальных уравнений; методы
приближения
и
аппроксимации
функций;
преобразование Фурье; равномерное приближение
функций; математические программные системы.
РАБОЧАЯ ПРОГРАММА
1. Цели и задачи дисциплины, ее место в учебном процессе.
1.1.
Целью
преподавания
дисциплины
«Вычислительная
математика» для студентов направления «Информатика и вычислительная
техника» специальности «Программное обеспечение вычислительной
техники
и
автоматизированных
систем»
является
изучение
вычислительных методов, а также приобретение практических навыков
программной реализации методов вычислительной математики и
использования стандартных пакетов математических программ: MatLab и
MathCAD.
1.2 Задачи преподавания дисциплины.
Задачи преподавания дисциплины формируются на основе
требований квалификационной характеристики инженера-программиста, в
соответствии с которыми студент должен:
-уметь выбрать метод решения математической задачи,
-уметь разработать (выборочно) программную реализацию
распространенных методов вычислительной математики,
-уметь оценивать погрешность используемого метода и
производимых вычислений,
-уметь применять стандартные математические пакеты программ для
решения поставленной задачи.
1.3 Структурно – логическая связь с другими дисциплинами.
Так как дисциплина «Вычислительная математика» изучает методы
и технологии решения математических задач, а так же вопросы
программной реализации методов вычислений, то она является
универсальной основой решения задач, связанных с моделированием и
исследованием различных процессов и систем.
Перечень дисциплин с указанием разделов, усвоение, которых
студентами необходимо для изучения дисциплины «Вычислительная
математика».
Математика: теория функций действительного переменного,
интерполирование функций, интегрирование функций, нелинейные
алгебраические и трансцендентные уравнения, линейная алгебра, ряды,
обыкновенные дифференциальные уравнения.
2. Требования к знаниям и умениям студентов по дисциплине.
Студент должен знать: основы математического анализа, теорию
вероятностей и математической статистики, методы
объектноориентированного программирования, офисные технологии.
Студент должен уметь: включать компьютер, применять
теоретические знания.
7
1, 2
1
3, 4
2
5, 6
3
7, 8
4
9,10
5
11
6
12
7
12
8
4
Теория и методы
приближения
функций.
Ортогональные
функции. Общие
свойства
ортогональных
функций. Неравенство
Бесселя и полнота.
Ортогональные
многочлены.
Полиномы Чебышёва.
Критерий Чебышёва.
Численное
интегрирование.
Метод
интегрирования
Ромберга.
Численные методы
решения
алгебраических и
трансцендентных
уравнений.
Численные методы
решения систем
линейных
алгебраических
уравнений – СЛАУ.
Численные методы
решения систем
нелинейных
алгебраических
уравнений – СНАУ.
I
II
III
8
СРС
3
пр.з.
2
л. з.
№ темы
1
Лекции
№ недели
Наименование темы
Всего
№ модуля
3. Распределение трудоемкости (час.) дисциплины по темам и видам
занятий.
Часы
4
5
6
7
8
16
8
4
0
4
16
8
4
0
4
16
8
4
0
4
16
8
4
0
4
14
8
2
0
4
12
4
4
0
4
4
2
2
4
2
2
Решение
обыкновенных
13,14 9
дифференциальных
уравнений.
Применение системы
MATLAB в задачах
15,16 10
вычислительной
математики.
Итого
СРС
IV
4
пр.з.
3
л. з.
№ темы
2
Лекции
№ недели
1
Наименование темы
Всего
№ модуля
Часы
4
5
6
7
8
16
8
4
0
4
26
8
4
0
10
140
64
34
0
38
4. Содержание лекционного курса
№
Всего №
Тема лекции. Вопросы, отрабатываемые на
темы часов лекции лекции
1
2
3
Алгебраическое интерполирование.
1
2
Интерполяционный многочлен Лагранжа.
Вычислительная схема Эйткена.
Определение явного вида интерполяционного
многочлена. Определитель Вандермонда.
1
2
Программная реализация методов
алгебраического интерполирования в системе
Visual Basic for Application (VBA)для Excel.
Классические ортогональные многочлены.
Метод наименьших квадратов. Проведение
2
2
подходящего многочлена. Метод наименьших
квадратов и коэффициенты Фурье. Практика
метода наименьших квадратов в системе VBA
Экономизация рядов по Чебышёву. Гнездовые
скобочные выражения и их использование для
2
2
вычислений. Численные оценки
экономизированной аппроксимации Чебышёва.
Численное интегрирование. Квадратурные
3
2
формулы, порожденные интерполяционными
формулами. Формула трапеций.
Формула Симпсона (парабол). Остаточный член
3
2
– оценка погрешности квадратурной формулы.
9
1
2
4
2
4
2
4
2
5
2
5
2
6
2
6
2
7
2
7
2
8
2
8
2
9
2
9
2
2
9
2
9
2
9
2
10
2
10
3
Квадратурные формулы Бодэ, Уэддля, НьютонаКотеса.
Квадратурные формулы на основе
неравноотстоящих узлов. Формулы Гаусса,
Чебышёва.
Реккурентное соотношение Ромберга.
Программная реализация методов численного
интегрирования.
Метод простых итераций. Условие сходимости.
Усовершенствованный метод последовательных
приближений – модификация Вегстейна (1958г.).
Метод Ньютона-Рафсона. Методы: деления
отрезка пополам, модифицированный метод
Ньютона-Рафсона, хорд, секущих,
комбинированный метод хорд-секущих.
Случай почти равных корней – метод Мейкона.
Программная реализация методов в среде VBA.
Вычисление определителей. Метод Крамера для
СЛАУ.
Метод Гаусса для СЛАУ.
Метод итераций для СЛАУ. Условие
сходимости. Метод Зейделя СЛАУ.
Метод итераций для СНАУ. Условие
сходимости. Метод Ньютона-Рафсона для
СНАУ.
Природа и смысл дифференциальных уравнений.
Поле направлений. Численное решение.
Устойчивость метода простого прогноза.
Устойчивость коррекции.
Системы дифференциальных уравнений.
Методы Рунге-Кутта. Метод Рунге-Кутта 4-го
порядка
Метод Эйлера. Исправленный метод Эйлера.
Модифицированный метод Эйлера.
Метод Адамса. Комбинированные методы.
Выбор шага интегрирования и оценка точности.
Программная реализация методов Рунге-Кутта в
среде VBA.
Основные сведения о системе MatLab. Установка
системы на компьютер.
1
10
10
10
10
10
10
3
Работа в режиме прямых вычислений
Матричные операции и функции.
Обычные и специальные функции
Обработка данных.
Операции с многочленами.
Операции с функциями пользователя.
Обзор и использование внешних расширений
10
2
системы
10
2
Основы программирования в среде MatLab.
10
2
Работа с графическими средствами.
10
2
Спектральный анализ и задачи фильтрации.
5. Перечень тем практических занятий - отсутствуют
6. Перечень лабораторных работ
№
тем
ы
1
1
1
1
2
2
2
2
2
2
2
2
№
Всего
работ
часов
ы
2
3
2
1
2
2
2
3
4
4
3
4
5
4
4
6
5
4
7
6
4
8
7
4
9
8
2
10
8
2
11
Наименование лабораторной работы
4
Интерфейс MATHLAB
Интерфейс EXCEL
Среда VBA в EXCEL
Метод наименьших квадратов
Интерполирование функций по Лагранжу.
Вычислительная схема Эйткена
Численное интегрирование
Метод простых итераций. Метод НьютонаРафсона.
Матричные операции. Методы решения СЛАУ
СНАУ. Регрессионный анализ.
Методы Рунге-Кутта.
Численные методы и графические средства
MatLab
Спектральный анализ в MatLab. Алгоритмы и
функции преобразований Фурье (ДПФ БПФ).
11
7. Задания для самостоятельной работы студентов
№
тем
ы
1
Всего
Вопросы для самостоятельного изучения
часов
2
6
5
4,5
5
4,5
5
9
5
9
5
3
5
10
8
Литер
атура
3
4
Методы решения СЛАУ и СНАУ, матричные
1-12
операции.
Методы интегрирования: трапеций, Симпсона,
1-12
Гаусса, Ромберга.
Вычисление определенных интегралов.
1-12
Программные средства.
Модифицированный метод Эйлера, метод Рунге1-12
Кутта 4-го порядка, метод Гира для обыкновенных
дифференциальных уравнений (ОДУ), Методы
прогноза и коррекции для ОДУ.
Фурье-анализ, быстрое преобразование Фурье
1-12
(БПФ), одномерный, двумерный анализ Фурье.
Полиномы Чебышёва, Экономизация степенных
1-12
рядов.
Графика MatLab: высокоуровневая,
9, 18,
дескрипторная, специальная, анимационная,
19, 28
трехмерная.
8. Курсовой проект - не предусмотрен.
9. Курсовая работа - не предусмотрена.
10. Расчетно-графическая работа - не предусмотрена.
11. Контрольная работа - не предусмотрена.
12. Экзаменационные вопросы.
1а) Метод наименьших квадратов (линейная регрессия).
1б). Полиномиальная аппроксимация по МНК.
2а) Интерполирование по Лагранжу и схема Эйткена.
2б). Интерполирование функций.
3а).
Методы
решения
нелинейных
алгебраических
и
трансцендентных уравнений: простых итераций,
4. Метод дихотомии решения нелинейных алгебраических и
трансцендентных уравнений.
5. Метод Ньютона-Рафсона решения нелинейных алгебраических и
трансцендентных уравнений
6. Модифицированный метод Ньютона решения нелинейных
алгебраических и трансцендентных уравнений.
12
7. Метод Мейкона (случай почти равных корней) решения
нелинейных алгебраических и трансцендентных уравнений.
8а). Метод итераций решения систем нелинейных алгебраических и
трансцендентных уравнений.
9. Метод Гаусса решения систем нелинейных алгебраических и
трансцендентных уравнений.
10. Метод Зейделя решения систем нелинейных алгебраических и
трансцендентных уравнений.
11. Метод Ньютона-Рафсона для систем линейных и нелинейных
алгебраических уравнений (СЛАУ и СНАУ).
12а). Методы численного интегрирования.
13. Методы трапеций.
14. Метод Симпсона.
15. Метод Гаусса.
16. Метод Ромберга.
17а). Методы решения дифференциальных уравнений.
18. Модифицированный метод Эйлера.
19. Метод Рунге-Кутта 4-го порядка
20*. Метод Гира для обыкновенных дифференциальных уравнений.
б) Методы прогноза и коррекции для ОДУ.
21а). Фурье-анализ
22. Быстрое преобразование Фурье (БПФ)
23б*). Одномерный, двумерный анализ Фурье.
24а*). Полиномы Чебышёва
24б*). Экономизация степенных рядов.
25. Графика MatLab: высокоуровневая, дескрипторная, специальная,
анимационная, трехмерная.
Примечание.
1. Пункт б) - вопрос отнесен к системе MatLab.
2. Со звездочкой – по возможности и желанию студента.
3. Студент должен уметь реализовать тот или иной численный метод
или алгоритм в среде VBA MS Office и в системе MatLab.
13. Основная и дополнительная литература.
Основная:
1. Крылов В.И., Бобков В,В., Монастырский П,И. Вычислительные
методы математики, Т.1.-М.- Наука, 1976.
2. Гутер Р.С., Резынковский П.Т. Программирование и
вычислительная математика. – М.: Наука, 1971.-262 с.
3. Хемминг Р.В. Численные методы (для научных работников и
инженеров).-М.: Наука, 1968.
13
4. Мак-Кракен Д., Дорн У. Численные методы и программирование
на Фортране. – М.: Мир, 1977.-584 с.
5. Иванова Т.П., Пухова Г.В. Программирование и вычислительная
математика.- М.: Просвещение, 1978.-320 с.
6. Березин И.С., Жидков Н.П. Методы вычислений.- М.: Наука, 1966,
Т.1-2.
7. Демидович Б.П., Марон И.А. Основы вычислительной
математики.- М.: Наука, 1960.
8. Потемкин В.Г. Система инженерных и научных расчетов
MATLAB 5.х. - М.:Диалог-Мифи, 1999. – 670с.
9. Мэтьюз Д., Финк К. Численные методы. Использование
MATLAB..: ИД "Вильямс",2001. - 720с.
10. Глейзер В.В., Клинаев Ю.В. Вычислительная математика.
Алгебраическое интерполирование. Метод. указ к лаб. раб. Для студентов
спец. 0517 и 0501 Саратов : Изд-во СПИ , 1990.(0,75 п.л.,14с.)
11. Глейзер В.В., Клинаев Ю.В. Вычислительная математика.
Регрессионный анализ. Метод наименьших квадратов. Метод. указ к лаб.
раб. Для студентов спец. 0517 и 0501 Саратов : Изд-во СПИ , 1990.(1,00
п.л.,18с.)
12. Глейзер В.В., Клинаев Ю.В. Исследование операций: задача
линейного программирования. Метод. указ к выполн. лаб. раб. по курсу
«Вычислительная математика и основы программирования» для студентов
всех спец. Саратов : Изд-во СПИ , 1991.(1,75 п.л.,28с.)
13. Клинаев Ю.В., Шатурная О.С. Приближенное решение
нелинейных уравнений и СЛАУ. Метод. реком. к лаб. работам по
дисциплинне “Вычислительная математика”, Саратов: Изд-во СГТУ, 2003.
(24с.)
14. Клинаев Ю.В., Шатурная О.С. Численное интегрирование. Метод
.указ к лаб.раб. по дисциплине “Вычислительная математика” Саратов :
Изд-во СГТУ , 2003.(1,25 п.л.,20с.)
15. Дьяконов В.П. Компьютерная математика. Теория и практика. М.: Нолидж, 2001. - 1296с.
16. Уэллс Э., Харшбаргер С. Microsoft Excel 97. Библиотека
разработчика: Пер. с англ. – М.: Изд. отдел «Русская редакция» ТОО
«Channel Trading Ltd», 1998. – 536 с.
17. Гарнаев А. Самоучитель VBA. – СПб.: БХВ – Санкт-Петербург,
1999. – 512 с.
18. Король В.И. Visual Basic 6.0, Visual Basic for Applications
6.0.Язык программирования. Справочник с примерами. – М.: КУДИЦОБРАЗ, 2000. – 448 с.
19. Григорий Титаренко. Visual Basic 6.0: – К.: Изд. группа BHV,
2001.– 416 с.
14
20. Гетц К., Джилберт М. Программирование в Microsoft Office.
Полное руководство по VBA: Пер. с англ. – К.: Изд. группа BHV, 2000. 768 с.
21. Дьяконов В.П., Абраменкова И.В., Круглов В.В. MatLab 5 с
пакетами расширений./ Под ред. В.П. Дьяконова. – М.: Нолидж, 2001. –
880 с.
22. Лазарев Ю.Ф. MatLab 5.х – К.: Изд. группа BHV, 2000. – 384 с.
23. Гайдышев И. Анализ и обработка данных. Специальный
справочник. - СПб.: Питер, 2001. - 752с.
Дополнительная
24. Клинаев Ю.В. Компьютерные моделирование в средах
програмирования VBA и MatLab / Ю.В. Клинаев, А.М. Кац, М.Д.Элькин:
Учеб. пособие. – Саратов:Сарат. Гос. техн. ун-т, 2002-98с..
25. Клинаев Ю.В. Технологии VBA и MatLab в базовом курсе “
Вычислительная математика» / Ю.В.Клинаев , А.М.Кац, Ю.В. Ставский //
Материалы Междунар . конф. “Информационные технологии в
образовании “ . ИТО-2002 , Москва, 4-9 ноября 2002г.- С.11-13.
26. Клинаев Ю.В., Терин Д.В., Шатурная О.С. Научно-методический
аспект применения технологий VBA и математических систем (на примере
VBA-приложения «Многомерные L - числа» для стохастических
методов оптимизации). ИТО- 2003» – ХIII Межд. конф.–выставка
«Информационные технологии в образовании»: Сб.трудов уч. конф. Часть
IV.– М.: Просвещение, 2003.–с.60-61.
27. Клинаев Ю.В., Мурашев Д.А. Аналитическое решение краевой
задачи расчёта электростатических полей в межэлектродном зазоре
биполярного электрода. Сб. «Современные научные и информационные
технологии», СГТУ, 21 октября 2003г.,С.56-59.
28. Волчёнков Н.Г. Учимся программировать: Visual Basic 5.Учебное
пособие. – М.:"Диалог-МИФИ",1998. - 368 с.
29. Стивенс Р. Visual Basic. Готовые алгоритмы. - М.: ДМК Пресс,
2000. - 384с.
30. Худсон Д. Статистика для физиков. - М.:Мир, 1967. - 240с.
31. Рудаков П.И., Сафонов В.И. Обработка сигналов и изображений.
MATLAB 5.X. - М.: Диалог-МИФИ,2000. - 416с.
14. Перечень технических средств обучения
Лабораторные работы предусмотрены в дисплейном компьютерном классе. Студент
должен быть обеспечен индивидуальным рабочим местом, общей площадью не менее 6 м2
оборудованным средствами вычислительной техники с установленным программным
обеспечением: операционной системой Windows, VBA MS Office, MatLab и MatCad (или их
аналогами), включенным в локальную сеть университета и свободным выходом в Интернет.
15
КРАТКИЙ КОНСПЕКТ ЛЕКЦИЙ *
1. РЕШЕНИЕ
УРАВНЕНИЙ
АЛГЕБРАИЧЕСКИХ
И
ТРАНСЦЕНДЕНТНЫХ
В практике вычислений приходится решать уравнения вида f(x) = 0, где
f(x)
определена
на
некотором
конечном
или
бесконечном
интервале (a, b).
Если f(x) - многочлен, то f(x) =0 - алгебраическое уравнение, иначе f(x) = 0
- трансцендентное уравнение.
Всякое значение x* такое, что f(x*)  0, называется корнем, а способ
нахождения этого x* и есть решение уравнения.
Этапы решения:
1. Отделение корней, то есть отыскание достаточно малых областей, в
каждой из которых заключен один и только один корень уравнения.
2. Вычисление корней с заданной точностью.
Комментарий 1.
Для выделения областей, в которых находятся действительные корни
уравнения, можно воспользоваться тем, что если на концах отрезка непрерывная
функция f(x) принимает значение разных знаков, то на этом отрезке f(x) = 0
имеет хотя бы один корень. Для выделения областей, содержащих один и только
один корень можно воспользоваться, например, графическим способом.
Комментарий 2.
Для решения 2-й задачи существуют многочисленные методы: метод
итераций, метод Ньютона, метод половинного деления и т.д.
1.1. МЕТОД ПРОСТОЙ ИТЕРАЦИИ
Считаем, что нам известен отрезок   x   , внутри которого существует
и располагается один и только один из корней уравнения.
Уравнение f(x) =0 представим в виде x =  (x ) , то есть f(x) =x-  (x ) =0. В
общем случае: f ( x)  0  x   ( x) , то есть x   ( x)  f ( x)  0 или  ( x)  x  f ( x) ,
где  = const.
Выберем на отрезке  ,   произвольную точку x0 – так называемое
нулевое приближение, а далее в качестве следующего приближения:
x1= (x 0 ) ,
x2= ( x1 ) ,
…
xn= ( x n1 ) .
* В кратком конспекте использованы некоторые материалы рукописного курса лекций по дисциплине
«Вычислительная математика и основы программирования» к.ф.-м.н. , доцента по кафедре «Высшая математика»,
доцента Глейзера Владимира Вениаминовича, переданные Ю.В.Клинаеву в годы их научного сотрудничества.
16
Процесс последовательного вычисления чисел xn (n=1, 2, …) по
формуле xn= ( x n1 ) называется итерационным процессом, а способ
построения самой формулы xn= ( x n1 ) , где φ удовлетворяет некоторым
услоявия, называется методом итераций.
Если на  ,  , содержащем корень x = x*, для его последовательных
приближений x0, x1,…,xn, вычисляемых по методу итераций, выполнено
условие ' (x 0 )  g  1, то процесс итераций сходится, то есть увеличивая
n, можно получить приближение, сколь угодно мало отличающееся от
истинного значения корня x*.
Процесс итераций следует продолжать до тех пор, пока для 2-х
последовательных приближений xn-1 и xn не будет обеспечено выполнение
неравенства
1 g
| xn  xn  1 |
 , где  - заданная погрешность
g
1 g
Если g  0.5, то
 1 и можно ограничиться | xn  xn  1 |  .
g
Итак, | ' ( x ) |<1. Докажем сходимость процесса итераций.
Действительно: пусть x* - корень, то есть x* = ( x*) - с одной стороны,
xn =  ( xn  1) - схема итераций. Вычтем их второго первое:
xn-x* = ( xn  1)  (x*) .
Преобразуем тождественно:
( xn  1)  ( x*)
xn-x* =
( xn  1  x*) .
xn  1  x *
Используем теорему о среднем значении: если ' ( x ) непрерывна на
()  ()
[ ,  ], то существует точка а, такая, что
 ' (a ) , где а[, ] .

Или xn  x*  ( xn  1)  (x*)  ' (a )( xn  1  x*) . Пусть m = max  ' ( x ) , где
x  {x0, x1, x2, …, xn}. Тогда последовательно мажорируя, получим:
| xn-x* |  m| xn-1-x* |
| xn-1-x* |  m| xn-2-x* |
….
2
| xn--x* |  m | xn-2-x* |
| xn-x* |  mk| xn-k-x* |
Если k = n, то | xn--x* |  mn| x0-x* |.
Если m<1, то с ростом n: xn  x*.
При |  ' ( x ) |>1 |xn – x*| неограниченно растет! Процесс расходится.
Для приведения уравнения к виду x =  (x ) существует следующий
способ:
17
Пусть 0<m1  f’(x)  M1, где m1 = min f’(x) на [  ,  ], M1 = max f’(x) на
[  ,  ] (если f’<0, то вместо уравнения f(x) = 0 рассматриваем уравнение –
f(x) = 0). Заменим уравнение f(x) = 0 эквивалентным ему уравнением
как φ(x), т.е. получаем
x  x   f ( x ) . Обозначим
x   f (x)
Дифференцируя
последнее,
получим
x  (x)  x   f (x) .
( x )  1   f ( x ) . Подберем параметр  таким, чтобы выполнялось
неравенство 0<  ' ( x)  1  f ' ( x)  g  1 , где x [ ,  ] . Если
1
f ' ( x)
 g  1 , так как
M1
1
,
M1
то
f ' ( x)
f ' ( x)
m1
 1 . Тогда g= 1 
 1
 1 , то есть
M1
M1
M1
условие сходимости выполняется.
x1
x1
x0
x*
x0
Рис. 1.1 При  ' ( x)  1 - расходится
x0
x2
x*
x1
Рис.1.2 При  ' ( x)  1 - сходится
18

x0
x*
Рис. 1.3 При  ' ( x)  1 - расходится
Пример: Sin(x) + 0.25 – x = 0. f(x) = Siт(x) + 0.25 – x = 0, так как x =
 (x ) , то x = Sin(x + 0.25. Пусть x0 = 1.2;  = 1 · 10-6 , тогда x* = 1.71230493
Sub Itera ()
Dim fi As Single
Dim x As Single
x = CSng( InputBox (“Задайте начальное приближение”)
metka: fi = sinus (x)
if abs ( x- fi) < = 0.000001 then MsgBox (x, 1, “Решение”) : stop
x = fi
goto metka
end Sub
Function Sinus (t)
Sinus = Sin (t) + 0.25
End Function
x
2
Sinx+0,2
1
1,2
П/2
П
2П
Рис. 1.4
19
1,7123
Рис. 1.5
1.2. УСОВЕРШЕНСТВОВАННЫЙ МЕТОД ПОСЛЕДОВАТЕЛЬНЫЙ
ПРИБЛИЖЕНИЙ
y=f(x)
f(a)
f(xn-1)
45°
Q
f(xn)
(λ-1)∆x
∆x
λ∆x
xn
xn+1
a
Рис.1.6
Метод итераций для хn и xn+1 дает:
f(xn-1) = xn; f(xn) = xn+1.
Откуда получаем для Δх:
∆x = xn-1 – xn = f(xn) - xn,
xn+1 = xn + ∆x, лучше взять xn+1 = xn + d ∆x, d>1, чтобы быстрее попасть
в точку а. Имеем tg  =
20
(  1)x   1
1

 1  , что видно из рис.6
x


Рис.1.7
С другой стороны, по теореме о среднем
f (a)  f ( xn)
 f ' ( ) ,
где xn    a -промежуточная точка .
a  xn
1
1
f'(  ) = 1    
. Вообщем, значение  - неизвестно, но можно

1  f ' ( )
f ( xn)  f ( xn  1) f ( xn)  xn

принять f'(  ) 
.
xn  xn  1
xn  xn  1
tg  =
Геометрический процесс отыскания следующего приближения xn-1
сводится к тому, что проводится хорда через точки (xn, f(xn)) и (xn-1, f(xn-1)) и
определяется точка ее пересечения с прямой y = x.
Сходимость:
1) 0<f'(x)<1  1<  < 
поправки ∆x малы, но 1<  <   увеличит их и сходимость улучшится.
2) -1<f'(x)<0

1
 1
2
поправки велики, а
1
   1 их уменьшит и
2
метод сходится быстрее:
поправки уменьшаются
на коэффициент между
1
и 1.
2
Рис.1.8
21
3) Расходится (в «классическом» методе итераций), если

f'(x)>1

1
0
1  f ' ( )
Так как   0 , то в
усовершенствованном
методе знаки поправок
изменяются
нужным
образом, и граф поиска
меняет направление.
ax n
x n+1
Рис.1.9
4) Расходится (в «классическом») если f'(x)<-1, так как поправки велики. В
1
данном случае 0    - уменьшает поправки.
2
Рис.1.10
Каждая поправка умножается на коэффициент между 0 и
расходится, медленнее. Описанная
принадлежит Векштейну (1958 г).
модификация
1
и процесс
2
метода
итераций
1.3. МЕТОД НЬЮТОНА-РАФСОНА
Уравнение имеет вид F(x) = 0. Запишем уравнение касательной к
кривой F(x) в точке x0 из «геометнии» (рис. 11):
22
F(x 0)  y y  F( x 0)

x0  x
x  x0
y = F(x0) + F'(x0)(x-x0)
tg  = F'(x0) =
Пусть y = 0  0 = F(x0) + F'(x0)( x1- x0), откуда x1 = x0 x2=x1-
F ( x 0)
,
F ' ( x 0)
F ( x1)
,
F ' ( x1)
Продолжая
процесс
построения
последовательности
x 0 ,x 1 ,x 2 ...проводя касательную к графику F(x) в очередной точке xi,
получим
xn = xn-1-
F ( xn  1)
.
F ' ( xn  1)
формула итераций метода Ньютона –Рафсона. Сходимость достигается при
|xn- xn-1 | <
2m1
, где m1 = min |F'(x)| на [  ,  ], M2 = max F''(x) на [  ,  ].
M2
x0 выбирается так, что F(x0) · F''(x0)>0. Здесь ε –наперед заданная
погрешность.
Пример: Рассмотрим построение итерационных формул для
извлечения корней 2 и 3 степеней числа на основе метода Ньютона –
Рафсона.
x N  A  F ( x)  x N  A  0 . x  N A ; xn1  xn 
F ( xn )
; F ' ( x)  Nx n1 ;
'
F ( xn )
xnN  A NxnN  xnN  A ( N  1) xnN  A 1 
A 
xn1  xn 


 ( N  1) xn  N 1 
N 1
N 1
N 1
N
Nxn
Nxn
Nxn
xn 
1
A
N = 2; x   x  
2
x
1
A
N = 3; x  2 x  2 
3
x 
3
x A
A  x3
1 A

Или x  x 

x

 x   2  x .
2
2
3 x
3x
3x

F(x)=
0
M(x 0,F(x 0
y
x
x
x
x x
Рис. 1.11
23
Function func(x) 'объявление функции f(x)
func = Sin(x) - 2 * Log(x) 'функция
End Function 'конец объявления
Function f1(x) 'объявление функции f1(x)
f1 = -Cos(x) - 2 / x '1-ая производная функции
End Function 'конец объявления
Sub Newton_Raзson()
Dim x As Single ' х в рекурсии
Dim e As Single ' точность
Dim n As Integer ' счетчик итераций
Dim xpr As Single ' значение х на предыдущей итерации
x = CSng(InputBox("Введите начальное приближение",
"Решение уравнений")) 'диалог запроса начального приближения
e = CSng(InputBox("Введите точность", "Решение
уравнений")) 'диалог запроса точности измерения
n = 0 'присвоение параметру n значение 0
'------------------------ рекурсивное вычисление --------Do
'начало цикла
n = n + 1
'увеличение значения n на 1
xpr = x
'переприсвоение значений, присваиваем х предид. значение
полученного х
x = x - (func(x) / f1(x))
'вычисление значения х
Loop Until Abs(x - xpr) < e 'условие цикла
c = MsgBox("Корень равен " + CStr(x), 0, "Решение
уравнений")
'вывод сообщения на экран
c = MsgBox("точность достигнута за " + CStr(n) + "
итераций", 0, "Решение уравнений")
'вывод сообщения на экран
'----------------------------- вывод точки корня ---------Worksheets(1).Cells(3, 1).Value = x
'вывод на лист 1 значение искомого х
Worksheets(1).Cells(4, 1).Value = func(x)
'вывод на лист 1 значение функции, соответствующее искомому х
'------------------- построение графика ---------x = x - 1.5
'определяем значение с которого начинаем просчитывать х
For i = 1 To 200
'начало цикла
x = x + 0.03
'шаг, с которым просчитываем х
Worksheets(1).Cells(1, i).Value = x
'вывод на лист 1 значение иксов
Worksheets(1).Cells(2, i).Value = func(x)
'вывод на лист 1 значение функции в заданных иксах
Next i
24
'конец цикла
End Sub 'конец программы
Геометрическое толкование
а)   xn , то есть  равен углу наклона касательной к y = f (x) в точке x  xn .
Обычный метод итераций, когда уравнений приводит к виду x  (x) .
y=f(x)
xn
a
xn+2
xn+1
Рис.1.12
б) метод Ньютона – Рафсона.
y=F(x)
x
a
xn+2
xn+1
xn
Рис.1.13
Уравнение касательной
y  F( x 0 )  F' ( x 0 )( x  x 0 )
Пусть y  0  0  F ( x0 )  F ' ( x0 ) ( x1  x0 )
25
x1  x0 
F ( x0 )
F ' ( x0 )
x 2  x1 
F ( x1 )
F ' ( x1 )
x n  x n 1 
F ( x n 1 )
F ' ( x n 1 )
xn  xn1 
2m1
M2
m1  min F ' ( x) m[ ,  ]
M 2  max F ' ' ( x) m[ ,  ]
x 0 выбирать так, чтобы F ( x0 ) * F ' ' ( x0 )  0
Пример:
F (x) = sin x – x + 0.15 = 0 на отрезке [0.5; 1] с погрешностью   10 4
F ' ( x)  cos x  1
sin x n 1  x n 1  0.15
x n  x n 1 
n  1, 2 , ...
cos x n 1  1
F ( x0 ) * F ' ' ( x0 )  0; F ' ' ( x)   sin x  0 для 0.5  x  1
То необходимо найти x 0 , чтобы F ( x0 )  0
Cos
0,5
Sin
1
Рис.1.14
Это верно при x 0 = 1
m1  min f ' ( x) на [0.5; 1]
F ' ( x)  cos x  1; m1  cos 0.5 1  0.88  1  0.12
m1  1  cos x  0.12
M 2  max F'' (x) m[0.5;1]
F ' ' ( x)   sin x  M 2   sin 1  0.84
Примечание: если
2m1
 10 2 , то можно xn  xn1  10 1 
M2
1) x0  1;   10 3 , т.к.  1  10 1 10 4  10 3 ; n  0
26
2) xn1  xn 
sin xn  xn  0.15
cos xn  1
3) Вычисляем   xn1  xn
4) Проверяем    1 и так далее.
1.4. СЛУЧАЙ ПОЧТИ РАВНЫХ КОРНЕЙ
x 0=x 1
a1
x
x1
a2
Рис.1.15
Производная f ' ( x) близка к 1 при x  a1 или x  a2 и на основании теоремы о
f ( a 2 )  f ( a1 )
a  a2
среднем f ' ( x ) 
. Итерационный
 1 , при этом x  1
a 2  a1
2
процесс осциллирует между x 0 и x1 до бесконечности, не сходясь ни к
одному значению корня. Другими словами – не удаётся отделить эти два
корня, так как они расположены слишком близко один к другому.
Трудности
возникают,
так
как
xn1 
f ( xn )  xn f ( xn )
, где 1  f ' ( xn )  0 .
1  f ' ( xn )
Мейкон(1963) предложил метод, согласно которому сначала находят
значение x, где f ' ( x)  1 , то есть решается уравнение: x  x  f ' ( x)  1 . Пусть
x  x - решение. Эта точка a1  x  a 2 . Положим для начального
a1  a2
a a
. Пусть d  2 1 , т.е. a1  x  d и a2  x  d . Разложим
2
2
f(x)
в
ряд
Тейлора
в
окрестности
точки
x:
f ' ( x)
1
f ( x)  f ( x) 
( x  x)  f ' ' ( x)( x  x) 2  ...
1!
2!
1
Так как f ' ( x)  1 то f ( x)  f ( x)  ( x  x)  f ' ' ( x)( x  x) 2
2!
приближения x 
Пусть x  x  d
f ( x  d )  f ( x)  d 
1
f ' ' ( x)d 2
2
27
Но по условию f ( x  d )  x  d ,
x  d  f ( x)  d 
d
1
f ' ' ( x)d 2
2
2( x  f ( x))
f ' ' ( x)
Если F ( x)  x  f ( x)  0, то F ' ' ( x)   f ' ' ( x) и d 
 2 F ( x)
, так как надо решить
F ' ' ( x)
уравнение F ' ( x)  0
x-d
x
x-d
Рис.1.16
Сначала решаем: x  x  f ' ( x)  1 . Потом ищется: d 
2( x  f ( x))
. Затем
f ' ' ( x)
начальные приближения для a1 и a2 : a 1  x  d ,a 2  x  d . Если f ' ' ( x)  0 , то
это означает что f ' ( x)  1 имеет более чем один корень вблизи x , тогда
сначала решается уравнение f ' ' ( x)  0 , то это означает, что f ' ( x)  1 имеет
более чем один корень x .
1.5. МЕТОД ХОРД
Каждое значение xn+1 находится как точка пересечения оси абсцисс с
хордой, проведенной через точки F(a) и F(b) , причем одна из этих точек
фиксируется — та, для которой F(x)·F''(x)>0.
Если неподвижен конец хорды x = a, то
xn+1 = xn -
F ( xn)
( xn  a)
F ( xn)  F (a)
Если неподвижен конец хорды x = b, то
28
xn+1 = xn -
F ( xn)
(b  xn)
F (b)  F ( x)
Если |xn+1 - xn|>  ,то в первом случае считаем b = xn+1, во втором a = xn+1 и
повторяем вычисление.
При использовании метода хорд полагается, что корень x находится на
отрезке [a,b].
1.6. МЕТОД СЕКУЩИХ
Реализуется алгоритмом, описанным выше, если абсцисса a и b взяты с
одной стороны от корня.
Необходимость вычисления F'(x) и выбора одной из двух формул
затрудняют практическое применение методов хорд и секущих в
отдельности.
x2
a
x0=b
x
x1
Рис.1.17
F(x
)
b0a
1
b1a2
b2a
3
x0
x1 x2 x3
x
Рис.1.18
29
ВАРИАНТЫ ЗАДАНИЙ
Необходимо вычислить приближенное значение корней уравнения с
заданной точностью методом итераций и методом Ньютона-Рафсона.
Необходимо построить график уравнений, отделить корни на
соответствующих отрезках.
Заданная
N
Уравнение
точность
варианта
ε
3
2
1
10-3
x  1.05 x  7 x  5  0
2
10-2
x 3  2.5 x 2  6,5  0
3
10-3
0,47 x 3  0.25 x 2  1.5 x  4,25  0
4
10-2
0,18 x 3  .3 x 2  2,47  0
5
10-3
x 3  0,25 x 2  1,5 x  0,25  0
6
10-2
0,2 x 3  0,25 x 2  2 x  2,5  0
7
10-3
0,4 x 3  0,37 x 2  2 x  2,75  0
8
10-2
0,52 x 3  0,25 x 2  x  4  0
9
10-3
x 3  0,5 x 2  3,75  0
10
10-2
0,28 x 3  0,2 x 2  1,34  0
x  arctg ( x )  1  0
11
10-2
7,5 x  12,7 x  ln( x )
12
10-3
13
10-2
e0, 724x  2,8 x  0
x  ln ( x)  0,5
14
10-3
15
10-2
0,25 x 2  1,5 x  4,25  2 ln( x)  0
16
10-3
e0,156x  1.356 x  0,5  0
17
10-2
0,28 ex  x  1,5  0
0,35 ln( x )  0,8 x  0,35  0
18
10-3
ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ
1. Что называется абсолютной и относительной погрешностями?
2. Какая цифра в числе называется верной? В чем состоит правило
округления чисел?
3. В чем суть метода простой итерации для решения
трансцендентных уравнений?
4. В чем суть метода Ньютона-Рафсона для решения алгебраических
уравнений?
5. Почему в методе простой итерации недостаточно сравнения
| xn  xn  1 |  ?
30
2. МЕТОДЫ ИНТЕРПОЛЯЦИИ
Интерполированием
называют
приблтженное
или
точное
нахождение какой –либо величины по известным отдельным значениям
этой же величины или других величин, связанных с ней. Рассмотрим
таблицу парный значений:
x 1 ,y1 ;x 2 ,y 2 ;...x n ,y n ;
x i ,yi i1,n - индексированные пары (они называются узлами интерполяции)
представляют собой фиксированные пары, причем аргументы строго
упорядочены: x 1  x 2  ...  x n . Будем называть таблицу x i ,y i  табличной
y i  Fx i , i  1..n .
функцией
Алгебраическое
интерполирование
восстанавливает достоверную аналитическую зависимость y  F(x) в виде
так называемого интерполяционного многочлена вида:
k 1
L k 1  a 0   a i x i , где (k-1)- наивысшая степень полинома, описывающая
i 1
эту зависимость.
2.1. МЕТОД ЛАГРАНЖА
Для данных значений x  x 1 , x  x 2 ,..., x  x n x 1  x 2  ...  x n  и
y  y1 , y  y 2 ,..., y  y n найти многочлен F (x) = L (x) степени (n - 1),
F( x 1 )  y1
F( x )  y

2
2
удовлетворяющий условиям 
...
F( x n )  y n
Рассмотрим
конструкцию
следующего
вида:
( x  x 2 )( x  x 3 )...(x  x n )
F1 ( x ) 
y1 . Числитель состоит из произведений
( x 1  x 2 )( x 1  x 3 )...(x 1  x n )
(n - 1) сомножителей, а значит есть многочлен степени (n - 1). Числа
x 2 , x 3 ,..., x n -корни этого многочлена, то есть F1 ( x i )  0 i = 2, 3, …, n,
причём F1 ( x1 )  y1 по построению. Таким образом, график этого
многочлена проходит через точку x 1 , y1  и обращается в ноль во всех
других точках (узлах интерполяции) для i  1 . Аналогично:
( x  x 1 )( x  x 2 )...(x  x i1 )( x  x i1 )...(x  x n )
Fi ( x ) 
yi
( x i  x 1 )( x i  x 2 )...(x i  x i1 )( x i  x i1 )...(x i  x n )
Fi (x i )  y i , Fi x j   0 для i  j .
31
Fn ( x ) 
Сумма
этих
( x  x 1 )...(x  x n 1 )
yn
( x n  x 1 )( x n  x 2 )...(x n  x n 1 )
многочленов
n
F( x )   Fi ( x )  L n 1 ( x )
называется
i 1
интерполяционным полиномом (или интерполяционной формулой)
Лагранжа, который удовлетворяет всем условиям исходной задачи.
Решение единственное: доказательство от «противного». Пусть
существует ещё один полином Ф (x) степени  n  1. Построим R (x) = F
(x) – Ф (x). Он является полиномом степени не выше (n-1), но у него n
корней в точках x 1 ,...x n , чего быть не может - R ( x )  0,  F( x )  Ф( x ) .
Sub Lagrange()
'Программа,
реализующая
метод
"Интерполяционный
полином
Лагранжа"
'n-кол-во узлов интерполяции
'i-счетчик цикла
's-вспомогательный многочлен
'T-интерполяционный многочлен
'a-текущая точка расчета
'k-счетчик цикла
'j-счетчик цикла
'nu-кол-во расчетных точек
Dim x(1 To 100) As Single 'задание типа х
координаты,десятичное число обычной точности, размер 4 байта
Dim y(1 To 100) As Single 'задание типа у
координаты,десятичное число обычной точности, размер 4 байта
Dim n As Integer 'задание типа кол-ва узлов интерполяции,
целочисленный тип, размер 2 байта
Dim i As Integer 'задание типа счетчика цикла, целочисленный
тип, размер 2 байта
Dim s As Single 'задание типа вспомогательного
многочлена,десятичное число обычной точности, размер 4 байта
Dim T As Single 'задание типа интерполяционного
многочлена,десятичное число обычной точности, размер 4 байта
Dim a As String 'задание типа текущей точки расчета,строки
символов, 1 байт на символ
Dim k As Integer 'задание типа счетчика цикла, целочисленный
тип, размер 2 байта
Dim j As Integer 'задание типа счетчика цикла, целочисленный
тип, размер 2 байта
Dim nu As Integer 'задание типа кол-ва расчетных точек,
целочисленный тип, размер 2 байта
nu = 200 'присвоение параметру nu значение 200
a = InputBox("Введите число узлов") 'диаолг запроса числа
узлов
n = CInt(a)
32
For i = 1 To n 'начало цикла
x(i) = Worksheets(1).Cells(1, i).Value 'вывод на лист 1 шапки
таблицы х(i) с i строчки столбца
y(i) = Worksheets(1).Cells(2, i).Value 'вывод на лист 1 шапки
таблицы у(i) со 2 строчки i столбца
Next i 'конец цикла
For j = 0 To nu 'начало цикла
metka1: a = x(1) + ((x(n) - x(1)) / nu) * j 'расчет значения
текущей точки
T = 0 'присвоение значения 0 интерполяционному полиному
For k = 1 To n 'начало цикла
s = 1 'присвоение значения 1 вспомогательному многочлену
For i = 1 To n 'начало цикла
If i = k Then GoTo metka2 'объявление условия
s = s * (a - x(i)) / (x(k) - x(i)) 'расчет вспомогательного
многочлена
metka2: Next i 'конец цикла
T = T + s * y(k) 'расчет интерполяционного многочлена
Worksheets(1).Cells(3, j + 1).Value = CSng(a) 'вывод на лист 1
Worksheets(1).Cells(4, j + 1).Value = T 'вывод на лист 1
значения интерполяционного многочлена
Next k 'конец цикла
Next j 'конец цикла
End Sub 'конец программы
2.2. ВЫЧИСЛИТЕЛЬНАЯ СХЕМА ЭЙТКЕНА
Рассмотрим два частных случая интерполяции по Лагранжу.
1. Табличная функция имеет лишь два узла (так называемая
x1 , y1 ; x 2 , y 2 ; n  2 .
линейная
интерполяция):
В
этом
случае
интерполяционный полином Лагранжа имеет вид:
x  x2
x  x1
x x
x x
x x
L1 ( x ) 
y1 
y2  2
 2
y1  1
y2 
x1  x 2
x 2  x1
x 2  x1 x 2  x1
x 2  x1
y1 x1  x
1
(x 2  x ) y1  ( x1  x ) y 2   1
 P1, 2 ( x ) .
=
x 2  x1
x 2  x1 y 2 x 2  x
Обозначение P1, 2 ( x ) вводится для того, чтобы отразить в символе
конкретные номера узлов интерполяции, используемых при построении
полинома Лагранжа.
Для таблицы x 2 , y 2 ; x 3 , y 3 интерполяционный полином запишется в
виде:
33
x  x3
x  x2
y2 
y3 
x2  x3
x3  x2
y2 x 2  x
x x
x x
1
 3
y2  2
y3 
.
x3  x2
x3  x2
x 3  x 2 y3 x 3  x
2. Табличная функция имеет 3 узла (n = 3) ( x1, y1 , x 2 , y 2 ; x 3 , y 3 ), так
называемая квадратичная интерполяция:
( x  x 2 )( x  x 3 )
P1, 2,3 ( x )  L 2 ( x ) 
y1 
( x1  x 2 )( x1  x 3 )
( x  x1 )( x  x 3 )
( x  x1 )( x  x 2 )

y2 
y3
( x 2  x1 )( x 2  x 3 )
( x 3  x1 )( x 3  x 2 )
Преобразуем второе слагаемое:
( x  x 1 )( x  x 3 )
( x 1  x )( x 3  x )
( x 1  x )( x 3  x )
x  x1
y2  
y2  
y2 3

( x 2  x 1 )( x 2  x 3 )
( x 2  x 1 )( x 3  x 2 )
( x 2  x 1 )( x 3  x 2 ) x 3  x 1
( x  x )( x 3  x ) ( x 3  x 2 )  ( x 2  x1 )
 1
y2 
( x 2  x1 )( x 3  x 2 )
x 3  x1
( x  x )( x 3  x ) ( x 3  x 2 )  ( x 2  x 1 )
 1
y2 
x 3  x1
( x 2  x 1 )( x 3  x 2 )
P2,3 ( x )  L1 ( x ) 
( x 1  x )( x 3  x )  1
1 


 y2 
x 3  x1
 x 2  x1 x 3  x 2 
( x 2  x )( x 3  x )
( x  x )( x 3  x )

y1  1
y2 
( x 2  x1 )( x 3  x1 )
( x 3  x1 )( x 2  x1 )

 ( x  x )( x 3  x )

( x1  x )( x 2  x )
 1
y2 
y3  .
( x 3  x1 )( x 3  x 2 ) 
 ( x 3  x )( x 3  x 2 )
Подставим полученное уравнение в выражение для P1, 2,3 (x) . Собрав
подобные члены и учитывая соотношения для двух и трех узлов получим
1
y1 (x 2  x1 )  y2 (x1  x) x 3  x  1 y2 (x 3  x1 )  y3 (x 2  x) x1  x 
x3  x2
x 3  x1 x 3  x 2
x 3  x1
x x
x x
1
P1, 2 (x)(x 3  x)  P2,3 (x)(x1  x) 
 P1, 2 ( x )  3
 P2,3 ( x ) 1

x 3  x1
x 3  x1 x 3  x1
1 P1, 2 ( x ) x1  x

 P1, 2 , 3 ( x ) .
x 3  x1 P2 , 3 ( x ) x 3  x
выражение, связывающее последующую (квадратичную) интерполяцию с
предыдущей (линейной).
Методом математической индукции доказывается, что формула есть
частный случай рекуррентного соотношения
34
1 P1, 2 ,..., ( k 1) ( x ) x1  x
x k  x1 P2 , 3,..., k ( x ) x k  x
Алгоритм, использующий рекуррентную формулу, называется
вычислительной схемой Эйткена построения полинома Лагранжа L n1 ( x )
степени (n-1) для табличной функции с n узлами интерполяции.
Как любое рекуррентное соотношение вычислительная схема
Эйткена программируется организацией соответствующего циклического
процесса.
P1, 2 , 3,..., k ( x ) 
Sub Aitken () ’ интерполяция по Эйткену
Dim x (1 to 20) As Single
Dim y (1 to 20) As Single
Dim f (1 to 20) As Single
Dim x1 (1 to 20) As Single
Dim y1 (1 to 20) As Single
Dim E As Single
Dim N As Integer
Dim k As Integer
Dim i As Integer
Dim j As Integer
Dim l As Integer
Dim z As Single
Dim a As String
Dim m As Integer
a = InputBox (“Число интерполяционных узлов = ”)
N = CInt (a)
For i = 1 to N
x (i) = WorkSheets (1). Cells (1, i). Value
x1 (i) = x (i)
y (i) = WorkSheets (1). Cells (2, i). Value
y1 (i) = y (i)
next i
a = InputBox (“Значение аргумента x = ”)
z = CSng (a)
5: a = InputBox (“Требуемая точность Е = ”)
E = CSng (a)
f (2) = ((x (2) – z ) * y (1) – (x (1) - z) * y (2)) / (x (2)
– x (1))
if N > 2 then 10
m = MsgBox (f (2), 1, “линейная интерполяция”)
10: for k = 3 to N – 1
for j = 1 to k – 1
for i = j + 1 to k
y (i) = ((z – x (j)) * y (i) – (z – x (i)) * y (j)) / (x (i) –
x (j))
next i
next j
35
f (k) = y (k)
if abs (f (k) – f (k - 1)) < = E then 20
for l = 1 to N: y (l) = y1 (l): x (l) = x1 (l): next l
next k
z = abs (f (N – 1) – f (N - 2))
m = MsgBox (z, 1, “точность не достигнута”)
goto 30
m = MsgBox (k – 1, 2, “точность достигнута при степени = ”)
a = InputBox (“вводить новый аргумент? (да – 1, нет - 0)”)
k = CInt (a)
if k =1 then 5
stop
Схема Эйткена дает возможность регулирования выбора степени
интерполяционного полинома L n1 ( x ) , останавливая вычисления при
минимальном значении n на основании критерия точности, который
представляет собой побочный продукт алгоритма Эйткена. Дело в том, что
разность значений полинома Лагранжа в одном и том же узле и определяет
точность предыдущего шага по сравнению с последующим
(последовательность интерполяций
сходится к полному полиному
Лагранжа (n-1).
Таким образом, задавая требуемую точность мы можем считать ее
достигнутой при выполнении условия
P1, 2,..., k (x)  P1, 2,..., ( k1) (x)  E ,
считая (n-1) шаг исконным приближением точности Е.
2.3. ОПРЕДЕЛЕНИЕ ЯВНОГО ВИДА ИНТЕРПОЛЯЦИОННОГО
МНОГОЧЛЕНА
Единственность построения интерполяционного многочлена L n1 ( x )
на n узлах интерполяции доказана. Можно ли найти его канонический вид,
то есть F(x)  Ln1 (x)  A0  A1x  A 2 x 2  ...  A n1x n1 .
Для табличной функции x i , y i  строим систему уравнений:
F( x 1 )  y1  A 0  A1 x 1  ...  A n 1 x 1n 1  y1
F( x 2 )  y 2  A 0  A1 x 2  ...  A n 1 x n2 1  y 2
...
F( x n )  y n  A 0  A1 x n  ...  A n 1 x nn 1  y n
36
 1 x 1 x 12 ... x 1n 1 
 1 x 2 ... n 1 
x x2 
Матрица коэффициентов V   2 2
называется матрицей
... ... ... ... ... 

2
n 1 
 1 x n x n ... x n 
Вандермонда.
A 0 
A 
Матрица — столбец неизвестных A   1  .
... 


A n 1 
 y1 
y 
Матрица — столбец свободных членов Y   2 
... 
 
yn 
Определитель матрицы Вандермонда det V  0 всегда именно в
случае интерполяционной задачи, так как x i  x j , i, j  1,..., n - нет равных
друг другу ни строк, ни столбцов. Или, найдя обратную матрицу V-1 и
умножив слева обе части уравнение V · A = Y на V-1, получим V-1 V · A =
V-1 Y, т.к. V-1V=1- единичная матрица, то получаем A = Y V-1. Значит,
система всегда имеет единственное решение. В матричном виде V·A = Y
решать можно методом Гаусса.
ВАРИАНТЫ ЗАДАНИЙ
1. Найти приближенное значение функции при заданном значении
аргумента с помощью интерполяционного многочлена Лагранжа.
x
0.43
0.48
0.55
0.62
0.70
0.75
y
1.63597 1.73234 1.87686 2.03345 2.22846 2.35973
№
варианта
1
7
13
x
y
0.02
1.02316
0.08
1.09590
x
0.702
0.512
0.645
0.12
1.14725
0.17
1.21483
0.23
1.30120
0.30
1.40976
37
№
варианта
2
8
14
x
y
0.35
2.73951
0.41
2.30080
0.41
2.57418
0.46
2.32513
0.68
0.80866
0.73
0.89492
38
0.11
9.05421
0.15
6.61659
0.56
1.59502
0.64
1.34310
0.65
1.74926
0.72
1.62098
0.93
1.34087
0.99
1.52368
0.35
2.73951
0.40
2.36522
x
0.526
0.453
0.482
0.60
1.86203
x
0.616
0.478
0.665
0.80
1.02964
№
варианта
5
11
17
x
y
0.51
1.78776
0.52
2.09336
№
варианта
4
10
16
x
y
0.102
0.114
0.125
0.47
1.96864
№
варианта
3
9
15
x
y
x
0.88
1.20966
x
0.896
0.812
0.774
0.21
4.69170
0.29
3.35106
№
варианта
6
12
18
x
0.314
0.235
0.332
2.Найти значение функции в точке предложенной в пункте 1 по
схеме Эйткена с заданной точностью Е=10-3-10-5, зафиксировав степень
достаточного полинома.
3. Вычислить элементы матрицы Вандермонда для полинома
пункта 2.
ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ
1. Может ли метод Лагранжа применяться для экстраполяции?
2. Можно ли располагать узля интерполяции произвольно
прииспользовании метода Лагранжа?
3. Можно ли добавлять новые узлы интерполяции при
использовании метода Лагранжа?
4. Сформулируйте постановку задачи приближения функции по
методу лагранжевой интерполяции.
5. Сформулируйте условие единственности решения задачи
интерполяции.
39
3.МЕТОД НАИМЕНЬШИХ КВАДРАТОВ
3.1.ПОСТАНОВКА ЗАДАЧИ И СПОСОБ РЕШЕНИЯ
Техника численного анализа в науке и инженерном деле часто
применяется для построения графиков экспериментальных данных. Как
правило, экспериментально изучаемая зависимость записывается в виде
некоторой табулированной функции y  f ( x) . То есть в процессе
измерений величины y при различных значениях аргумента x строят
таблицу соответствия (табл. 3.1):
Таблица 3.1
x
x1 x2 … xi … xn
y
y1 y 2 … yi … y n
или же наносят масштабированные значения ординат y в виде отдельных
точек на плоскости XOY :
Рис. 3.1
Так как экспериментальные данные в силу различных причин
содержат в значениях функции
y  f ( x) случайную ошибку
(погрешности измерений
различного рода), то уже само по себе
соответствие между y и x , заданное обоими указанными способами, не
может быть т о ч н ы м . А это приводит к выводу, что если в процессе
получения решения нашей задачи (нахождения зависимости y  f  x  )
требует найти значения y для промежуточных (не внесенных в табл. 1)
значений аргумента x , или же получить аналитическую формулу
y  f  x  на некотором интервале a  x  b , то, вообще говоря,
40
н е ц е л е с о о б р а з н о прибегать к интерполированию, так как оно
очевидным образом выходит за пределы точности в сопоставлении
приближающей и приближаемой функции в каких-либо точках. Повидимому, в данном случае вполне достаточно построить такую
приближающую функцию, которая описывала бы изучаемую зависимость
в некотором с р е д н е м (интуитивно понятном) смысле.
Практика показывает, что приближающие (аппроксимирующие)
функции, построенные по методу среднеквадратичного приближения,
весьма достоверно (в указанном смысле) представляют реальную функцию
f ( x) , выигрывая в скорости вычислительного процесса по сравнению с
интерполяционным многочленом.
В данной лабораторной работе рассматривается один из наиболее
употребительных способов решения подобной задачи – аппроксимация
функции по методу наименьших квадратов.
Решаемая задача может быть поставлена двояко:
а) функциональная зависимость y  f  x  известна заранее из
каких-то теоретических соображений. В этом случае по
результатам эксперимента требуется определить только
некоторые числовые параметры, входящие в теоретическую
формулу.
Например, известно, что величина y пропорциональна некоторой
степени аргумента x , то есть теоретическая формула имеет вид:
(3.1)
y  k xp ,
и требуется определить только два параметра: коэффициент
пропорциональности k и показатель степени p .
Для определения двух неизвестных k и p достаточно, вообще
говоря, двух измерений, в результате которых мы сможем построить
систему двух уравнений с двумя нашими неизвестными. Однако из-за
погрешностей опыта каждая пара экспериментальных значений будет
давать свои, несколько отличающиеся друг от друга, коэффициенты k и
p . Необходимо, таким образом, с в е с т и к м и н и м у м у
заложенную в эксперименте случайную погрешность, повторяя измерения
многократно и подбирая числовые параметры так, чтобы перепад значений
p
теоретической функции (в данном случае y  k x ) от табл. 3.1 был
минимальным по всей совокупности полученных в опыте точек.
б) функциональная зависимость y  f  x  не известна или
достаточно сложна. В этом случае, изучив на графике (рис.3.1)
41
расположение экспериментальных
возможности простую зависимость:
y   ( x) ,
точек,
предлагают
по
(3.2)
такую, что расстояния экспериментальных точек от точек кривой (3.2) при
соответствующих аргументах были в совокупности малы. Гипотетическая
зависимость (3.2) и называется приближающей функцией или
аппроксимацией.
Например, точки на рис. 3.1 в целом мало отличаются от
соответствующих точек некоторой параболы. Поэтому разумно выбрать
приближающую функцию (3.2) в виде параболы:
(3.3)
y  a x2  b x  c ,
подобрав коэффициенты a , b , c так, чтобы суммарная погрешность при
замене табличных значений параболической аппроксимацией была
минимальной.
3.2.ВЫЧИСЛИТЕЛЬНАЯ СХЕМА МЕТОДА
НАИМЕНЬШИХ КВАДРАТОВ
Метод наименьших квадратов, с помощью которого могут быть
успешно решены задачи рассмотренных типов, заключается в следующем.
Рассмотрим сумму квадратов разностей значений yi , даваемых
экспериментом, а значений аппроксимации
y    x, a, b, c,... при
соответствующих аргументах xi :
n
S  a, b, c,...    yi    xi , a, b, c,...  .
2
(3.4)
i 1
Наша цель – подобрать параметры a , b и c так, чтобы эта сумма
имела н а и м е н ь ш е е значение (иначе: сумма квадратов отклонений
вдоль оси OY должна быть минимальной (принцип Лежандра):
S  a, b, c,...  min S .
(3.5)
Таким образом задача свелась к нахождению минимума функции
S  a, b, c,... , который определяется вполне конкретным набором
фиксированных аргументов a , b , c … .
Известные методы минимизации функционала (3.4) приводят к
следующей системе нормальных уравнений:
42
S

 0;
a

S

 0; .
b

S

 0.
c

(3.6)
Выберем в качестве приближающей функции многочлен  m  x  , то
есть совокупности n табличных значений поставим в соответствие
следующий полином степени m  n :
 m  x     x   a0  a1 x  a2 x 2  ...  am x m .
(3.7)
При такой аппроксимации минимизирующие условия (3.6) выполняются,
если коэффициенты a0 , a1 , a2 , ..., am удовлетворяют системе  m  1
линейных уравнений с  m  1 неизвестными.
a0 S0  a1S1  ...  am Sm  T0 
a0 S1  a1S2  ...  am Sm1  T1 

............................................
.
a0 Sk  a1Sk 1  ...  am S mk  Tk 

.............................................

a0 Sm  a1Sm1  ...  am Smm  Tm 
(3.8)
Числовые коэффициенты S k и свободные члены Tk системы (8)
определяются при помощи формул:
n
n
Sk   x ; Tk   yi xik ,
i 1
k
i
(3.8/)
i 1
где значения xi и yi берутся из табл. 3.1 экспериментальных результатов.
Для нахождения коэффициентов a0 , a1 , a2 , ..., am воспользуемся
формулами Крамера, тогда
a0 
0


; a1  1 ; ... am  m ,



(3.9)
43
здесь  
S0
S1 ...
S1
...
S2 ...
... ...
Sm
Sm
Sm1
– определитель системы    0  ;  i –
...
Sm1 ... Smm
определитель, полученный из определителя системы заменой i-го столбца
столбцом из свободных членов ( Tk ).
Рассмотрим
несколько
случаев
определения
функции
y    x, a, b,...  .
Пусть y  ax  b . Функции S  a, b  в этом случае имеет вид:
n
S  a, b     yi   axi  b   .
2
(3.10)
i 1
Это функция с двумя переменными a и b ( xi и yi – заданные числа
(табл. 3.1).
n
S

 2  yi   axi  b   xi  0, 
a

i 1
,
n
S
 2  yi   axi  b    0, 

b
i 1
(3.11)
то есть система уравнений в этом случае принимает вид:

 b xi  0, 

i 1
i 1
i 1
.
n
n

yi  a  xi2  bn  0.


i 1
i 1
n
n
 y x  a x
i i
n
2
i
(3.12)
Получили систему двух линейных уравнений с двумя неизвестными a и
b . Очевидно, что система имеет определенное решение и что при
найденных значениях a и b функция S  a, b  имеет минимум.
Перепишем систему (3.12) в виде (3.8):
a0 S0  a1S1  T0 
,
a0 S1  a1S2  T1 
где в соответствии с формулами (3.8/):
44
(3.13)
n
n
n
n
i 1
i 1
S0  n, S1   xi , S 2   x , T0   yi , T1   xi yi .
i 1
i 1
2
i
Пусть за аппроксимирующую функцию взят многочлен второй степени:
y  ax2  bx  c .
(3.14)
В этом случае выражение (3.4) имеет вид:
S  a, b, c     yi   axi2  bxi  xi  .
n
2
(3.15)
i 1
Это функция трех переменных a , b , c . Система уравнений (3.6)
принимает вид:
S n 

   yi   axi2  bxi  c   xi2  0, 
 a i1

n
S

   yi   axi2  bxi  c   xi  0, 
 b i1

n

S
   yi   axi2  bxi  c    0, 
 c i1

(3.16)
или в развернутом виде:

 a  x  b x  c  xi2  0, 
i 1
i 1
i 1
i 1

n
n
n
n

yi xi  a  xi3  b xi2  c  xi  0.  .

i 1
i 1
i 1
i 1

n
n
n

2
y

a
x

b
x

cn

0.




i
i
i
i 1
i 1
i 1

n
y x
2
i i
n
n
4
i
n
3
i
(3.17)
Получаем систему линейных уравнений для определения
неизвестных a , b , c . Из характера задачи следует, что система имеет
определенное решение и что при полученных значениях функция
S  a, b, c  имеет м и н и м у м .
45
Перепишем систему (3.17) в виде (3.8)
a0 S0  a1S1  a2 S 2  T0 

a0 S1  a1S2  a2 S3  T1  ,
a0 S2  a1S3  a2 S4  T2 
(3.18)
где в соответствии с формулами (3.8/):
n
n
n
S3   x , S4   x , T2   yi xi2 .
3
i
i 1
i 1
4
i
i 1
Обратим внимание, что параметры
S0 , S1 , S2 , T0 , T1
переходят в систему (3.18) из аппроксимации более низкого порядка (3.13).
В этом существенное вычислительное преимущество метода наименьших
квадратов – при построении аппроксимаций более высокого порядка
используются результаты предыдущих аппроксимаций.
Оценка степени связи при аппроксимации данных линейной
зависимостью производится на основе подсчета коэффициента корреляции
R . В случае, если связь между y и x может быть представлена прямой
линией, коэффициент корреляции R  1 , если связи между переменными
вообще не существует, то R  0 .
Коэффициент парной корреляции подсчитывается по формуле:
n
R
n
n
i 1
i 1
n yi xi   xi  yi
i 1
1
 n 2  n 2  2  n 2  n 2 
 n xi    xi     n yi    yi  
 i 1    i 1
 i 1  
 i 1
1
2
(3.19)
Принято считать:
при R  0.3 – слабая связь,
при R  0.3  0.7 – средняя связь,
при R  0.7 – сильная связь,
при R  0.9 – весьма сильная связь.
Приведем
таблицу
наиболее
употребимых
функций
соответствующих им систем нормальных уравнений (табл. 3.2).
46
и
Таблица 3.2
№
Функция
Нормальные уравнения
Решения уравнений
y x   x   xy 
a 
n x    x 
n  xy    x  y
b 
n x    x 
2
1
y  a  bx
an  b x   y
a  x  b x 2   xy
2
2
2
2
lg y  x   x   x lg y 
a
n x    x 
n  x lg y    x  lg y
b 
n x    x 
2
2
lg y  a  bx
an  b  x   lg y
2
a  x  b  x   ( x lg y )
2
2
2
2
y (lg x)   (lg x)  y lg x 
a 
n (lg x)    lg x 
n  y lg x    y  lg x
b 
n (lg x)    lg x 
2
3
y  a  b lg x
an  b lg x   y
a  lg x  b (lg x)2   ( ylgx)
2
2
2
2
lg y  (lg x)   (lg x)  lg y lg x 
a
n (lg x)    lg x 
n  lg y lg x    lg y  lg x
b 
n (lg x)    lg x 
2
4
lg y  a  b lg x
an  b lg x   lg y
a  lg x  b (lg x)2   (lg y lg x)
2
2
2
2
47
Продолжение табл. 3.2
№
Функция
5
y  ab x или
lg y  lg a  x lg b
6
y  a  bc  cx 2
Нормальные уравнения
n lg a  lg b lg x   lg y
lg a  x  lg b x   (lg y lg x)
2
a  x 2  b x3  c  x 4   ( x 2 y )
y  a  bx  c x
 lg y x 2  x  lg y lg x  


  
a  exp  

2
2
n
x

x


  
 n  lg y lg x   x lg y 

  
b  exp  
2
n x 2    x 


an  b x  c  x 2   y
a  x  b x 2  c  x 3   xy
7
Решения уравнений
a A ;b B ;cC
D
D
D
an  b x  c  x   y
a  x  b x 2  c  x 3   xy
aE
H
;bF
H
, cG
H
a  x  b x  c  x   xy
3
8
y  ab x или
lg y  lg a  x lg b
 x 2 lg c
48
n lg a  lg b x  lg c  x 2   lg y
lg a  x  lg b x 2  lg c  x 3    x lg y 
lg a  x 2  lg b x 3  lg c  x 4   ( x 2 lg y )
I
J
K
a ;b ;c
L
L
L
Примечание к табл. 3.2.
A   x x3  xy    x 
B  n x
3

2
x 3  xy   xy   x 2    y  x 3  x 3   y  x x 2 ;
 xy   x 
2
2
xy  n x xy   x
2
 x  xy   x  x
xy   x
2
3
x   y  x  ;
 y
2
C   x x  xy   x3  y  x  n x3  xy   y  x  x 2   xy   x   n xy  x 2 ;
2
D   x  x  x 3   x 3  x 2  x  n x 3  x 3    x 2 
E   x x3  xy    x 
2
2
x    x   n x  x 2 ;

3
 xy   x  x3  xy   x  xy  x 2   y
 
x3
2
F  n x3  xy  n x  xy   x 3  y  x   x  x  xy   y   x    xy
2
  y  x x 2 ;
 x 
2
;
G   x x  xy   x3  y  x n x3  xy   y  x  x 2   xy   x   n xy  x ;
2
H  2 x  x  x 3  n

  x   x    x
2
x3
2

2
3
2
 n x  x ;
2
 
  x  x lg y  x   x  x  lg y  n   x   x lg y  n x lg y  x
 ;
J   x lg y   x 
  x lg y   x  ;
K   x  x lg y    x   x lg y  n x  x lg y  n x   x lg y   x  x x lg y    x   lg y ;
L  n x  x  n   x     x   x  2   x   x  x    x  ;
I   x x3  x lg y   x x lg y  x   x
2
2 2
4
2
2
2
2
3
2
4
3 2
2
2
x
3
 x lg y 
x
3
3
3
2
4
2 2
2
3
2
 x lg y   lg y x
2
2
2
2
2
 x   lg y
4
x
4
3 2
4
2 2
2 3
49
3.3.ПОЛУЧЕНИЕ ТАБЛИЦЫ ЭКСПЕРИМЕНТАЛЬНЫХ
ДАННЫХ
Для получения таблицы экспериментальных данных воспользуемся
формулой:
yi  Axi2  Bxi  C  0.12sin  K  xi  1 ,
(3.20)
где i – 0, 1, 2, 3, 4, 5, 6, 7, 8;
Шаг аргумента  xi1  xi   0.250 в интервале 0.000  x  2.000 (то
есть x0  0.000, x1  0.250, x2  0.500, и так далее;
xend  xstart
i
h
A  0.35  0.05sin ( n),
xi  xstart 
(3.21)
B  0.45  0.05sin ( m),
C  0.50  0.30sin ( n),
(3.22)
K  10  m,
где n – порядковый номер фамилии студента в списке учебной группы;
m – однозначный номер соответствующей учебной группы (например,
для группы ПВС–21 m  1, для ПВС–22 m  2 , для ПВС– 23 m  3 и
т.д.).
Значения yi следует заносить в табл. 3 с точностью до 10-3.
3.4. МЕТОДИЧЕСКИЕ УКАЗАНИЯ ПО ВЫПОЛНЕНИЮ ЗАДАНИЯ
1. Зададим разбиение оси ОХ: xstart  0.000 , xend  2.000 , h  8 –
число шагов разбиения, рассчитываем координаты х по формуле (3.21).
2. Пусть n  31 , m  5 . Рассчитаем коэффициенты A, B, C, K по
формулам (3.22).
3. После создания массива начальных значений, координат х и
коэффициентов A, B, C, K формируем значения y по формуле (3.20).
4. Откроем Microsoft Excel. Выполните Сервис→Макрос→Редактор
Visual Basic (Alt+F11).
Выполните Insert→Procedure. Введите имя
процедуры в поле Name – Table, выберите Type –Sub и Scope – Public,
нажмите ОК. Введите предлагаемый ниже код процедуры формирования
таблицы экспериментальных данных.
Public Sub Table()
50
Dim x() As Single
Dim y() As Single
' Процедура формирования таблицы экспериментальных данных
' Ввод начальных данных
n = CInt(InputBox("Введите порядковый номер фамилии студента в
списке учебной группы"))
m = CInt(InputBox("Введите однозначный номер соответствующей
учебной группы (например, для группы ПВС-21
m=1, для ПВС-22
m=2, для ПВС-23 m=3 и т.д.)"))
X_start = CSng(InputBox("Зададим разбиение оси ОХ. Начало
отсчета - Xstart"))
X_end = CSng(InputBox("Зададим разбиение оси ОХ. Окончание Xend"))
h = CSng(InputBox("Зададим число шагов разбиения отрезка
[Xstart - Xend]"))
ReDim x(1 To h + 1) As Single
ReDim y(1 To h + 1) As Single
'Расчет значений x(i)
For i = 1 To h + 1
x(i) = X_start + ((X_end - X_start) / h) * (i - 1)
' Сохраняем значения x(i) на рабочий лист 1, в ячейки А1-А9
Worksheets(1).Cells(i, 1).Value = x(i)
Next i
'Расчет коэффициентов A, B, C, K
A = 0.35 + 0.05 * Sin(n)
B = 0.45 + 0.05 * Sin(m)
C = 0.55 + 0.05 * Sin(n)
K = 10 + m
'Расчет таблицы экспериментальных данных
For i = 1 To h + 1
y(i) = A * x(i) ^ 2 + B * x(i) + C + 0.12 * Sin(K * (x(i) +
1))' Сохраняем значения y(i) на рабочий лист 1, в ячейки B1B9
Worksheets(1).Cells(i, 2).Value = y(i)
Next i
End Sub
Таблица 3.3
x
yэксперимент
0.000
0.608
0.250
0.639
0.500
0.755
0.750
1.125
1.000
1.143
1.250
1.634
1.500
1.851
1.750
2.196
2.000
2.755
51
Для
данных
начальных
значений
получили
таблицу
экспериментальных данных (табл.3.2).
5. Построим график экспериментальных данных. Перейдем на
рабочий лист 1 Microsoft Excel. Щелкните левой кнопкой мыши в ячейке
А1, не отпуская кнопку переместите курсор мыши до ячейки В9 –
произойдет выделение таблицы экспериментальных данных. Выполните
Вставка → Диаграмма. Откроется Мастер диаграмм. В окне мастера
диаграмм выберите закладку – Стандартные, Тип – точечная, Вид – только
точки. Нажмите кнопку Далее.
В окне Источник данных диаграммы в закладке Диапазон данных
должно быть следующее: в Диапазон: =Лист1!$A$1:$B$9, Ряды в –
столбцах. Нажмите кнопку Далее.
В окне Параметры диаграммы в закладке Заголовки впишите
Название диаграммы – Экспериментальные данные, Ось Х (категорий) – х,
Ось Y (значений) – y, в закладке Оси поставьте галочки около оси X и оси
Y, в закладках Линии сетки, Легенда и Подписи данных уберите все
галочки. Нажмите кнопку Далее.
В окне Размещение диаграмм выберите Поместить диаграмму на
имеющемся листе. Нажмите кнопку Готово.
На имеющемся рабочем листе 1 появится точечная диаграмма
экспериментальных данных (рис.3.2).
y
3
2.5
2
1.5
1
0.5
x
0
0
0.5
1
1.5
2
Рис.3.2
3.5. ФОРМАТИРОВАНИЕ ДИАГРАММЫ
Щелкнем правой кнопкой мыши по названию оси Y, появится
диалоговое окно, щелкнем по Формат названия оси, выберем закладку
52
Выравнивание: по горизонтали – по центру, по вертикали – по центру.
Перетащим название оси Y в левый верхний угол диаграммы около
последнего значения координаты y. Перенесем название оси X в нижний
правый угол диаграммы около последнего значения координаты х.
Щелкнем правой кнопкой мыши по центральному серому полю
диаграммы – Область построения диаграмм. Появится диалоговое окно.
Выберите Формат области построения. В закладке Вид выберем:
Рамка невидимая, Заливка – прозрачная. Нажмите ОК.
Щелкнем правой кнопкой мыши по любой экспериментальной точке
на диаграмме. Появится диалоговое окно. Выберите Формат рядов
данных. В закладке Вид выберите: Линия – отсутствует, Маркер –
обычный, тип маркера – треугольник, цвет – черный, фон – белый,
размер 7 пт. Нажмите кнопку ОК.
Щелкнем правой кнопкой мыши по линии оси X. Появится
диалоговое окно. Выберите Формат оси. Выберите закладку Вид: Ось –
другая, Толщина – вторая снизу в раскрывающемся списке. Выберите
закладку Шкала, установите минимальное значение, равное 0,
максимальное – 2, цена основных делений – 0.5. Нажмите кнопку ОК.
Щелкнем правой кнопкой мыши по линии оси Y. Появится
диалоговое окно. Выберите Формат оси. Выберите закладку Вид: Ось –
другая, Толщина – вторая снизу в раскрывающемся списке. Выберите
закладку Шкала, установите минимальное значение, равное 0,
максимальное – 3, цена основных делений – 1. Нажмите кнопку ОК.
Щелкнем правой кнопкой мыши по линии ограничивающую область
диаграммы. На линии появятся черные квадратные маркеры, потянув за
которые можно изменить размер диаграммы. Также появится диалоговое
окно в котором выберите Формат области диаграммы. В закладке Вид
установите: Рамка – невидимая, Заливка – прозрачная. В закладке Шрифт
уберите галку Автомасштабирование. Нажмите ОК.
6. На основании полученной таблицы экспериментальных данных
найдем прямую по формуле y  a0  a1 x , имеющую наименьшее среднее
квадратичное отклонение от табличных значений, для этого составим
систему (3.8). В случае линейной аппроксимации это система двух
уравнений с двумя неизвестными – (3.13). Решение системы (3.13)
сводится к расчету коэффициентов S k и свободных членов Tk .
7. Рассчитаем коэффициенты S k и свободные члены Tk :
n
n
n
n
i 1
i 1
S0  n, S1   xi , S 2   x , T0   yi , T1   xi yi .
i 1
i 1
2
i
После расчета коэффициентов воспользовавшись формулами (3.9)
или табл. 3.2, найдем коэффициенты искомой прямой:
53
a0 
a1 
T0 S2  S1T1
2
;
2
.
S0 S2   S1 
S0T1  S1T0
S0 S2   S1 
На основании полученных коэффициентов прямой рассчитаем
теоретические значения y  a0  a1 x , причем значения х возьмем прежние.
Сформируем таблицу теоретических данных. Отобразим их на диаграмме.
Рассчитаем линейное суммарное среднеквадратичное отклонение по
формуле (3.4).
Рассчитаем коэффициент корреляции (3.19).
'____________________линия
For i = 1 To h + 1
' Считывание таблицы экспериментальных данных
x(i) = Worksheets(1).Cells(i, 1).Value
y(i) = Worksheets(1).Cells(i, 2).Value
'Расчет коэффициентов S и свободных членов Т
S0 = S0 + 1
S1 = S1 + x(i)
S2 = S2 + x(i) * x(i)
T0 = T0 + y(i)
T0_11 = T0_11 + y(i) * y(i)
T1 = T1 + x(i) * y(i)
Next i
' Расчет коэффициентов прямой аппроксимации
a0 = -1 / (-S1 ^ 2 + S2 * S0) * (-S2 * T0 + S1 * T1)
a1 = (-S1 * T0 + T1 * S0) / (-S1 ^ 2 + S2 * S0)
'Расчет коэффициента корреляции
R1 = (S0 * T1 - S1 * T0)
R2 = Sqr((S0 * S2 - S1 * S1) * (S0 * T0_11 - T0 * T0))
R = R1 / R2
For i = 1 To h + 1
' Расчет таблицы теоретических данных
y1(i) = a0 + a1 * x(i)
' Расчет среднеквадратичной ошибки линейной аппроксимации
S_line = S_line + (y(i) - y1(i)) ^ 2
Next i
Вывод
всех
полученных
данных
осуществляем
на
рабочий лист 3.2 (табл 3.4).
На основе полученных данных получаем коэффициенты линейной
аппроксимации: a0  0.3476 , a1  1.0641 .
Таким
образом,
уравнение
искомой
прямой
(линейная
аппроксимация табличной функции) есть y  0.3476  1.0641x . На основе
этого уравнения получаем таблицу теоретических данных линейной
54
аппроксимации.
R  0.9723 .
Для прямой Sпрям  0.2453 коэффициент корреляции
Таблица 3.4
i
S0
S1
S2
T0
T1
Sпрям
1
2
3
4
5
6
7
8
9
∑
1
1
1
1
1
1
1
1
1
9
0
0.25
0.5
0.75
1
1.25
1.5
1.75
2
9
0
0.0625
0.25
0.5625
1
1.5625
2.25
3.0625
4
12.75
0.607833
0.638997
0.754814
1.124718
1.143086
1.634384
1.851189
2.195643
2.755207
12.70587
0
0.159749
0.377407
0.843539
1.143086
2.04298
2.776783
3.842376
5.510413
16.69633
0.0677
0.000641
0.015597
0.000442
0.072187
0.001884
0.008581
0.000202
0.07802
0.245255
8. Найдем теперь аппроксимирующую кривую более высокого
2
порядка – параболу y  a0  a1 x  a2 x .
В случае параболической аппроксимации это система трех
уравнений с тремя неизвестными – (3.18). Решение системы (3.18)
сводится к расчету коэффициентов S k и свободных членов Tk .
9. Рассчитаем коэффициенты S k и свободные члены Tk :
n
n
n
S3   x , S4   x , T2   yi xi2 .
i 1
3
i
i 1
4
i
i 1
После расчета коэффициентов, воспользовавшись формулами (3.9)
или таблицей 3.2, найдем коэффициенты искомой параболы:
(-S22 T2 -S1S4 T1 +S1S3T2 +S3S2 T1 +S4S2 T0 -S32 T0 )
;
a0  
(S4S12 +S32 -S4S2S0 -2S1S3S2 +S32S0 )
(-S0S4 T1 +S0S3T2 -S2S3T0 -S2 T2S1 +S22T1 +T0S4S1 )
;
a1 
(S4S12 +S32 -S4S2S0 -2S1S3S2 +S32S0 )
a2  
(S3T0S1 -S3T1S0 -T2S12 +S2 T1S1 -S22T0 +S2S0 T2 )
.
(S4S12 +S32 -S4S2S0 -2S1S3S2 +S32S0 )
55
На основании полученных коэффициентов параболы рассчитаем
2
теоретические значения y  a0  a1 x  a2 x причем, значения х возьмем
прежние. Сформируем таблицу теоретических данных (табл. 3.5).
Отобразим их на диаграмме (рис. 3.3).
Таблица 3.5
x
yтеория
0
0.25
0.5
0.75
1
1.25
1.5
1.75
2
0.34764
0.613671
0.879702
1.145732
1.411763
1.677794
1.943825
2.209856
2.475887
y
3
2.5
2
1.5
1
Теория
Эксперимент
0.5
x
0
0
0.5
1
1.5
2
Рис. 3.3
Рассчитаем параболическое суммарное квадратичное отклонение по
формуле (3.4).
'_____________________ парабола
For i = 1 To h + 1
' Считывание таблицы экспериментальных данных
x(i) = Worksheets(1).Cells(i, 1).Value
y(i) = Worksheets(1).Cells(i, 2).Value
' Расчет коэффициентов S и свободных членов T
S0 = S0 + 1
S1 = S1 + x(i)
56
S2 = S2 + x(i) * x(i)
S3 = S3 + x(i) * x(i) * x(i)
S4 = S4 + x(i) * x(i) * x(i) * x(i)
T0 = T0 + y(i)
T0_11 = T0_11 + y(i) * y(i)
T1 = T1 + x(i) * y(i)
T2 = T2 + y(i) * x(i) * x(i)
Next i
' Расчет коэффициентов параболической аппроксимации
а0 = -(-S2 ^ 2 * T2 - S1 * S4 * T1 + S1 * S3 * T2 + S3 * S2 *
T1 + S4 * S2 * T0 - S3 ^ 2 * T0) / (S4 * S1 ^ 2 + S2 ^ 3 - S4
* S2 * S0 - 2 * S1 * S3 * S2 + S3 ^ 2 * S0)
а1 = (-S0 * S4 * T1 + S0 * S3 * T2 - S2 * S3 * T0 - S2 * T2 *
S1 + S2 ^ 2 * T1 + T0 * S4 * S1) / (S4 * S1 ^ 2 + S2 ^ 3 - S4
* S2 * S0 - 2 * S1 * S3 * S2 + S3 ^ 2 * S0)
а2 = -(S3 * T0 * S1 - S3 * T1 * S0 - T2 * S1 ^ 2 + S2 * T1 *
S1 - S2 ^ 2 * T0 + S2 * S0 * T2) / (S4 * S1 ^ 2 + S2 ^ 3 - S4
* S2 * S0 - 2 * S1 * S3 * S2 + S3 ^ 2 * S0)
For i = 1 To h + 1
'Расчет таблицы теоретических данных
y2(i) = b0 + b1 * x(i) + b2 * x(i) * x(i)
'Расчет
параболического
суммарного
квадратичного
отклонения
S_parab = S_parab + (y(i) - y2(i)) ^ 2
Next i
Вывод всех полученных данных осуществляем на рабочий лист 3.
На основе полученных данных получаем коэффициенты параболической
аппроксимации: a0  0.5839 , a1  0.254 , a2  0.4051 .
Таким образом, уравнение искомой параболы (параболической
аппроксимация табличной функции) есть
y  0.5839  0.254x  0.4051x 2 .
На основе этого уравнения получаем таблицу теоретических данных
параболической аппроксимации.
Для параболы Sпараобола  0.0478 .
57
y
3.000
2.500
2.000
1.500
1.000
Эксперимент
Линия
0.500
Парабола
x
0.000
0.000
0.500
1.000
1.500
2.000
Рис. 3.4
10. Вывод итоговых данных осуществляем на рабочий
лист 4 – таблицы: экспериментальных данных, линейной и параболической
аппроксимаций, линейное и параболическое суммарное квадратичное
отклонения, общую диаграмму (Рис. 3.4) .
Таблица 3.6
i
S0
1
2
3
4
5
6
7
8
9
∑
1
1
1
1
1
1
1
1
1
9
S1
S2
S3
S4
T0
T1
T2
Sпарабола
0
0.25
0.5
0.75
1
1.25
1.5
1.75
2
9
0
0.0625
0.25
0.5625
1
1.5625
2.25
3.0625
4
12.75
0
0.015625
0.125
0.421875
1
1.953125
3.375
5.359375
8
20.25
0
0.003906
0.0625
0.316406
1
2.441406
5.0625
9.378906
16
34.26563
0.607833
0.638997
0.754814
1.124718
1.143086
1.634384
1.851189
2.195643
2.755207
12.70587
0
0.159749
0.377407
0.843539
1.143086
2.04298
2.776783
3.842376
5.510413
16.69633
0
0.039937
0.188703
0.632654
1.143086
2.553725
4.165174
6.724158
11.02083
26.46826
0.0005711
0.0011389
0.0032919
0.014994
0.0099792
0.0100108
0.0006312
0.0053708
0.0018512
0.0478391
Таким образом,
58
Sпараобола  0.0478 ,
в тоже время для прямой
Sпрям  0.2453 .
То есть
1
Sпарабола  S прямая .
5
Сравнение прямой, параболы и экспериментальных точек
подтверждает вывод, что в данном случае парабола заметно лучше
аппроксимирует
функциональную
зависимость,
полученную
в
эксперименте, чем прямая.
ВАРИАНТЫ ЗАДАНИЙ
1. Сформировать таблицу экспериментальных данных. Построить
диаграмму функции y  f ( x) , полученную в результате «эксперимента». В
отчете отобразить блок-схему получения «экспериментальных» значений.
2. Найти наилучшую линейную аппроксимацию:
y  a0  a1 x
для табулированной функции y  f ( x) , составив и решив систему
уравнений для коэффициентов a0 и a1 . Найти суммарную ошибку S прям и
коэффициент корреляции R. Составить блок-схему вычислительного
процесса.
3. Найти наилучшую параболическую аппроксимацию
y  a0  a1x  a2 x 2
Для табулированной функции y  f ( x) , составив и решив систему
уравнений для коэффициентов a0 , a1 и a2 . Найти суммарную ошибку
Sпарабола . Составить блок – схему вычислительного процесса.
4. Построить диаграммы полученных аппроксимаций на основе
новых таблиц теоретических данных в том же диапазоне х, но с более
мелким шагом (количество точек выбрать не менее 300, чтобы точки на
диаграмме слились в линию и параболу) и сравнить суммарные ошибки.
Составить блок-схему вычислительного процесса.
ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ
1. В каких случаях приближение функции методами интерполяции
дает более достоверный результат по сравнению с методом наименьших
квадратов?
2. Играет ли существенную роль при аппроксимации выбор шага для
построения таблицы экспериментальных значений?
59
3. Можно ли применить описанный метод для аппроксимации
периодических или почти периодических функций?
4. Какая величина характеризует отклонение приближающей
функции от экспериментальных точек в методе наименьших квадратов?
5. Может ли при увеличении порядка аппроксимирующего
многочлена увеличиваться суммарная квадратичная ошибка?
60
4. ПОЛИНОМ ЧЕБЫШЕВА
Применяется в уникальном процессе, называемом экономизацией,
для преобразования разложения функции в быстросходящийся полином.
Свойства полиномов Чебышева
1. Они являются ортогональными с соответствующей весовой
функцией, определенной либо на непрерывном интервале, либо на
ряде дискретных интервалов.
2. Они равно пульсирующие функции, то есть изменяются между
равными максимальными и минимальными значениями.
3. Нули полиномов Чебышева чередуются один за другим.
4. Все
полиномы
Чебышева
удовлетворяют
трехчленным
рекуррентным соотношением.
5. Они легко вычисляются и обращаются в форму степенного ряда на
основании исходной формы.
Все эти свойства образуют аппроксимирующую функцию минимакс (то
есть в процессе аппроксимации минимизируется максимальная ошибка)
В МНК минимизируется сумма квадратов ошибок. В МНК максимальная
ошибка может принимать достаточно большое значение. В аппроксимации
Чебышева средняя ошибка часто может принимать большое значение, а
минимизируется максимальная ошибка.
Определение полиномов Чебышева
T0(x) = 1
Tn(x) = Cos(n  )
Cos  = x
Полиномы Чебышева ортогональны, так как косинус является
ортогональной функцией и Cos(n  ) является полиномом степени n
величин  .
Cos(n+1)  + Cos(n-1)  = 2Cos  Cosn 
Tn+1 + Tn-1 = 2xTn
Tn+1 = 2xTn - Tn-1
Так как T0 = 1; T1= x, то T2 = 2xT1 – T0 = 2x2 – 1
T3 = 2xT2 - T1 = 2x(2x2 – 1) – x = 4x3 – 3x
То есть T0 = 1
T1 = x
T2 = 2x2 – 1
T3 = 4x3 – 3x
T4 = 8x4 – 8x2 +1
T5 = 16x5 – 20x3 +5x
61
T6 = 32x6 – 48x4 + 18x2 -1
T7 = 64x7 – 111x5 +56x3 -7x
T8 = 128x8 – 256x6 +160x4 – 32x2 +1
Можно образовать таблицу степеней x в выражения полиномов Чебышева,
проводя решение относительно степеней x из этой таблицы:
1 = T0
x = T1
x2 = (T0 + T2)/2
x3 = (3T1 + T3)/4
x4 = (3T0 + 4T2 + T4)/8
x5 = (10T1 + 5T3 + T5)/16
x6 = (10T0 + 15T2 + 6T4 + T6)/32
x7 = (35T1 + 21T3 + 7T5 + T7)/64
x8 = (35T0 + 56T2 + 28T4 + 8T6 + T8)/128
Важное свойство полиномов Чебышева заключается в том, что во всех
полиномах степени n имеется коэффициент и при делении на 2n-1
полиномы Чебышева обладают наименьшим экстремальным значением в
интервале -1  x  +1
Не существует других полиномов степени n, эти коэффициенты равны 1 и
которые обладают меньшим экстремальным значением, чем
max
Tn ( x )
1
 n 1 в интервале |x|  1
n 1
2
2
Это является важным положением, так как утверждает, что если
аппроксимировать функцию на интервале |x|  1 при помощи полиномов
Чебышева, ограниченных n членами, максимальной ошибкой приближения
будет 1/2n-1
Разложим функцию f(x) в ряд с помощью полиномов Чебышева:
n
f(x) =
 a T ( x)
n n
n 0
Метод аппроксимации f(x) с помощью полиномов Чебышева является
простым в употреблении и обладает умеренной сходимостью любого
ограниченного разложения функции f(x) в ряд.
Так как f(x) =
m
a x
n
n
, то
n 0
f(x) = a0 + x(a1 +x(a2 + … + x(am-1 + am x))) …) — этот ряд можно привести
к ряду полиномов Чебышева, начиная от внутренних скобок, в виде
am-1 + am x = am-1 T0 + am T1
Можно умножить n скобочное гнездо:
a0T0 + a1T1 + … +anTn
на x и добавить к нему следующий коэффициент степени nm-n-1, чтобы
получить (n+1) гнездо.
62
Тогда применяя xT0 = T1; xTn = (Tn+1 + Tn-1)/2 приводим степенной ряд в n
скобках, осуществляя преобразование в (n+1) степенной ряд полиномов
Чебышева следующим образом:
anTn an  1Tn  1
a1  a 3
a2
a1

 ...  (
)T 2  (a 0  )T 1  (am  n  1  )T 0
2
2
2
2
2
Например:
N
fN(x) =
a x
N
n
n 0
f0 = a0
f1 = a0 + a1 x
a0 T0
a0 T0 + a1 T1
f2 = a0 + a1 x + a2 x2
(a0 +
f3 = a0 + a1 x + a2 x2+a3 x3
a2
a2
)T0 + a1 T1 + ( )T2
2
2
a2
3a 3
a2
a3
(a0 + )T0 +( a1+ )T1 + ( )T2+( )T2
2
2
4
4
f4 = a0 + a1 x + a2 x2+a3 x3 + a4 x4
a 2 3a 3
3a 3
1
a3
a4
+
)T0 +(a1+ )T1a1  (a 2  a 4)T 2  ( )T 3  ( )T 4
2
2
4
8
8
4
a 2 3a 3
f4 = a0 + a1 x + a2 x2+a3 x3 + a4 x4 +a5 x5 (a0 + +
)T0
2
8
3a 3 10a 5
a2  a4
a 3 5a 5
a4
a5
+(a1+ +
)T1+(
)T2+ ( 
)T3+( )T4+( )T5
16
2
4 16
8
16
4
(a0 +
и т.д.
То есть можно вместо
f(x) = a0 + a1 x + a2 x2 +…+am xm
брать ряд f(x) = b0 + b1 T1 + b2 T2 +…+bm Tm
Для того, чтобы этот процесс был точным, ряд должен быть записан в
такой форме, где вычисляется f(x) при x (x)  1.
Пример:
x2 x3

2
3
T0 T2
3T 1  T 3
y  T1 – (
)+(
)
4
12
T 0 15T 1 T 2 T 3


y- 
4
12
4 12
y = ln(1+x)  x -
(4.1)
(4.2)
Отбрасывая в (4.1) последний член, получаем погрешность (  ), равную
0,333 при x = 1. А в ряд (4.2) при отбрасывании последних двух членов:

1 1
 = -00,1666… (так как Tn  1)
12 4
Таким образом, можно написать
y = ln(1+x)  -
T 0 15T 1 T 2

 , обеспечивающее лучшую точность, чем (4.1).
4
12
4
Теперь, используя определение полиномов Чебышева можно написать:
63
y = ln(1+x) 
1 15 2 x 2 1
 
 — это и есть экономизация.
4 12
4
4
Численная оценка полиномов Чебышева
Tn(x) = 2xTn-1(x) – Tn-2(x)
T0 = 1; T = x
y = ln(1+x)  -
T 0 15
T2 T2
 T1 

4 12
4 12
(4.3)
Можно оценить (4.3) первой оценкой численного значения для 4
полиномов Чебышева: (пусть x = 0.3)
T0 = 1; T = 0.3
T2 = (2)(0.3)T1 – T0 = 2·0.3·0.3-1 = -0.82
T3 = (2)(0.3)T2 – T1 = -2·0.3·0.82 – 0.3 = 0.792
1
4
15
12
1
4
y = ln(1.3)    ( )0.3  (0.82) 
1
(0.792)  0.2640
12
y = ln(1.3) = 0.26236426
Экономизируем разложение ряда Маклорена:
x2 x3 x4
x5
x6
e =1+x+




 ...
2
6 24 120 720
x
1 = T0
x = T1
x 2=
x 3=
x 4=
x 5=
x 6=
e x=
1
(T 0  T 2)
2
1
(3T 1  T 3)
4
1
(3T 0  4T 2  T 4)
8
1
(10T 1  5T 3  T 5)
16
1
(10T 0  15T 2  6T 4  T 6)
32
1
1
1
1
T 0  T 1  (T 0  T 2) 
(3T 1  T 3) 
(3T 0  4T 2  T 4) 
(10T 1  5T 3  ...) +…
4
24
192
1920
e x= 1.2661T0 + 1.1302T1 + 0.2715T2 + 0.0443T3 + …
e x= 1.2661 + 1.1302x + 0.2715(2x2 - 1) + 0.0444(4x 3– 3x) + …
e x  0.9946 + 0.9974x + 0.5430x2 + 0.1771x3 + …
x3 x5

6 120
1
1
(10T 1  5T 3  T 5)
Sin x = T1 - (3T 1  T 3) 
24
1920
64
Sin x = x -
Sin x =
169
5
1
T1 
T3 
T5
192
128
1920
x5 изменяет коэффициент T1< на 1%, x7 - <0.01%
Sin x =
169
5
T1 
T3
192
128
T1 = x; T3 = 4x3 – 3x;
Sin x = 0.9974x – 0.1562x 3= x(0.9974 – 0.1562x2)
Маклор Ошибка
2·10
-3
1·10-3
0
1·10
-3
0,2
0,4
0,6
0,8
1
Рис.4.1
65
5. РЕШЕНИЕ СИСТЕМ ЛИНЕЙНИЫХ (СЛАУ) И
НЕЛИНЕЙНЫХ УРАВНЕНИЙ (СНАУ)
5.1. МЕТОД НЬЮТОНА - РАФСОНА ДЛЯ СИСТЕМ
НЕЛИНЕЙНЫХ УРАВНЕНИЙ
Будем искать решение системы нелинейных уравнений
f ( x, y)  0
.


(
x
,
y
)

0

Считая заданными начальные приближения корней (x0, y0), будем
искать поправки к ним h и k:
x  x 0  h
x n 1  x n  h
или
в
общем
виде
.


 y n 1  y n  k
 y  y .0  k
Таким образом, имеем систему:
 f ( x0  h, y0  k )  0

 ( x0  h, y0  k )  0
Раскладывая функции в ряд Тейлора, имеем:

df
 f ( x0 , y 0 )  h
dx


 ( x , y )  h d
 0 0
dx

x0
y0
x0
y0
k
df x0
 01 (h, k )  0
dy y 0
k
d x0
 0 2 (h, k )  0
dy y 0
Уравнения системы содержат члены более высокого порядка малости, чем
h и k. Пренебрегая ими, получим систему относительно h1 и k1:

h1


h
 1

df
df
 k1
  f ( x0 , y 0 )
dx 0
dy 0
d
d
 k1
  ( x 0 , y 0 )
dx 0
dy 0
Отсюда
 f ( x0 , y 0 )
h
h1  1 

66
  ( x0 , y 0 )
df
dx
d
dx
df
dy
d
dy
df
dy 0
d
dy 0
k
k1  1 

df
dx
d
dx
 f ( x0 , y 0 )
  ( x0 , y 0 )
df
dx
d
dx
df
dy
d
dy
Тогда x1  x0  h1 ; y1  y0  k1 и так далее.
Пример. Найти корни системы уравнений:
3x  6 y  2  0
 3
3
x  y  1  0
Пусть
f ( x, y )  3 x  6 y  2
 ( x, y )  x 3  y 3  1
x0  0,83; y 0  0,75
Тогда
df
df
 3;
 6;
dx
dy
d
d
 3x 2 ;
 3y 2
dx
dy
Получаем
d
d
 2,07;
 1,69
dx 0
dy
f ( x0 , y 0 )  3x0  6 y 0  2  0,01
 ( x0 , y0 )  x03  y03  1  0,01
0,01  6
0,01 1,69 0,077
h1 

 0,0044
3
6
17,5
2,07 1,69
k1 
3
0,01
2,07 0,01
17,5
x1  0,8344

0,0093
 0,0005
17,5
y1  0,7505 и так далее.
67
5.2. МЕТОД ИТЕРАЦИЙ ДЛЯ СИСТЕМ НЕЛИНЕЙНЫХ
УРАВНЕНИЙ
Пусть дана система уравнений с двумя неизвестными:
f ( x, y)  0 x  F( x, y)
.



(
x
,
y
)

0
y

Ф
(
x
,
y
)


Функции F( x, y) и Ф( x, y) называются итерирующими. Алгоритм решения
задается формулами:
 xn1  F ( xn, y n )

 y n1  Ф( xn , y n )
Если функции F (x, y) и Ф (x, y) непрерывны и последовательности
x1 , x2 ,..., xn ,... и y1 , y 2 ,..., y n ,... сходятся, то пределы их являются корнями
системы.
Исследуем сходимость. Пусть x, y — истинные значения корней
системы и известно, что a  x  b, c  y  d и в прямоугольнике x = a, x = b,
y = c, y = d других корней нет. Тогда, если в этом прямоугольнике
выполняются неравенства:
dF
dF
dФ
dФ
 p1 ,
 q1 ,
 p2 ,
 q2 .
dx
dy
dx
dy
Где
p1  p 2  M  1
q1  q 2  N  1
, то итерационный процесс сходится, причём в качестве
нулевого приближения ( x0 , y0 ) можно брать любую точку прямоугольника.
Пример.
2

 f ( x, y )  x  3 lg x  y  0

2

 ( x, y )  2 x  xy  5 x  1  0
Рассмотрим точку x0 = 3,4; y0 = 2,2
Приведём систему (различными путями) к виду:
 x  y 2  3 lg x
F ( x, y )  y 2  3 lg x


1
1
Ф ( x, y )  2 x   5
 y  2x   5
x

x
dФ
dF
2 ln x dF
dФ
1

;
 2 2 ;
 2y;
 0;
dx
x
dx
x
dy
dy
Для x0 , y 0 :
dФ dF

 1,
dx
dx
уравнения; y — из 1-го:
68
dF
 4 — процесс сходится. Определим x из 2-го
dy

x(5  y )  1
x 
2

 y  x  3 ln x

dF
1
5 y

;
dx
2 2 x(5  y )  1
3 lg e
1
dФ
dF
1
x
dФ
x
;

;

0
dx 2 x  3 lg x
dy
dy
2 2 x(5  y )  1
За область изоляции корня можно принять прямоугольник 3 < x < 4;
2 < y < 2,5
dF
dF
dФ
 0,60;
 0,32;
 0,34
dx
dy
dx
dF
dФ
процесс сходится, но так как

 0,94 - близко к единице, то
dx
dx
скорость сходимости будет небольшой:
x 0  3,4;
y 0  2,2;
x1 
3,4(2,2  5)  1
 3,426
2
y 2  2,250
y 1  3,426  3 lg 3,426  2,243
y 3  2,255
x 2  3,451
y 4  2,258
x 3  3,466
y 5  2,259
x 4  3,475
y 6  2,260
x 5  3,480
x 6  3,483
5.3. СИСТЕМЫ ЛИНЕЙНЫХ УРАВНЕНИЙ МЕТОД ПРОСТОЙ
ИТЕРАЦИИ
Пусть дана система n линейных алгебраических уравнений с n
неизвестными
a 11 x 1  a 12 x 2  ...  a 1n x n  b 1
a x  a x  ...  a x  b
 21 1
22 2
2n
n
2

...
a n1 x 1  a n 2 x 2  ...  a nn x n  b n
Перепишем систему уравнений в виде:
69
1

x 1  a (b1  a 12 x 2  a 13 x 3  ...  a 1n x n )
11

1

(b 2  a 21 x 1  a 23 x 3  ...  a 2 n x n )
x 2 
a

22
...

1

x

(b n  a n1 x 1  a n 2 x 2  ...  a nn 1 x n 1 )
n

a nn

Обозначим правую часть i-го уравнения через Li ( x1 , x2 ,..., xn ) . Без потери
общности не обращаем внимание на то, что в правой части i-го уравнения
xi не содержится. Тогда:
x 1  L1 ( x 1 , x 2 ,..., x n );
x 2  L 2 ( x 1 , x 2 ,..., x n );
...
x n  L n ( x 1 , x 2 ,..., x n )
Зададимся
начальными
приближениями
(0)
(0)
(0)
x1 , x 2 ,..., x n . Тогда:
корней
системы
x 1(1)  L 1 ( x 1( 0 ) ,..., x (n0 ) );
x (21)  L 2 ( x 1( 0 ) ,..., x (n0 ) );
...
x (n1)  L n ( x 1( 0 ) ,..., x (n0 ) );
Итерационный процесс продолжается до тех пор, пока все x i( k ) не станут
достаточно близки к xi( k 1) , где
i = 1, 2, 3, …, n, то есть:
M ( k )  max x i( k )  x i( k 1)  E
Лучше сравнивать с E относительные разности:
x i( k )  x i( k 1)
max
E
x i( k )
Исследуем сходимость. Пусть xi( n )  xi   i( k ) , где xi — истинное значение iго корня. Так как xi — истинное значение корня, то:
1
x i  b i  a i1 x 1  a i 2 x 2  ...  a in x n 
a ii
Кроме того:
1
x i( k 1)  (a i1 ( x 1( k )  x 1 )  ...  a in ( x (nk )  x n ))
a ii
Иначе:
70
1
(a i11( k )  ...  a in  (nk ) )
a ii
Обозначим наибольшее из  i(k ) через ( k ) . Тогда
 i( k 1) 
 i( k 1)  ( k )  a i1  a i 2  ...  a in

1
.
a ii
1
 a i1  a i 2  ...  a in , то ( k 1)  A * ( k ) . Так как это
a ii
справедливо при любых k, то:
( k )  A * ( k 1)
 ( k 1)
 A * ( k  2 )


...
(1)  A * ( 0 )
Если взять: A  max
Откуда ( k 1)  A k 1 * ( 0 ) . Если A < 1, то
lim 
( k 1)
k 
k  .
Таким
образом,
условие
сходимости
 0 или x i( k )  x i при
n
a ij
a
j1
 1,
то
есть
ij
n
диагональные элементы системы удовлетворяют условию a ii   a ij .
j1
j i
Пример:
5x 1  2x 2  2x 3  7

3x 1  6x 2  x 3  8
8x  2x  11x  9
2
3
 1
5  2  2  4
6  3  1  4
11  8   2  10
1
7  2x 2  2x 3 
5
1
x 2   8  3x 1  x 3 
6
1
x 3  9  8x 1  2 x 2 
11
Выбор начальных приближений не влияет на условия сходимости, поэтому
чаще всего полагают x i( 0)  0 .
x1 
5.4. МЕТОД ЗЕЙДЕЛЯ
Метод Зейделя является модификацией метода простой итерации.
71
Итак дана система уравнений:
x 1  L1 ( x 1 , x 2 ,..., x n )
x 2  L 2 ( x 1 , x 2 ,..., x n )
.
...
x n  L n ( x 1 , x,..., x n )
Для вычисления (k + 1)-го приближения xi в методе итераций мы
использовали x i( k ) , где i = 1, 2, …, n, но так как к моменту вычисления x i( k 1)
уже найдены x1( k 1) , x (2k 1) ,..., x i(k11) , то возникает идея: при нахождении x i( k 1)
использовать найденные ранее x1( k 1) , x (2k 1) ,..., x i(k11) ,..., x i(k1) ,..., x (nk ) . В этом и
заключается метод Зейделя: для вычисления (k + 1)-го приближения x i
используется не только k-e, но и (k+1)-e приближения:
x 1( k 1)  L1 ( x 1( k ) ,..., x (nk ) )
x (2k 1)  L 2 ( x 1( k 1) , x (2k ) ,..., x (nk ) )
x i( k 1)  L i ( x 1( k 1) , x (2k 1) ,..., x i(k11) , x (( ik)1) ,..., x (nk ) )
x (nk 1)  L n ( x 1( k 1) ,..., x (nk11) )
Пример.
6 x  5 y  30

x  2 y  2
1
x ( k 1)  (30  5 y ( k ) )
6
1
y ( k 1)  (2  x k 1 )
2
В случае, если коэффициенты решаемой системы не удовлетворяют
условию сходимости, то с помощью линейного комбинирования
уравнений исходной системы получают новую, для которой сходимость
обеспечивается. Для этого выбирают из системы уравнений такие, модули
коэффициентов в которых больше суммы модулей остальных
коэффициентов. Выбранные уравнения записывают так, чтобы
наибольший по модулю коэффициент оказался диагональным.
4 x 1  5x 2  x 3  2 x 4  7
a
3x 1  6x 2  7 x 3  5x 4  8
b
x 1  7 x 2  2x 3  x 4  3
с
2x 1  3x 2  x 3  10 x 4  10 d
Уравнение с): 7  1  2   1  4 - будет 2-е уравнение
72
Уравнение d): 10  2   3  1  6 - будет 4-е уравнение
a) - b): x 1  x 2  8x 3  3x 4  1 - будет 3-е уравнение, 8  1  1  1  3 .
a) + b) + 2c) + d): 11x 1  0 * x 2  x 3  x 4  31 - 1-е уравнение,
11  0   1  1  2
1
x 1  (31  x 3  x 4 )
11
1
x 2  (3  x 1  2 x 3  x 4 )
7
1
x 3  (1  x 1  x 2  3x 4 )
8
1
x 4  (10  2 x 1  3x 3  x 3 )
10
При получении системы уравнений, удовлетворяющей условиям
сходимости метода итераций, необходимо, чтобы каждое уравнение
исходной системы, не вошедшее в явном виде в новую систему, попало
хотя бы в одну из линейных комбинаций.
Sub Метод_Гаусса()
Dim m As Integer 'кол-во ур-й СЛАУ или кол-во строк
Dim n As Integer 'кол-во столбцов в матрице коэффициентов
Dim a(100, 101) As Single 'матрица коэффициентов
Dim c(1 To 100) As Single 'матрица для хранения
результатов
Dim i As Integer 'счетчик цикла
Dim l As Integer 'счетчик цикла
Dim z As Integer 'счетчик
Dim j As Integer 'счетчик цикла
Dim d As Integer 'счетчик
Dim f As Single 'переменная для хранения эл-ов массива
Dim b As Single 'переменная для хранения эл-ов массива
Dim x As Single 'вспомогательная переменная
Dim p As Integer 'счетчик цикла
x = 0
Worksheets(1).Cells(1, 1).Value = "Метод Гаусса" 'выводим
пояснения на лист1
Worksheets(1).Cells(2, 1).Value = "Коэффициенты системы"
Stop 'останов исп-ся для того, чтобы задать коэффициенты
системы
m = CInt(InputBox("Введите кол-во ур-й СЛАУ"))
'переменной m присваиваем кол-во ур-й СЛАУ
n = m + 1 'коэффициентов будет на 1 больше, чем уравнений
СЛАУ
73
Worksheets(1).Cells(m + 3, 1).Value = "Результат:"
'выводим пояснение на лист1
For i = 1 To m 'с листа считываем коэффициенты в массив
коэффициентов
For j = 1 To n
a(i, j) = Worksheets(1).Cells(i + 2, j).Value
Next j
Next i
z = 0
d = 0
1 For i = 1 To (m - z) 'Методом исключения Гаусса
преобразуем матрицу коэффициентов СЛАУ
b = a(i + z, z + 1)
For j = 1 To (n - z)
If (d = 0) Then
f = a(i + z, j + z)
For l = (1 + z) To n
a(i + z, l) = a(i + z, l) / f
Next l
d = d + 1
If z = (m - 1) Then GoTo 3
GoTo 4
Else: a(i + z, j + z) = a(i + z, j + z) - a(z + 1, j
+ z) * b
End If
Next j
4 Next i
z = z + 1
d = d - 1
GoTo 1
3 For i = m To 1 Step -1 'выведем преобразованную матрицу
коэффициентов СЛАУ на лист2
For j = n To 1 Step -1
Worksheets(2).Cells(i, j).Value = a(i, j)
Next j
Next i
c(m) = a(m, n) 'запоминаем найденную переменную в матрицу
резудьтата
For i = (m - 1) To 1 Step -1 'ищем значения остальных
переменных
x = a(i, n)
For j = (n - 1) To (i + 1) Step -1
x = x - a(i, j) * c(j)
Next j
5 c(i) = x 'заносим найденное значение в матрицу
результата
Next i
74
For i = 1 To m 'выводим корни СЛАУ на лист1
Worksheets(1).Cells(m + 4, i).Value = c(i)
Next i
End Sub
Sub
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
функцией
Метод_Простых_итераций()
n As Integer 'порядок матрицы системы
a(100, 100) As Double 'преобразованная матрица
x(100) As Double 'матрица для хранения результатов
f(100) As Double 'матрица для хранения результатов
b(100) As Double 'столбец свободных членов
e As Double 'погрешность
i As Integer 'счетчик цикла
j As Integer 'счетчик цикла
c As Boolean 'Переменная для принятия возвращаемого
значения
n = CInt(InputBox("Введите порядок матрицы системы"))
'переменной m присваиваем порядок матрицы системы
Worksheets(3).Cells(1, 1).Value = "Метод простых итераций"
'выводим пояснения на лист1
Worksheets(3).Cells(2,
1).Value
=
"Преобразованная
матрица"
Worksheets(3).Cells(2, n + 2).Value = "Столбец свободных
членов"
Worksheets(3).Cells(2, n + 6).Value = "Столбец начальных
приближений"
Worksheets(3).Cells(n + 3, 1).Value = "Результат"
Worksheets(3).Cells(n + 3, 3).Value = "Счетчик числа
итераций"
Stop 'останов исп-ся для того, чтобы задать коэффициенты
системы
e = CDbl(InputBox("Введите погрешность"))
For i = 1 To n 'с листа считываем элементы в матрицу a
For j = 1 To n
a(i, j) = Worksheets(3).Cells(i + 2, j).Value
Next j
Next i
For j = 1 To n 'с листа считываем элементы в матрицу b
b(j) = Worksheets(3).Cells(j + 2, n + 2).Value
Next j
For j = 1 To n 'с листа считываем элементы(начальные
приближения) в матрицу x
x(j) = Worksheets(3).Cells(j + 2, n + 6).Value
Next j
c = Itera(n, a(), b(), x(), f(), e) 'Вызываем ф-ю Itera и
возвращаемое значение присваиваем переменной с
75
If (c = False) Then MsgBox ("Условие сходимости
выполняется"): GoTo 1 'Если ф-я вернула False
For j = 1 To n 'Выводим решение на лист1
Worksheets(3).Cells(n + 3 + j, 1).Value = x(j)
Next j
1
End Sub
не
Function Itera(n As Integer, a() As Double, b() As Double,
x() As Double, f() As Double, e As Double) As Boolean
Dim i As Integer, j As Integer, p As Integer 'Счетчики
цикла
Dim s As Double 'Переменная для суммирования элементов
уравнения всех, кроме диагонального
Dim m As Double 'Переменная для хранения модуля разности
между ближайшими приближениями
Dim s1 As Double
Dim k As Integer ' счетчик числа итерации
Dim v As Double 'Переменная для хранения передыдущего
приближения
k = 0
For i = 1 To n 'Проверяем выполняется ли условие
сходимости
s = 0
For j = 1 To n
If j <> i Then s = s + Abs(a(i, j)) 'Если элемент не
диагональный
Next j
If s >= Abs(a(i, i)) Then Itera = False: GoTo 2 'Если
условие сходимости не выполняется
Next i
Do
m = 0
For i = 1 To n 'Просматриваем строки матрицы
коэффициентов
s1 = 0
For j = 1 To n 'Просматриваем столбцы матрицы
коэффициентов
s1 = s1 + a(i, j) * x(j)
Next j
v = x(i) 'Запоминаем приближение
f(i) = x(i) - (1 / a(i, i)) * (s1 - b(i))
'Высчитываем следующее приближение
If (Abs(v - f(i)) > m) Then m = Abs(v - f(i))
'Запоминаем модуль разности
' соседних приближений для сравнения его
затем с заданной точностью
Next i
For p = 1 To n
x(p) = f(p)
76
Next p
k = p + 1 'Увеличиваем значение счетчика
Loop While m >= e 'Продолжаем вычисления пока не
достигнута точность
Itera = True
Worksheets(3).Cells(n + 4, 3).Value = k 'Выводим значение
счетчика на лист
2
End Function
Sub
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
функцией
Метод_Зейделя()
n As Integer 'порядок матрицы системы
a(100, 100) As Double 'преобразованная матрица
x(100) As Double 'матрица для хранения результатов
b(100) As Double 'столбец свободных членов
e As Double 'погрешность
i As Integer 'счетчик цикла
j As Integer 'счетчик цикла
c As Boolean 'Переменная для принятия возвращаемого
значения
n = CInt(InputBox("Введите порядок матрицы системы"))
'переменной m присваиваем порядок матрицы системы
Worksheets(2).Cells(1, 1).Value = "Метод Зейделя"
'выводим пояснения на лист1
Worksheets(2).Cells(2, 1).Value = "Преобразованная
матрица"
Worksheets(2).Cells(2, n + 2).Value = "Столбец свободных
членов"
Worksheets(2).Cells(2, n + 6).Value = "Столбец начальных
приближений"
Worksheets(2).Cells(n + 3, 1).Value = "Результат"
Worksheets(2).Cells(n + 3, 3).Value = "Счетчик числа
итераций"
Stop 'останов исп-ся для того, чтобы задать коэффициенты
системы
e = CDbl(InputBox("Введите погрешность"))
For i = 1 To n 'с листа считываем элементы в матрицу a
For j = 1 To n
a(i, j) = Worksheets(2).Cells(i + 2, j).Value
Next j
Next i
For j = 1 To n 'с листа считываем элементы в матрицу b
b(j) = Worksheets(2).Cells(j + 2, n + 2).Value
Next j
For j = 1 To n 'с листа считываем элементы(начальные
приближения) в матрицу x
77
x(j) = Worksheets(2).Cells(j + 2, n + 6).Value
Next j
c = Zeidel(n, a(), b(), x(), e) 'Вызываем ф-ю Zeidel и
возвращаемое значение присваиваем переменной с
If (c = False) Then MsgBox ("Условие сходимости не
выполняется"): GoTo 1 'Если ф-я вернула False
For j = 1 To n 'Выводим решение на лист1
Worksheets(2).Cells(n + 3 + j, 1).Value = x(j)
Next j
1
End Sub
Function Zeidel(n As Integer, a() As Double, b() As
Double, x() As Double, e As Double) As Boolean
Dim i As Integer, j As Integer 'Счетчики цикла
Dim s As Double 'Переменная для суммирования элементов
уравнения всех, кроме диагонального
Dim m As Double 'Переменная для хранения модуля разности
между ближайшими приближениями
Dim s1 As Double
Dim p As Integer ' счетчик числа итерации
Dim v As Double 'Переменная для хранения передыдущего
приближения
p = 0
For i = 1 To n 'Проверяем выполняется ли условие
сходимости
s = 0
For j = 1 To n
If j <> i Then s = s + Abs(a(i, j)) 'Если элемент не
диагональный
Next j
If s >= Abs(a(i, i)) Then Zeidel = False: GoTo 2 'Если
условие сходимости не выполняется
Next i
Do
m = 0
For i = 1 To n 'Просматриваем строки матрицы
коэффициентов
s1 = 0
For j = 1 To n 'Просматриваем столбцы матрицы
коэффициентов
s1 = s1 + a(i, j) * x(j)
Next j
v = x(i) 'Запоминаем приближение
x(i) = x(i) - (1 / a(i, i)) * (s1 - b(i))
'Высчитываем следующее приближение
If (Abs(v - x(i)) > m) Then m = Abs(v - x(i))
'Запоминаем модуль разности
' соседних приближений для сравнения его
затем с заданной точностью
78
Next i
p = p + 1 'увеличиваем счетчик
Loop While m >= e 'Продолжаем вычисления пока не
достигнута точность
Zeidel = True
Worksheets(2).Cells(n + 4, 3).Value = p 'Выводим значение
счетчика на лист
2
End Function
ВАРИАНТЫ ЗАДАНИЙ
1. Построить итерации для системы уравнений
 y( x  1)  1
.
 2
2
x

y

1

2. Решить при помощи метода Ньютона – Рафсона системы
уравнений:
5x  6 y  20 lg x  16  0
2x  y  6 lg x  3  0
а) 
, б) 
,
2x  y  10 lg y  4  0
15x  10 y  60 lg y  6  0
x  y  6 lg x  1  0
6x  5y  30 lg x  12  0
в) 
, г) 
,
x  3y  6 lg y  2  0
3x  3y  30 lg y  10  0
x  y 2  x
15x  20 y  60 lg x  6  0
д) 
, е) 
,
4
x

5
y

20
lg
y

5

0

x

6
y

y


2
2
x  ( x  y  x  3) / 3
x  sin( y)
ж) 
, з) 
,
y


6
x

y
y

(

x

y

1
)
/
3


x  2  x  z
2 x 3  y 2  1  0

и)  y  2  x  z
, к)  3
xy  y  4  0
z  9  3x  4 y  z

ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ
1. Как проводится отделение корней при решении систем
нелинейных уравнений?
2. Почему после одного шага по методу Ньютона-Рафсона мы не
попадаем в решение, хотя рассчитывали из условия попадания в решение?
3. Отчего зависит скорость сходимости метода Ньютона-Рафсона?
4. Можно ли обеспечить сходимость метода итераций при решении
систем нелинейных уравнений?
79
5. Каким образом можно повысить точность решения системы
нелинейных уравнений?
6. Оказывает ли влияние на результат решения выбор начального
приближения в методе итераций?
7. В чем основное отличие точных и приближенных методов
решения систем линейных уравнений?
8. В каких случаях предпочтительны итерационные методы решения
систем линейных уравнений?
9. Можно ли получить решение системы высокой размерности с
погрешностью не хуже заданной?
10. Как влияет вычислительная ошибка на точность решения
системы линейных уравнений методом итераций?
6. ЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ
Пусть f (x) — вещественная функция, определённая на интервале
[a, b] вещественной оси, для которой существует интеграл Римана
b
 f ( x)dx.
a
Под
численным
интегрированием
понимают
нахождение
приближённого значения этого интеграла. Наиболее часто применяемый
численный метод интегрирования состоит в том, что интеграл от φ
заменяется некоторой комбинацией значений φ ( x k ) в n + 1 точках
x k  [a , b ] :
b
n
a
k 0
 f ( x )dx   A k f ( x k )
называется квадратурной формулой, коэффициенты Ak — квадратурными
коэффициентами (или весами), абсциссы x k — узлами квадратурной
формулы.
6.1.КВАДРАТУРНЫЕ ФОРМУЛЫ, ПОРОЖДЕННЫЕ
ИНТЕРПОЛЯЦИОННЫМИ ФОРМУЛАМИ
Пусть x0 , x1 ,..., xn — различные точки [a,b], служащие узлами
интерполяции для некоторой функции I (x), интерполирующей функцию f
(x): f (x) = I (x) + R (x), где R (x) — остаточный член. Предположим, что I
n
(x) =

k 0
f ( x k ) I k ( x ) причём все интегралы
b
I
k
( x)dx  Ak вычисляются точно.
a
Таким образом, получается квадратурная формула:
80
b
n
a
k 0
 f ( x )dx   A k f ( x k )
1 случай: n = 1; x0  a, x1  b . Функция f (x) интерполируется по формуле
Лагранжа:
f( x ) 
x  x0
x  x1
xb
xa
1
f( x0 ) 
f ( x1 ) 
f( a ) 
f( b ) 
[ f ( a )( b  x )  f ( b )( x  a )] 
x 0  x1
x1  x 0
ab
ba
ba
1
ab b 2
f(
) ( x  ( b  a )x  ab )dx 
2
(ba)
2 a
3
b
1
x2 b
 a  b x b

f
( b  a )
 abx  

2
a 
( b  a )  2   3 a
2 a
3
3
2
2
1
a b b a
b a

f
[
(b  a )
 ab( b  a )] 
( b  a )2
2
3
2
I( x ) 
( b  a )( b 2  ab  a 2 )
( b  a )( b  a )( b  a ) ab( b  a )
ab
1
1
)[


]
2
2
(ba )
3
( b  a )2
2
( b  a )2
a  b 1 2b 2  2ab  2a 2  3b 2  6ab  3a 2  6ab
1
a  b  b 2  2ab  a 2
 f (
)

f(
)

2 ba
6
ba
2
6
f (
(b  a) 2 a  b b  a a  b

f(
)
f(
)
(b  a)6
2
6
2
n
1
2
a
ba
[ f 0  4 f 2i 1  2 f 2i  f n ]
3n
i 1
i 1
n6
f 0  4 f1  4 f 3  4 f 5  2 f 2  2 f 4  f 6
n2
f 0  4 f1  f 2
n4
f 0  4 f1  4 f 3  2 f 2  f 4
n8
f 0  4 f1  4 f 3  4 f 5  4 f 7  2 f 2  2 f 4  2 f 6  f 8
b
2
 f ( x)dx 
n = 2k - чётное
n
b

a
n
1
2
2
ba
nh 5
f ( x)dx 
[ f 0  4 f 2i 1   f 2i  f n ] 
f
3n
90
i 1
i 1
IV
( )
bx
zdz
1 z2 0
ba
dx   


ba
ba
ba 2 ba
2
a
ba
z  b  x; dz  dx
x  a  z ba
xbz0
b
0
Поэтому A0  
xa
dx 
ba
a
b
A1  
b
 f ( x)dx 
a
ba

0
zdz
z2 b  a b  a


b  a 2(b  a) 0
2
ba
[ f (a)  f (b)] — формула трапеций
2
81
2 случай: n = 2; x0  a; x1 
ab
; x 2  b , Интерполяционный многочлен таков:
2
( x  x0 )( x  x 2 )
( x  x0 )( x  x1 )
( x  x1 )( x  x 2 )
I ( x) 
f ( x0 ) 
f ( x1 ) 
f ( x2 ) 
( x0  x1 )( x0  x 2 )
( x1  x0 )( x1  x 2 )
( x 2  x0 )( x 2  x1 )
ab
)( x  b)
2
 (a) 
ab
(a 
)( a  b)
2
(x 
ab
)
( x  a)( x  b)
ab
2 f (b)  (2 x  a  b)( x  b) f (a)  ( x  a)( x  b) f ( a  b ) 

f(
)
ab
ab
ab
2
(a  b)( a  b)
(b  a)( a  b)
2
(
 a)(
 b)
(b  a)(b 
)
2
2
2
( x  a)( 2 x  a  b)

f (b)
(b  a)(b  a)
( x  a)( x 
После интегрирования:
b
 f ( x)dx 
a
ba
ab
[ f (a)  4 f (
)  f (b)]
6
2
ba
ab
[ f (a)  4 f (
)  f (b)]
3* 2
2
— формула Симпсона (парабол)
При заданном интервале интегрирования [a, b] квадратурные
формулы обычно применяются таким образом: сначала интервал
разбивается на n интервалов длины
h
ba
,
n
затем к каждому
подынтервалу применяется соответствующая формула.
Пусть f i  f (a  ih ), где i = 0, 1, 2, 3, …, n
Для формулы трапеций:
b

f ( x)dx 
a
n 1
ba
ba
[ f 0  2 f1  ...  2 f n1  f n ] 
[ f 0  2 f i  f n ]
2n
2n
i 1
Для формулы Симпсона предполагают, что n — чётное:
b
 f ( x)dx 
a
ba
[ f 0  4 f1  2 f 2  ...  2 f n2  4 f n1  f n ]
3n
h
ba
n
Ошибки:
Для формулы трапеций:
b

f ( x)dx 
a
n 1
ba
h 2 (b  a)
[ f 0  2 f i  f n ] 
f ' ' ( )
2n
12
i 1

h 2 (b  a) n
*
f ' ' ( )
n
12
Для формулы Симпсона:
b

f ( x)dx 
a
ba
nh 5
[ f (a)  4 f (a  h)  2 f (a  2h)  ...  4 f (b  h)  f (b)] 
f
3n
90
n = 2k — чётное
6.2. КВАДРАТУРНЫЕ ФОРМУЛЫ ГАУССА
82
IV
( ) , где
Формулы трапеций и Симпсона используют равноотстоящие узлы.
Смысл квадратурных формул Гаусса состоит в том, чтобы при
наименьшем возможном числе узлов точно интегрировать многочлен
наивысшей возможной степени. Можно показать, что при n гауссовых
узлах по полученной исходя из них с помощью интерполирования
квадратурной формуле можно точно интегрировать все многочлены
степени k  2n  1. Составим квадратурную формулу с 2-мя узлами, по
которой точно интегрируются многочлены до 3-й степени включительно.
b
 f ( x)dx  c
1
f ( x1 )  c2 f ( x2 )  R( f )
a
Если R (f) для f ( x)  a0  a1 x  a 2 x 2  a3 x 3 обращается в нуль для любых a i , то
b2  a2
b3  a3
b4  a4
 a2
 a3
 c1 (a0  a1 x1  a2 x12  a3 x13 )  c2 (a0  a1 x2  a2 x22  a3 x23 )
2
3
4
Приравняем коэффициенты при ai (i  0,1, 2, 3) справа и слева:
a0 (b  a)  a1
c1  c 2  b  a

c1 x1  c 2 x 2  1 (b 2  a 2 )
2

 2
1 3
2
3
c1 x1  c 2 x 2  3 (b  a )

c x 3  c x 3  1 (b 4  a 4 )
1 2
 ` `
4
ba
Откуда, в силу симметрии, c1  c 2 
2
ab
3 ba
x1 

*
2
3
2
ab
3 ba
x2 

*
2
3
2
Значит, искомая квадратурная формула Гаусса:
b
ba ab 1 ba
ab 1 ba
f
(
x
)
dx

[
f
(

*
)

f
(

*
)]
a
2
2
2
2
2
3
3
Приведём отрезок [a, b] к отрезку [-1, 1]
[a, b] → [0, 1] → [c, d] = [-1, 1]
1)
tx 
xa
; x at 0
ba
x  b  t 1
2) t (b  a)  x  a  x  a  t (b  a)  z  c  t (d  с)
3) z  c 
xa
( d  c ) [ a , b ]  [c, d ]
ba
с = -1
d=+1
83
z  1 
xa
2( x  a)
2 x  2a  b  a 2 x  (b  a)
(1  (1)) 
1 

;
ba
ba
be
ba
b
1
a
1
(b  a) z  (b  a)
x
2
 f ( x)dx    ( z) dz
2dx
ba
 dx 
dz
ba
2
ab 1 ba ba
ba
x1 

*

* z1 
;
2
2
2
2
3
ab 1 ba ba
ba
x2 

*

* z2 
;
2
2
2
2
3
dz 
Для n = 3:
1
n
1
i 1
z1  
z2  
1
3
1
3
 f (t ) dt   A f (t )
i
i
5
1
A1  ; t1  
9
3
8
A2  ; t 2  0
9
5
1
A3  ; t 3 
9
3
6.3 МЕТОД РОМБЕРГА
Можно вычислить приближение Симпсона по особым линейным
комбинациям формул трапеций.
а
b
a
T — площадь под
20 = 1 трапецией
(0)
0
T (00) =
a
b
T — площадь под
22 = 4 трапециями
2
0
b
T — площадь под
21 = 2 трапециями
1
0
ba
( f (a )  f (b))
2
a
b
T — площадь под
23 = 8 трапециями
3
0
Пусть промежуток интегрирования разбит на 2к равных частей и для
этого разбиение по формуле трапеций получено значение Т0(к). Значение
84
Т0(к) совпадают со значениями вычисляемого интеграла, если
интегрируемая функция линейна, то есть f (x) является многочленом 1-й
степени. По формуле:
4 m Tmk 11  Tmk 1
(k)
Tm
=
, называемой формулой Ромберга, построим
4m 1
следующую Т - схему:
T0(0)
T1(0)
T0(1)
T2(0)
T1(1)
T0(2)
T3(0)
T2(1)
T1(2)
T0(3)
T4(0)
T3(1)
T2(2)
T1(3)
T0(4)
Для интегрируемых по Риману функций все столбцы и все наклонные
строки Т — схемы сходятся к искомому значению интеграла. Выпишем
явные формулы для следующего фрагмента Т — схемы:
T0(0)
T1(0)
T0(1)
T3(0)
T2(1)
T0(2)
1. k = 0; 2k = 20 = 1 часть, то есть (b - a). T0(0) =
ba
[f (x0) + f (x4)], так как
2
ba
, i = 0, 1, 2, 3, 4.
4
ba 1
ba
1
ba
2. T0(1) =
* [f (x0) + f (x2)] +
* [f (x2) + f (x4)] =
[f (x0) + 2f
2
2
2
2
4
при k = 2; 2k = 22 = 4 части xi = a + i *
(x2) + f (x4)]k = 1 → 2k = 21 = 2 части
ba
[ f ( x0 )  2 f ( x 2 )  f ( x 4 )]  T0( 0)
4
T

T
4
*
T

T
4
3. T1(0) =
=
=
=
3
3
4 1
ba
(b  a)[ f ( x0 )  2 f ( x 2 )  f ( x 4 )] 
[ f ( x0 )  f ( x 4 )]
2
=
3
ba
ba
[2 f ( x0 )  4 f ( x 2 )  2 f ( x 4 )  f ( x0 )  f ( x 4 )] =
[ f ( x0 )  4 f ( x 2 )  f ( x 4 )] .
6
6
1
(1)
11
1
(0)
11
(1)
0
( 0)
0
4*
85
4. T0(2) =
ba 1
ba 1
ba 1
* [f ( x 0 )  f ( x1 )] 
* [f ( x1 )  f ( x 2 )] 
* [f ( x 2 )  f ( x 3 )] 
4
2
4
2
4
2
ba 1
ba
* [f ( x 3 )  f ( x 4 )] 
[f ( x 0 )  2(f ( x 1 )  f ( x 2 )  f ( x 3 )  f ( x 4 )]
4
2
8
5. T1(1) =
4 T T
4 1
1
(1)
11
1
(1)
11

( 2)
0
4T
T
3
(1)
0
ba
ba
[f 0  2(f 1  f 2  f 3 )  f 4 ] 
[f 0  2f 2  f 4 ]
8
4


3
4
ba
[2f 0  4f1  4f 2  4f 3  2f 4  f 0  2f 2  f 4 ] =
12
ba
ba
[f 0  4f1  2f 2  4f 3  f 4 ]
[2f 0  4f1  4f 2  4f 3  2f 4  f 0  2f 2  f 4 ] =
3* 4
12
формула Симпсона (парабол)
=
4 2 T2(011)  T2(01) 16T1(1)  T1( 0 )


6. T2 =
42 1
15
ba
ba
16 *
[f 0  4f1  2f 2  4f 3  f 4 ] 
[f 0  4f 2  f 4 ]
12
6

15
ba
=
[8f 0  32f 1  16f 2  32f 3  8f 4  f 0  4f 2  f 4 ] 
90
ba
=
[7f 0  32f 1  12f 2  32f 3  7f 4 ] 90
формула Ньютона — Котеса
Задача: Известно, что
(0)
1
4
1 x
2
dx  π
0
Определить приближённо число π, проведя для указанного интеграла 4
итерации по Ромбергу.
Дополнение 1:
2 2
(b  ab  a 2 )
3
2
2
3[ x1  (b  a)  2(b  a) x1  x12 ] = 2 (b 2  ab  a 2 )
x12  [(b  a )  x1 ] 2 
6 x12  6(b  a) x1  3b 2  6ab  3a 2  2b 2  2ab  2a 2  0
6 x12  6(a  b) x1  b 2  4ab  a 2  0
86
x1 
6(b  a)  36(b 2  2ab  b 2 )  24b 2  96ab  24a 2

12
2
6(b  a)  12b 2  24ab  12a 2 6(a  b)  2 3(a  b)
=

12
12
3(a  b)  (b  a ) 3 a  b b  a 3


.
6
2
2 3
Так как x 1 и x 2 симметричен, то:
ab
3 ba
ab
3 ba
; x2 
,


2
3 2
2
3 2
b
ba a b
3 ba
ab
3 ba
a f (x)dx  2 [f ( 2  3 2 )  f ( 2  3 2 )] .
Дополнение 2. Изложим последовательность действий при решении
задач методом Ромберга:
1. В качестве первого приближения вычисляется значение площади
трапеции, основания которой проведены через границы промежутка
интегрирования. Полученное значение заносится в матрицу приближений
как:
hba
h
T0, 0  f (a )  f (b) .
2
2. Затем запускается цикл. На каждом его круге шаг уменьшается
вдвое. На первом обороте цикла вычисляется приближение по методу
трапеций из того условия, что интервалов интегрирования уже два.
Полученное более точное, приближение заносится в первую строку
нулевого столбца. На втором круге шаг уменьшается в четыре раза
относительно первоначального, и соответственно трапеций будет
просуммировано четыре. Новое приближение занесено во вторую строку.
И так далее, до тех пор, пока не будет выполнено условие остановки цикла.
В качестве условия остановки цикла в методе Ромберга используют
критерий разности двух последних приближений. В этом случае, если
разность по модулю окажется меньше заданной точности, то цикл
остановится и в качестве ответа будет выдано последнее приближение.
x1 
Sub Rombeg() 'начало программы
Dim Result As Double 'задание типа параметра результата
Dim T() As Double 'задание типа параметра
Dim D As Double 'задание типа параметра длины отрезка
Dim S As Double 'задание типа параметра суммы
Dim H As Double 'задание типа параметра расстояния
Dim X As Double 'задание типа параметра х
Dim M As Double 'задание типа параметра
Dim N As Integer 'задание типа параметра
87
Dim I As Integer 'задание типа параметра переменной в
цикле
Dim J As Integer 'задание типа параметра переменной в
цикле
A = InputBox("введите нижний предел") 'диалог запроса
нижнего предела
B = InputBox("введите верхний предел") 'диалог запроса
верхнего предела
K = InputBox(" введите число разбиений") 'диалог запроса
числа разбиений
ReDim T(1 To K + 1) 'объявление массива
D = B - A 'вычисление длины отрезка
T(1) = f(A) + f(B) / 2 'вычисление Т(1)
N = 1 'присвоение N значение 1
I = 1 'присвоение I значение 1
Do 'начало цикла
S = 0 'присвоение сумме значение 0
N = 2 * N 'увеличение N в двое
H = D / N 'вычисление расстояния
J = 1 'присвоение J значение 1
Do 'начало цикла
X = A + J * H 'вычисление х координаты
S = S + f(X) 'вычисление суммы
J = J + 2 'увеличение переменной на 2
Loop Until Not J <= N 'конец цикла с условием
T(I + 1) = (2 * S / N + T(I)) / 2 'вычисление
последующего Т
M = 1 'присвоение M значение 1
J = I 'присвоение J значение I
Do 'начало цикла
M = 4 * M 'увеличение M в 4 раза
T(J) = T(J + 1) + (T(J + 1) - T(J)) / (M - 1)
'вычисление Т(J)
J = J - 1 'уменьшение J на 1
Loop Until Not J >= 1 'конец цикла с условием
I = I + 1 'увеличение I на 1
Loop Until Not I <= K 'конец цикла с условием
Result = T(1) * D 'вычисление результата
c = MsgBox(Result, 0, "Результат") 'выведение сообщения на
экран
End Sub 'конец программы
Function f(X) 'объявление ф-ии
f = 4 / (1 + X * X) 'ф-ия задана
End Function 'конец объявления
уравнением
6.4. ВЫЧИСЛЕНИЕ ИНТЕГРАЛА ПО ФОРМУЛЕ
ПРЯМОУГОЛЬНИКОВ
88
Sub
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Pryamougolnik() 'начало программы, название программы
x1 As Single 'задание типа параметра х1
x2 As Single 'задание типа параметра х2
h As Single 'звдвние типа параметра шага
a As Single 'задание типа нижнего предела
b As Single 'задание типа верхнего предела
k As Integer 'задание типа числа разбиений
s As Single 'задание типа площади
a = CSng(InputBox("Введите нижний предел"))
запроса размера нижнего педела
b = CSng(InputBox("Введите верхний предел"))
запроса размера верхнего предела
k = CSng(InputBox("Введите число разбиений"))
запроса числа разбиений
h = (b - a) / k 'вычисление длины шага
x1 = a - h / 2 'Вычисление параметра х1
'диалог
'диалог
'диалог
Do 'начало цикла
x2 = x1 + h 'вычисление значения х2
s = s + h * func(x2) 'вычисление площади
x1 = x2 'переприсвоение значений
Loop While x2 < b 'конец цикла и его условие
k = MsgBox(s, 0, "Результат") 'вывод сообщения на экран
Worksheets(1).Cells(1, 1).Value = "Результат" 'вывод
слова "Результат" на лист 1
Worksheets(1).Cells(1, 2).Formula = s 'вывод искомого
значения на лист1, ячейку (1,2)
End Sub 'конец программы
6.5 ВЫЧИСЛЕНИЕ ИНТЕГРАЛА ПО ФОРМУЛЕ ТРАПЕЦИЙ
b
 f ( x )dx 
a
Sub
Dim
Dim
Dim
Dim
Dim
Dim
Dim
a
запроса
b
запроса
n 1
ba
[f 0  2 f i  f n ]
2n
i 1
Trap() 'начало программы
a As Single 'Задание типа нижнего предела
b As Single 'Задание типа верхнего предела
n As Integer 'зажание типа числа отрезков
h As Single 'задание типа числа отрезков
i As Integer 'задание типа переменной в цикле
Integ As Single 'задание типа значения интеграла
x0 As Single 'задание типа х0
= CSng(InputBox("Введите
нижнего предела
= CSng(InputBox("Введите
верхнего предепа
нижний
предел"))
'диалог
верхний
предел"))
'диалог
89
n = CSng(InputBox("Введите число разбиений")) 'диалог
запроса числа отрезков
h = (b - a) / n 'вычисление длины шага
Integ = 0 'присвоение интегралу значение 0
x0 = a + h 'вычисление х0
For i = 1 To n - 1 'начало цикла
Integ = Integ + func(x0) 'вычисление интеграла
x0 = x0 + h 'вычисление х0
Next i 'конец цыкла
Integ = h / 2 * (func(a) + 2 * Integ + func(b))
'вычисление интеграла
Worksheets(1).Cells(1, 1).Value = "Значение интеграла"
'вывод на лист 1 "значение интеграла"
Worksheets(1).Cells(2, 1).Formula = Integ 'вывод на лист
1 значение вычисленного интеграла
MsgBox Integ, vbExclamation, "интеграл равен" 'вывод
сообщения
End Sub 'конец программы
Function func(x) As Single 'объявление функции
func = x ^ 3 'функция получена из ур-я
End Function 'конец объявления
6.6. ВЫЧИСЛЕНИЕ ИНТЕГРАЛА МЕТОДОМ СИМПСОНА
b
S   f ( x )dx  S n  R n , n = 2m частей: x 0  a , x 1  a  h,..., x n  b с шагом
a
h
ba
. Пусть y i  f ( x i ) , тогда S n  [ y 0  4 y1  2 y 2  4 y 3  ...  y 2 m ] ,
3
n
5 2m
h
R n    y IV ( k ),  k  [ x k 1 , x k ]
90 k 1
Затем количество точек разбиения удваивается и производится оценка
точности вычислений:
| S  Sn |
R n  2n
15
Если Rn  E1 , то количество точек разбиения удваивается. Значения суммы
2( y1  y 2  ...  y 2 m1 ) сохраняются, поэтому для вычисления интеграла при
удвоении количества точек разбиения требуется вычислять значения
yi лишь в новых точках разбиения.
b
h
2h M 1
4h M
f
(
x
)
dx

[
f
(
a
)

f
(
b
)

f
(
x
)

f ( x 2 k 1 )]
 2k 3 
a
3
3 k 1
k 1
где x k  a  kh , где k = 0, 1, 2, …, 2M; x 0  a , x 2 M  b .
h
Sub Симпсон ()
90
h = (b-a) / (2 * m)
S1 = 0
S2 = 0
For k =1 to m
x = a + h (2 * k - 1)
S1 = S1 + funk (x)
next k
for k =1 to m -1
x = a + h * 2 * k
S2 = S2 + funk (x)
next k
S = h * (funk (a) + funk (b) + 4 * S1 + 2 * S2) / 3
K = MsgBox (S, 1,”Интеграл по Симпсону = ”)
end Sub
Function funk (x)
funk k = exp (x)
end Function
6.7 ВЫЧИСЛЕНИЕ ИНТЕГРАЛА МЕТОДОМ ГАУССА
b
ba n
f
(
x
)
dx

 A i f (t i )  R n
a
2 i 1
ba ba
ti 

x i Узлы xi — корни множеств Лежандра степени n.
2
2
b  a b  a 2n
Rn 
(
) max | f ( 2 n ) ( x ) |, x  [a , b]
2.5 n 3n
Так как концы [a, b] не входят в число узлов xi , то интегрирование по
Гауссу удобно для вычисления несобственных интегралов. Используем
восемь узлов (n = b);
x 1   x 8  0.96028986
4
x3 4
1
2
A 1  A 8  0.10122854
0 x dx  3 |0  21 3
x 2   x 7  0.79666648
A 2  A 7  0.22238103
x 3   x 6  0.52553242
A 3  A 6  0.31370664
x 4   x 5  0.18343464
A 4  A 5  0.36268378
Sub Гаусс_8 узлов ()
Dim x (1 to 8) As Single, A(1 to 8) As Single
x (1) = -0.96028986
91
x (2) = -0.96028986
x (3) = -0.96028986
x (4) = -0.96028986
A(1) = 0.10122854
A(2) = 0.10122854
A(3) = 0.10122854
A(4) = 0.10122854
A1 = .5 * (A + B) : A2 = .5 * (B - A) : G = 0
for i = 1 to 4
x = A1 + A2 * x (i)
call funk (x, y)
G = G + A(i) * y
next i
for i = 1 to 4
x = A1 – A2 * x (5 - i)
call funk (x, y)
G = G + A (5 - i) * y
next i
G = G * A2
i = MsgBox (G, 1, “Интеграл по Гауссу = ”)
end Sub
Sub funk (x, y)
y = x * x
end funk
Отметим, что точна для полиномов до (2n - 1) степени, то есть до 15-й
степени.
ВАРИАНТЫ ЗАДАНИЙ
Задание 1. Метод вычисления интеграла выбирает преподаватель.
Рекомендуется вычислить интеграл несколькими методами и сравнить
результаты вычислений. Оцените допущенную погрешность. Вычисления
производить с четырьмя десятичными знаками.
№
Интеграл
Первообразная функция
2
2
4x  3
x
 ln 1  x 
dx
1

3
2(1  x ) 2
 0 , 5 (1 - x)
1.5
x
1
arctg( x 2 )
2
1, 2 1  x 4 dx
2
0.9
2x
1 1 x2
dx
3
ln

4
0 , 8 1  x
2 1 x2
3
dx
x
ln
4
0.1(1  x 2 )x
1  x2
92
1  2x
dx
x2
2.5
5
14  4 x
2x
 (2  x )
0
2 .8
x e
3
6
x
dx
e x (x 3  3x 2  6x  6)
0
sin 3 x
0.5 cos x dx
/4
cos3x
dx

2
  / 4 cos x
1.2
tgx
0.5 1  2tg 2 xdx
1.2
sin x
0.4 1  3sin 2 x dx
/2
x  sin x
0 1  cos x dx
2. 0
1
1.2 x ln x dx
1.5
7
8
9
10
11
12
 0.5sin 2 x  ln cos x
4sinx - 3ln(tg(
 x
 ))
4 2
0.5 ln(cos 2 x  2 sin 2 x)

 3

1
arcsin 
cos x 
3
 2

x
xtg
2
ln(ln x )
Задание 2. Разделив отрезок интегрирования на n равных частей,
вычислить приближенное значение определенного интеграла:
-методом прямоугольников;
-методом трапеций;
- по формуле Симпсона;
- методом Ромберга.
Во всех трех задачах оценить допущенную погрешность. Вычисления
производить с четырьмя десятичными знаками.
№
Интеграл
n
1
1
dx
10
0 1  x 3
2
2
dx
12
0 1  x 3
2
3
dx
8
1 1  x 3
2
4
2
10
 2  x dx
0
5
2

2  x 2 dx
12
1
93
6
1

2  x 2 dx
8
8  x 2 dx
10
8  x 2 dx
12
x 2  3dx
8
0
7
1

1
8
2

1
9
1

1
ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ
1. Сформулируйте задачу численного интегрирования
2. Задача численного интегрирования решена методом трапеций.
Предложите и обоснуйте пути повышения точности (погрешности)
расчетов.
3. Сравните метод трапеций, метод Симпсона и метод Ромберга.
4. Метод средних, левых и правых прямоугольников. Что можно
сказать об их погрешности, трудоемкости?
94
Download