
- •1. Этапы подготовки и решения задач на эвм. Понятие алгоритма.
- •2. Элементарные базовые управляющие структуры
- •3. Состав и работа системы программирования Турбо Паскаль
- •4. Алфавит языка
- •5. Простейшие конструкции и типы данных
- •6. Структура программ на Паскале
- •7. Ввод и вывод данных
- •8. Программирование линейных структур в Паскале
- •Var b,y,z: real;
- •Var day: integer;
- •Var X,y: real; к: integer;
- •11. Программирование циклов с неизвестным числом повторений
- •Var X: integer;
- •Var X,a,p: real; k:integer;
- •12. Программирование вложенных циклов. Массивы.
- •Var amin:real; I, j : integer; a:array[1..100] of real;
- •13. Процедуры и функции в Паскале
- •Var a,b,c,s1,s2,s3,k,r,z:real;
- •Var c,n,m,l: integer;
- •Var p,I: integer;
- •14. Записи в Паскале.
- •15. Работа с файлами в Паскале
- •I:byte;
- •16. Программирование в графическом режиме
- •17. Анимация изображений в Паскале
- •X,y,dy,dx,time,delta,radius,Gd,Gm: integer;
- •18. Построение графика аналитически заданной функции
- •Xn, xk, X, y, Ymin, Ymax, dx:real;
- •19. Численные методы вычисления определённого интеграла
- •I, n: integer;
- •20. Численные методы решения нелинейных уравнений. Общие принципы.
- •22. Численные методы решения нелинейных уравнений. Метод Ньютона (метод касательных).
- •23. Численные методы решения нелинейных уравнений. Метод хорд (метод ложного положения).
- •24. Численные методы решения обыкновенных дифференциальных уравнений. Общие принципы.
- •25. Численные методы решения обыкновенных дифференциальных уравнений. Метод Эйлера.
- •Xn,xk,yn,h,X,y:real;
- •I:integer;
- •26. Численные методы решения обыкновенных дифференциальных уравнений. Модифицированный метод Эйлера.
- •Xn,xk,yn,yw,h:real;
- •I,n:integer;
- •X,y:array [1..20] of real;
- •27. Численные методы решения обыкновенных дифференциальных уравнений. Метод Рунге-Кутта.
- •Xn,xk,yn,h,k0,k1,k2,k3:real;
- •I,n:integer;
- •X,y:array [1..20] of real;
22. Численные методы решения нелинейных уравнений. Метод Ньютона (метод касательных).
В отличие от метода половинного деления, для определения интервала, в котором заключён корень, не требуется находить значения функции с противоположными знаками. Вместо интерполяции по двум значениям функции, в методе Ньютона делается экстраполяция с помощью касательной к кривой в данной точке. В основе метода лежит разложение функции f(x) в ряд Тейлора:
Члены ряда, содержащие h во второй и более высоких степенях, отбрасываются; используется соотношение xn+h=xn+1. Предполагается, что переход от xn к xn+1 приближает значение функции к нулю так, что f(xn+h)=0. Тогда xn+1=xn-f(xn)/f'(xn).
Значение xn+1 соответствует точке, в которой касательная к кривой в точке xn пересекает ось x. Так как кривая f(x) отлична от прямой, то значение функции f(xn+1) не будет в точности равно нулю. Поэтому вся процедура пoвторяется, причём вместо xn используется xn+1. Счет прекращается, когда разница между xn и xn+1 будет меньше или равна числу ε, т.е. |xn-xn+1|=<ε. На рисунке процесс решения уравнения методом Ньютона показан графически.
Пример: Приведём фрагменты текста программы, которая решает задачу из предыдущего примера (раздел 21) методом касательных. Ввод и вывод результатов подробно разобран выше.
Program Kasat;
Uses Crt, Printer;
Var
a,b,t,x,eps:real;
Function f(x:real):real;
begin
{Здесь приводим выражение для вычисления функции }
f:=x*x*x+x*x+x+1;
end;
Function f1(x:real):real;
begin
{ Здесь приводим выражение для производной функции }
f:=3*x*x+2*x+1;
end;
Begin
ClrScr;
Writeln(' Решение уравнения методом касательных');
{ Ввод исходных данных }
a:=-2; b:=1; eps:=0.001;
{ Начинаем расчет }
x:=a;
Repeat
t:=f(x)/f1(x);
x:=x-t;
Until abs(t)<=eps;
Writeln(' Уравнение имеет корень x = ', x:10:8);
Readln;
End.
Метод Ньютона требует меньшего числа повторений, чем метод половинного деления. Недостатки метода – необходимость дифференцирования функции f(x), и f(x) должно быть не равно нулю.
23. Численные методы решения нелинейных уравнений. Метод хорд (метод ложного положения).
В основе метода лежит линейная интерполяция по двум значениям функции f(x), имеющим противоположные знаки. Через точки, соединяющие значения функции f(a) и f(b) на концах отрезка [a,b], проводят прямую, которая пересекает ось x в точке
Значение функции f(x) сравнивается со значениями функций f(a) и f(b) и в дальнейшем используется вместо того из них, с которым оно совпадает по знаку. Если значение f(x) недостаточно близко к нулю, то вся процедура повторяется до тех пор, пока не будет достигнута необходимая степень сходимости ε. На рисунке процесс решения показан графически.
Пример: Приведём фрагменты текста программы, которая решает задачу из предыдущего примера (раздел 22) методом хорд.
Program Horda;
Uses Crt;
Var
a,b,t,x,eps:real;
Function f(x:real):real;
begin
{Здесь приводим выражение для вычисления функции }
f:=x*x*x+x*x+x+1;
end;
Begin
ClrScr;
Writeln(' Решение уравнения методом хорд');
{ Ввод исходных данных }
a:=-2; b:=1; eps:=0.001;
{ Начинаем расчет }
Repeat
x:=a-f(a)*(b-a)/(f(b)-f(a));
if f(a)*f(x)<=0 then b:=x
else a:=x;
Until abs(f(x))<=eps;
Writeln(' Уравнение имеет корень x = ', x:10:8);
Readln;
End.