![]() |
|
сделать стартовой | добавить в избранное |
![]() |
Метод касательных. Решения нелинейных уравнений. Паскаль 7.0 |
Введение Процедура подготовки и решения задачи на ЭВМ достаточно сложный и трудоемкий процесс, состоящий из следующих этапов: Постановка задачи (задача, которую предстоит решать на ЭВМ, формулируется пользователем или получается им в виде задания). Математическая формулировка задачи. Разработка алгоритма решения задачи. Написание программы на языке программирования. Подготовка исходных данных. Ввод программы и исходных данных в ЭВМ. Отладка программы. Тестирование программы. Решение задачи на ЭВМ и обработка результатов. В настоящей курсовой работе условие задачи дано в математической формулировке, поэтому необходимость в выполнении этапов 1 и 2 отпадает и сразу можно приступить к разработке алгоритма решения задачи на ЭВМ. Под алгоритмом понимается последовательность арифметических и логических действий над числовыми значениями переменных, приводящих к вычислению результата решения задачи при изменении исходных данных в достаточно широких пределах. Таким образом, при разработке алгоритма решения задачи математическая формулировка преобразуется в процедуру решения, представляющую собой последовательность арифметических действий и логических связей между ними. При этом алгоритм обладает следующими свойствами: детерминированностью, означающей, что применение алгоритма к одним и тем же исходным данным должно приводить к одному и том уже результату; массовостью, позволяющей получать результат при различных исходных данных; результативностью, обеспечивающей получение результата через конечное число шагов. Наиболее наглядным способом описания алгоритмов является описание его в виде схем. При этом алгоритм представляется последовательность блоков, выполняющих определенные функции, и связей между ними. Внутри блоков указывается информация, характеризующая выполняемые ими функции. Блоки схемы имеют сквозную нумерацию. Конфигурация и размеры блоков, а также порядок построения схем определяются ГОСТ 19.002-80 и ГОСТ 19.003-80. На этапе 4 составляется программа на языке Турбо-Паскаль. При описании программы необходимо использовать характерные приемы программирования и учитывать специфику языка. В качестве языка программирования выбран язык Паскаль ввиду его наглядности и облегченного понимания для начинающих программистов, а также возможности в дальнейшем использовать для решения более трудных задач. Этапы алгоритмизации и программирования являются наиболее трудоемкими, поэтому им уделяется большое внимание. В процессе выполнения курсовой работы студент готовит исходные данные, вводит программу и исходные данные. При работе ввод программы и исходных данных осуществляется с клавиатуры дисплея. Отладка программы состоит в обнаружении и исправлении ошибок, допущенных на всех этапах подготовки задач к решению на ПЭВМ. Синтаксис ошибки обнаруживается компилятором, который выдает сообщение, указывающее место и тип ошибки. Обнаружение семантических ошибок осуществляется на этапе тестирования программы, в котором проверяется правильность выполнения программы на упрощенном варианте исходных данных или с помощью контрольных точек или в режиме пошагового исполнения.
Задание при обработке на ЭВМ проходит ряд шагов: компиляцию, редактирование (компоновку) и выполнение. Обработка результатов решения задачи осуществляется с помощью ЭВМ. Выводимые результаты оформлены в виде, удобном для восприятия. Краткое описание сущности метода касательных (метода секущих Ньютона) Пусть на отрезке отделен корень с уравнения f (x) = 0 и f — функция непрерывна на отрезке a; b[ существуют отличные от нуля производные f’ и f”. Так как f’(x) № 0, то запишем уравнение f (x) = 0 в виде: x = x – (f (x) / f’(x)) (1). Решая его методом итераций, можем записать: x 1 = x – (f (x ) / f’(x )) (2). Если на отрезке f’(x) f“(x) > 0, то нулевое приближение выбираем x0 = a. Рассмотрим геометрический смысл метода. Рассмотрим график функции y = f (x). Пусть для определенности f‘(x) > 0 и f“(x) > 0. Проведем касательную к графику функции в точке B (b, f (b)). Ее уравнение будет иметь вид: y = f (b) f’(b) (x – b). Полагая в уравнении y = 0 и учитывая, что f’ (x) № 0, решаем его относительно x. Получим: x = b – (f (b) / f‘(b)). Нашли абсциссу x1 точки c1 пересечения касательной с осью ox: x1 = b – (f (b) – f’ (b)). Проведем касательную к графику функции в точке b1 (x1; f (x1)). Найдем абсциссу x2 точки с2 пересечения касательной с осью оx: x2 = x1 – (f (x1) / (f’ (x1)). Вообще: xk 1 = xk – (f (xk) / f’(xk)) (3). Таким образом, формула (3) дает последовательные приближения (xk) корня, получаемые из уравнения касательной, проведенной к графику функции в точке bk (xk; f (xk0). Метод уточнения корня c уравнения f (x) = 0 с помощью формулы (3) называется методом касательной или методом Ньютона. Геометрический смысл метода касательных состоит в замене дуги y = f (x) касательной, одной к одной из крайних точек. Начальное приближение x0 = a или x0 = b брать таким, чтобы вся последовательность приближения хk принадлежала интервалу ]a;b[. В случае существования производных f’, f”, сохраняющих свои знаки в интервале, за х0 берется тот конец отрезка , для которого выполняется условие f’(х0) f (х0) > 0. Для оценки приближения используется общая формула: c-xk-1 Ј f (xk 1) / m , где m = mi f’(x) на отрезке . На практике проще пользоваться другим правилом. Если на отрезке выполняется условие 0 &l ; m &l ; f (x) и e — заданная точность решения, то неравенство xk 1 - xk Јe влечет выполнение неравенства c-xk-1 Јe. В этом случае процесс последовательного приближения продолжают до тех пор, пока не выполнится неравенство: c-xk-1 Јe. Решение нелинейного уравнения аналитически Определим корни уравнения х3 0,1х2 0,4х – 1,2 = 0 аналитически. Находим: f (x) = х3 0,1х2 0,4х – 1,2. f‘ (x) = 3х2 0,1х 0,4. f (–1) = –2,5 &l ; 0 f (0) = –1,2 &l ; 0 f ( 1) = 0,3 > 0. x - Ґ -1 0 1 Ґ sig f (x) - - - Следовательно, уравнение имеет действительный корень, лежащий в промежутке . Приведем уравнение к виду x = j (x) так, чтобы j‘ (x) &l ;1 при 0 Ј x Ј 1. Так как max f’ (x) = f’( 1) = 3 0,1 0,4 = 3,5, то можно взять R = 2. Тогда j (x) = x – (f (x) / R) = x – 0,5 х3 – 0,05 х2 – 0,2 х 0,6 = –0,5 х3 – 0,05 х2 0,8 х 0,6. Пусть х0 = 0, тогда х 1 = j (х ). Вычисления расположим в таблице х х 2 х 3 j (х ) f (x) 1 1 1 1 0,85 -0,17363 2 0,85 0,7225 0,614125 0,9368125 0,08465 3 0,9368125 0,87761766 0,822163194 0,89448752 -0,04651 4 0,89448752 0,800107923 0,715686552 0,917741344 0,024288 5 0,917741344 0,842249174 0,772966889 0,905597172 -0,01306 6 0,905597172 0,820106238 0,74268589 0,912129481 0,006923 7 0,912129481 0,83198019 0,758873659 0,908667746 -0,0037 8 0,908667746 0,825677072 0,750266124 0,910517281 0,001968 9 0,910517281 0,829041719 0,754856812 0,909533333 -0,00105 10 0,909533333 0,827250884 0,752412253 0,910057995 0,000559 11 0,910057995 0,828205555 0,753715087 0,909778575 -0,0003 12 0,909778575 0,827697055 0,753021048 0,909927483 0,000159 13 0,909927483 0,827968025 0,753390861 0,909848155 -8,5E-05 14 0,909848155 0,827823665 0,753193834 0,909890424 4,5E-05 15 0,909890424 0,827900583 0,753298812 0,909867904 -2,4E-05 16 0,909867904 0,827859602 0,753242881 0,909879902 1,28E-05 17 0,909879902 0,827881437 0,753272681 0,90987351 -6,8E-06 18 0,90987351 0,827869803 0,753256804 0,909876916 3,63E-06 19 0,909876916 0,827876002 0,753265263 0,909875101 -1,9E-06 20 0,909875101 0,827872699 0,753260756 0,909876068 1,03E-06 График функции y = х3 0,1х2 0,4х – 1,2 .
Блок схема программы Программа на языке PASCAL 7.0 program me od kasa el;{Название программы} uses Cr ; {Модуль дисплейных функций} var {Блок описаний переменных} x ,x 1,a,b,c,mx,y0,x0: real; fu c io f1(x1: Real): Real; {Основная функция} begi f1:= x1 x1 x1 (-0.5)-0.05 x1 x1 0.8 x1 0.6; e d; fu c io f2(x4:Real): Real; {Производная от основной функции} begi f2:= x4 x4 x4 0.5 x4 x4 0.1 x4 x4 0.4 x4–1.2; e d; begi {Начало основного тела программы} Clrscr; {Очистка экрана перед выполнением программы} a:=0;b:=1;c:=0.00000001; Wri el (' От A=',a,' до B=',b); {Вывод на экран} Wri el (' Погрешность с=',c); Readl ; {Ожидание нажатия клавиши E er} x :=b; x 1:= f1(x ); y0:=f2(b); while ABS (y0)>c do {Проверка по точности вычисления корня} begi {Тело цикла} x :=x 1; x 1:=f1(x ); y0:= f2(x 1); {Печать промежуточного результата} Wri el ('x =',x ,' x 1=',x 1,' f(x 1)=',y0); Readl ; {Ожидание нажатия клавиши E er} e d; {Конец тела цикла} Wri el ('Конечные значения'); {Печать полученного результата} Wri el (' x 1=',x 1,' f(x 1)=',y0); Readl ; {Ожидание нажатия клавиши E er} e d. {Конец основного тела программы} Результаты выполнения программы От A= 0.0000000000E 00 до B= 1.0000000000E 00 Погрешность с= 1.0000000000E-08 От A= 0.0000000000E 00 до B= 1.0000000000E 00 Погрешность с= 1.0000000000E-08 x = 8.5000000000E-01 x 1= 9.3681250000E-01 f(x 1)= 8.4649960270E-02 x = 9.3681250000E-01 x 1= 8.9448751986E-01 f(x 1)=-4.6507647892E-02 x = 8.9448751986E-01 x 1= 9.1774134381E-01 f(x 1)= 2.4288343840E-02 x = 9.1774134381E-01 x 1= 9.0559717189E-01 f(x 1)=-1.3064617920E-02 x = 9.0559717189E-01 x 1= 9.1212948085E-01 f(x 1)= 6.9234699658E-03 x = 9.1212948085E-01 x 1= 9.0866774587E-01 f(x 1)=-3.6990702320E-03 x = 9.0866774587E-01 x 1= 9.1051728099E-01 f(x 1)= 1.9678960780E-03 x = 9.1051728099E-01 x 1= 9.0953333295E-01 f(x 1)=-1.0493249720E-03 x = 9.0953333295E-01 x 1= 9.1005799543E-01 f(x 1)= 5.5884091853E-04 x = 9.1005799543E-01 x 1= 9.0977857497E-01 f(x 1)=-2.9781681224E-04 x = 9.0977857497E-01 x 1= 9.0992748338E-01 f(x 1)= 1.5865717614E-04 x = 9.0992748338E-01 x 1= 9.0984815480E-01 f(x 1)=-8.4537703515E-05 x = 9.0984815480E-01 x 1= 9.0989042365E-01 f(x 1)= 4.5040009354E-05 x = 9.0989042365E-01 x 1= 9.0986790364E-01 f(x 1)=-2.3997676180E-05 x = 9.0986790364E-01 x 1= 9.0987990248E-01 f(x 1)= 1.2785800209E-05 x = 9.0987990248E-01 x 1= 9.0987350958E-01 f(x 1)=-6.8122881203E-06 x = 9.0987350958E-01 x 1= 9.0987691573E-01 f(x 1)= 3.6295678001E-06 x = 9.0987691573E-01 x 1= 9.0987510095E-01 f(x 1)=-1.9338276616E-06 x = 9.0987510095E-01 x 1= 9.0987606786E-01 f(x 1)= 1.0303429008E-06 x = 9.0987606786E-01 x 1= 9.0987555269E-01 f(x 1)=-5.4896190704E-07 x = 9.0987555269E-01 x 1= 9.0987582717E-01 f(x 1)= 2.9248803912E-07 x = 9.0987582717E-01 x 1= 9.0987568093E-01 f(x 1)=-1.5583464119E-07 x = 9.0987568093E-01 x 1= 9.0987575885E-01 f(x 1)= 8.3031409304E-08 x = 9.0987575885E-01 x 1= 9.0987571733E-01 f(x 1)=-4.4236003305E-08 x = 9.0987571733E-01 x 1= 9.0987573945E-01 f(x 1)= 2.3572283681E-08 x = 9.0987573945E-01 x 1= 9.0987572766E-01 f(x 1)=-1.2558302842E-08 x = 9.0
В частности видно, что в нашем случае после кратковременного выбега итерационного процесса он приобретает быстро сходящийся характер. Рис. 9.25. Иллюстрация итераций при решении нелинейного уравнения методом Ньютона А теперь рассмотрим вычисление длины дуги, заданной произвольным выражением, например 2-х^3 в интервале изменения х от 0 до 2. Для этого исполним команду (вызов подпакета опущен, поскольку был выполнен ранее): > ArcLengthTutor(2-х^3, х=0..2); Интерактивное окно для этого примера представлено на рис. 9.26. График дает представление исходной функции и функции, описывающей изменение значения длины дуги в заданном интервале изменения х. Кроме того выводится выражение для длины дуги, вычисленное значение длины дуги на заданном интервале и вид команды для вычисления длины дуги в командном режиме (внизу окна). Рис. 9.26. Иллюстрация к вычислению длины дуги 9.6.6. Подпакет вычислений Precalculus Пакет вычислений Precalculus служит для визуализации таких операций, как вычисление полиномов, нахождение пределов функций, решение систем неравенств, представление функций и др
1. Решение систем нелинейных алгебраических уравнений методом Ньютона
2. Итерационные методы решения систем нелинейных уравнений
3. РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ ПЯТИТОЧЕЧНЫМ МЕТОДОМ АДАМСА – БАШФОРТА
4. РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ ПЯТИТОЧЕЧНЫМ МЕТОДОМ АДАМСА – БАШФОРТА
5. Автоматизация решения систем линейных алгебраических уравнений
9. Решение системы нелинейных уравнений
10. Разработка программы для решения систем линейных уравнений
11. Решение одного нелинейного уравнения
12. Решение систем дифференциальных уравнений при помощи неявной схемы Адамса 3-го порядка
14. Метод Гаусса для решения систем линейных уравнений
15. Решение смешанной задачи для уравнения
16. Решения смешанной задачи для уравнения гиперболического типа методом сеток
17. Численное решение системы линейных алгебраических уравнений методом Гаусса
18. Итерационные методы решения системы линейных алгебраических уравнений
19. Метод прогонки решения систем с трехдиагональными матрицами коэффициентов
20. Нахождение корней уравнения методом Ньютона (ЛИСП-реализация)
21. Метод касательных (метод Ньютона)
25. Решение уравнений, неравенств, систем с параметром (алгебра и начала анализа)
26. Графическое решение уравнений, неравенств, систем с параметром
27. Решение произвольных систем линейных уравнений
28. 10 задач с решениями программированием на Паскале
29. Построение решения задачи Гурса для телеграфного уравнения методом Римана
30. Алгебраическое и графическое решение уравнений, содержащих модуль
31. Существование решения дифференциального уравнения и последовательные приближения
32. О преобразовании дифференциальных систем уравнений в случае сингулярных пучков матриц
33. Решение дифференциальных уравнений 1 порядка методом Эйлера
34. Определение точного коэффициента электропроводности из точного решения кинетического уравнения
35. Применение графиков в решении уравнений
36. Вычисление корней нелинейного уравнения
37. Приближённые методы решения алгебраического уравнения
41. Решение иррациональных уравнений
42. Нестандартные методы решения тригонометрических уравнений: графический и функциональный
43. Метод решения уравнений Ньютона - Рафсона
45. Дифференциальные уравнения движения точки. Решение задач динамики точки
46. Применение графиков в решении уравнений
47. Методы решения уравнений, содержащих параметр
48. Гипотетическое построение систем уравнений полевой теории стационарных явлений электромагнетизма
50. Поиск решений системы линейных уравнений методом Гаусса
52. Решение дифференциальных уравнений в среде MathCAD
53. Решение обыкновенных дифференциальных уравнений
58. Алгоритм решения Диофантовых уравнений
59. Графическое решение уравнений
60. Изучение теоремы Безу для решения уравнений n-й степени при n>2
61. Метод замены неизвестного при решении алгебраических уравнений
62. Решение дифференциального уравнения первого порядка
63. Решение дифференциальных уравнений
64. Решение линейной системы уравнений с тремя неизвестными
65. Решение параболических уравнений
66. Решение уравнений с параметрами
67. Формулы, возможно неизвестные, для решений уравнения Пифагора
68. Методы решения алгебраических уравнений
69. 10 способов решения квадратных уравнений
74. Модули и объекты в языке Турбо Паскаль 7.0
77. Корень n-ой степени и его свойства. Иррациональные уравнения. Степень с рациональными показателем
78. "Уравнения математической физики", читаемым авторов на факультете "Прикладная математика" в МАИ
79. Использование дифференциальных уравнений в частных производных для моделирования реальных процессов
80. Синтез оптимальных уравнений
81. Линейные системы дифференциальных уравнений с периодическими коэффициентами
82. Механические колебания в дифференциальных уравнениях
84. Волны в упругой среде. Волновое уравнение
85. Уравнения Максвелла. Граничные условия
89. "Роковой вопрос" и современный мир. (Паскаль и Достоевский как стратегические мыслители)
90. Системы линейных уравнений
91. Дифференциальные уравнения
92. Рациональные уравнения и неравенства
93. Дифференциальные уравнения
94. Интегрирование линейного дифференциального уравнения с помощью степенных рядов
95. К решению нелинейных вариационных задач
96. Об алгебраических уравнениях высших степеней