- •Рабочее задание
- •Варианты заданий к лабораторной работе 1
- •Отделение корней уравнения
- •Результат
- •Уточнение корней методом половинного деления
- •Текст программы
- •Текст программы
- •Текст программы
- •Результат
- •Определитель
- •Обратные матрицы
- •Текст процедуры обращения матриц
- •Метод Гаусса-Жордана
- •Текст процедуры
- •Текст процедуры
- •Метод Зейделя
- •Текст процедуры метода Зейделя
- •Расчет определенного интеграла методом Симпсона
- •Текст функции расчета определенного интеграла
- •Расчет определенного интеграла с эаданной точностью
- •Текст программы
- •Текст программы
- •Интерполяционный многочлен Лагранжа
- •Текст функции расчета многочлена Лагранжа
Текст программы
program sls;
const g=0.618034;
var a,b,eps,xl,xr,x,yl,yr:real;
k:integer;
{ - - - - - - - - - - - - - -}
function f(x:real):real;
begin f:=sqr(((2*x-10)*x+3)*x+4)
end;
{ - - - - - - - - - - - - - -}
begin a:=3.6; b:=4.8; eps:=1e-4; k:=0;
xl:=b-(b-a)*g; yl:=f(xl);
xr:=a+(b-a)*g; yr:=f(xr);
repeat k:=k+1;
if yl<yr then
begin b:=xr;xr:=xl;yr:=yl; xl:=b-(b-a)*g; yl:=f(xl)
end else
begin a:=xl;xl:=xr;yl:=yr; xr:=a+(b-a)*g; yr:=f(xr)
end
until abs(b-a)<eps; x:=(a+b)/2;
writeln(' корень x=',x:7:4 );
writeln(' значение функции y=',f(x):6:3);
writeln('количество приближений k=',k:2);
end.
Результат
корень x=4.5768
значение функции y=0.000
количество приближений k=20
Метод дробления шага
Наиболее простой метод минимизации. В качестве исходной точки расчета принимается произвольная точка принадлежащая отрезку [a, b] . Задается начальное значение шага h и вычисляется значение функции y=f2(x).
Делается один шаг x1=x+h и вычисляется новое значение функции
y1=f2(x1). Предыдущее значение функции y и последующее значение y1
сравниваются . Если y1 < y то процесс повторяется без изменений.
Если же последующее значение функции y1 окажется больше или равно предыдущему, то это свидетельствует о том, что минимум функции прой-ден. В этом случае знак шага h изменяется на противоположный, а так же уменьшается его величина. В качестве критерия конца счета удобно принимать модуль величины шага | h |. Счет прекращается при условии
| h |
Недостатком метода является неопределенность выбора величины и степени уменьшения шага h, что компенсируется простотой метода.
Пример решения уравнения 2x3-10x2+3x+4=0 на отрезке [3.6, 4.8] с точностью 1 методом дробления шага.
Текст программы
program drosh;
var eps,h,x,y:real;k:integer;
{ - - - - - - - - - - - - - }
function f(x:real):real;
begin f:=sqr(((2*x-10)*x+3)*x+4)
end;
{ - - - - - - - - - - - - - }
begin eps:=1e-5;h:=1;x:=4.0; k:=0;
repeat k:=k+1;y:=f(x);x:=x+h;
if y<f(x) then h:=-h/2
until abs(h)<=eps;
writeln(' корень x=',x:7:4 );
writeln(' значение функции y=',f(x):6:3);
writeln('количество приближений k=',k:2);
end.