--PAGE_BREAK--A, B, H, Y MAX, Y MIN, X, MY: REAL;
BEGIN
WRITELN (¢ ВВЕДИТЕ A, B, N¢);
READ (A, B, N);
Y MAX = -1E4; YMIN:=+1E4;
H: = (B-A)/N;
FOR I:=1 TO 71 DO C [ I ]: = ¢ ¢;
X: = A;
FOR I: = 1 TO N DO
BEGIN
Y[ I ]: = SIN(X)/X;
IF Y [I ] > Y MAX THEN Y MAX: = Y [I ];
IF Y [I ]
X: = X+H;
END;
MY:=ROUND((YMAX-YMIN)/W+0.5);
K:=ROUND (ABS(YMIN)/MY+0.5)+M;
C[K]:= ¢I ¢;
WRITELN (¢ГРАФИК ФУНКЦИИ Y=SIN(X)/X ¢);
WRITELN (¢ …………………………………¢);
FOR I:=1 TO N DO
BEGIN
L:=ROUND ((Y[ I ]- YMIN)/MY+0.5)+M;
C[ L]: = ¢ *¢;
FOR J: = 1 TO 71 DO
WRITE (C[J]);
WRITELN (¢ ¢);
C[ L]: = ¢ ¢;
IF K =L THEN C [ L ]:= ¢I¢;
END;
END.
ввод:
a=0.1
b=2.5
n=40
2. Численные методы решения задач
2.1. Решение алгебраических и трансцендентных уравнений
К линейным уравнениям относятся алгебраические и трансцендентные уравнения. Уравнение называется алгебраическим, если функция f(x) представляет собой многочлен, какой-либо степени.
f(x)=a0xm+a1xm-1+…+am-1x+am=0
m3
Если же в функцию f(x) входят одновременно разные элементарные функции, то такое уравнение называется трансцендентным.
f(x)=sinx+lnx=0
Такие уравнения решаются приближенными методами. Решение разбивается на 2 этапа:
1). Отделение корней, т.е. нахождение достаточно малой области, содержащий один корень.
2). Уточнение корня заданной степенью точности.
Здесь известны следующие методы итераций, ньютона, хорды касательной половинного деления и т.д.
Отделение корней.
Пусть решается уравнение f(x)=sinx+lnx=0. Отделение корней можно сделать 2-мя способами:
графическим и алгебраическим.
В графическом методе на координатной плоскости строится график функции и находится область пересечения функции с осью Х. В нашем случае удобно функцию разделить на 2 функции и на координатной плоскости построить оба графика, и найти область их пересечения.
sinx=-lnx
f1(x)=sinx
f2(x)=-lnx
x [0;1]
В алгебраическом методе отделения корней с некоторым шагом h просматривают достаточно большую область существования корня уравнений.
xi+1=xi+h
Из математики известно, что непрерывная функция на небольшом отрезке содержит корень уравнения, если на концах отрезках функция f(x) имеет разные знаки.
Уточнение корня по методу половинного деления.
Пусть решается уравнение f(x)=0 и функция f(x) непрерывна на отрезке [a,b] =[x1,x2].
Отрезок [a,b] содержит корень, т.е. f(a)*f(b)
Делим отрезок [a,b] пополам, т.е. выбираем начальное уравнение корня x=, если f(x)=0, то х является корнем уравнения, если f(x) не равно нулю, то выбираем тот из отрезков [a,x] или [x,b], на концах которого функция f(x) имеет противоположные знаки. Выбранный отрезок снова делим пополам и проводим те же рассуждения. Процесс деления отрезков пополам продолжается до тех пор, пока длина отрезка на концах которого функция имеет разные знаки не станет
[b-a]
Схема реализации алгоритма имеет вид: [a,b]=[x1,x2] e=10-5
Уточнение корня по методу Хорд
По методу Хорд выбирается произвольное начальное значение корня из отрезка [a,b] на котором корень существует xÎ[a,b]=[x1,x2].
Затем по методу Хорд корень уточняется. Найденное новое значение корня подставляется в правую часть уравнения и т.д. пока разность между двумя приближениями не станет меньше =10-5. Расчётная формула метода Хорд имеет вид:
xn+1=xn-(b-x).
Графический метод Хорд имеет вид:
Отделение корней
program otd; label 10; var a,b,x1,x2,y1,y2,h,d:real; function f(x:real):real; begin f:=2.2*x-exp(x*ln(2)); end; begin writeln(‘введите a,b,h’); readln(a,b,h);
x1:=a;x2:=x1+h; y1:=f(x1); 10: y2:=f(x2); if y1*y2x1:=x2;x2:=x1+h; y1:=y2; if x2
0.1,10,1e-4
ответ:
х1=0.10000
х2=1.10000
Уточнение корней
Метод половинного деления
program del;
label 2, 10;
var a,b,e,x,y,z:real;
function f(x:real):real;
begin
f:= 2.2*x-exp(x*ln(2));
end;
begin
writeln(‘введите a,b,e’);
readln(a,b,e);
y:=f(a);
10:x:=(a+b)/2;
z:=f(x);
if z=0 then goto 2;
if y*z
begin a:=x; y:=f(b); end;
if b-a>e then goto 10;
2:writeln('x=',x:8:5);
readln;
end.
ввод:
0.1, 1.1, 1е-5
ответ:
х=0.78111
Метод хорд
program horda;
label 10;
var e,x,b,y,d:real;
function f(x:real):real;
begin
e» v:shapes="_x0000_s1319">f:= 2.2*x-exp(x*ln(2));
end;
begin
writeln(‘введите x,b,e’);
readln(x,b,e);
10: y:=x-f(x)/(f(b)-f(x))*(b-x);
d:=abs(y-x);
x:=y;
if d>e then goto 10;
y:=f(x);
writeln('x=',x:8:5);
end.
ввод:
0.1, 1.1, 1е-5
ответ:
х=0.78110
Проверка уравнения в ППП «Eureka»
Ввод:
2.2*x-exp(x*ln(2))=0
Ответ:
X=0.78091254
Maximum error is 3.5465456e-7
2.2. Решение систем линейных уравнений методом итераций.
Метод итераций Гаусса-Зейделя
Метод последовательных приближений или итераций для больших n даёт сокращение времени решения на 20-30% по сравнению с точными методами.
В методе итераций число действий пропорционально числу n2, тогда как в точных методах n3.
Метод итераций особенно выгоден при решении систем, в которых много коэффициентов равно нулю. Рассмотрим метод на примере 3-х уравнений с тремя неизвестными.
Дана система:
Для сходимости метода итераций диагональные элементы системы должны быть преобладающие, т.е.
|aii|>>|aij|
Если это условие не выполняется, то делают элементарные преобразования системы.
Например:
Из 1-го уравнения преобразованной системы найдём х1, из 2-го х2 из 3-го х3. Получим:
Для удобства реализации алгоритма вычисляемое значение обозначим yi. Получим:
Для нашего примера система примет вид:
В качестве начального приближения для х1;x2;x3, берётся 0 или 1. Подставляется в правую часть системы, получается новое значение xi, которое снова подставляется в правую часть и т.д. Пока разность между приближениями не станет меньше d).
program lin;
var
b1,d,x1,x2,x3,x4,e,y1,y2,y3,y4:real;
begin
x1:=0; x2:=0; x3:=0; x4:=0; e:=1e-5;
repeat
y1:=(-9-x2+x4)/4;
y2:=(-y1+x3-3*x4)/2;
y3:=(-7-x1+3*y2)/4;
y4:=(2-3*x2+2*y3)/4;
d:=sqrt(sqr(x1-y1)+sqr(x2-y2)+sqr(x3-y3)+sqr(x4-y4));
x1:=y1; x2:=y2; x3:=y3; x4:=y4;
until d>E;
b1:=x1+2*x2-x3-3*x4;
writeln('x1= ',x1:8:5,' x2= ',x2:8:5,
'x3= ',x3:8:5,' x4= ',x4:8:5,' b1= ',b1:8:5);
end.
ответы:
x1= -2.99999
e» v:shapes="_x0000_s1347">x2= 4.00000
x3= 1.99999
x4= -1.00000
b1= 0.000000
Проверка в ППП «Eureka»
4*x1+x2-x4=-9
x1-3*x2+4*x3=-7
3*x2-2*x3+4*x4=12
x1+2*x2-x3-3*x4=0
Ответ:
Х1=-3.000000
Х2=4.000000
Х3=2.000000
X4=1.000000
2.3. Методы вычисления определённых интегралов Если функция f(x) непрерывна на отрезке [a,b] и известна ее первообразная F(x), то определенный интеграл от этой функции в пределах от а до b может быть вычислен по формуле Ньютона-Лейбница
.
Как правило, выразить первообразную функцию удаётся не всегда, поэтому приходиться прибегать к приближённому интегрированию. Существует много численных методов: прямоугольников, трапеций, парабол или Симпсона и т.д.
Метод прямоугольников
Из математики известно, что интеграл равен площади криволинейной трапеции, ограниченной кривой f(x) осью Х и ординатами в точках а и b.
Для приближенного вычисления площади разобьём отрезок [а,b] на n части длинной h=(b-a)/n.
В точках разбиения проведем ординаты до пересечения с кривой y=f(x), а концы ординат соединим прямоугольными отрезками, тогда площадь криволинейного приближенного прямоугольника можно считать равной площади фигуры ограниченной ломанной линией aABb. Площадь этой фигуры, которую обозначим через S, равна сумме площадей прямоугольников.
S=h(y+y1+y2+…+yn)
Таким образом, приближенное значение интеграла по формуле прямоугольников запишется в виде
Точность метода с постоянным шагом h примерно eh.
Метод трапеции
В этом методе начальные построения те же, только при вычислении площади криволинейной трапеции ординаты сверху соединяются ломаной линией.
Получается множество прямоугольных трапеций. Площадь одной трапеции равна:
Sтр=.h
Отсюда: y.h + .h + … +.h =
= h . + f(a + h) +…+ f(в-h)=+
Точность Е h2
Метод Симпсона (парабол)
В этом методе отрезок [a, в] разбивается на 2n частей, длинной h=и ординаты сверху соединяются кривой второго порядка (3 соседних точки).
продолжение
--PAGE_BREAK----PAGE_BREAK--