- •Рабочее задание
- •Варианты заданий к лабораторной работе 1
- •Отделение корней уравнения
- •Результат
- •Уточнение корней методом половинного деления
- •Текст программы
- •Текст программы
- •Текст программы
- •Результат
- •Определитель
- •Обратные матрицы
- •Текст процедуры обращения матриц
- •Метод Гаусса-Жордана
- •Текст процедуры
- •Текст процедуры
- •Метод Зейделя
- •Текст процедуры метода Зейделя
- •Расчет определенного интеграла методом Симпсона
- •Текст функции расчета определенного интеграла
- •Расчет определенного интеграла с эаданной точностью
- •Текст программы
- •Текст программы
- •Интерполяционный многочлен Лагранжа
- •Текст функции расчета многочлена Лагранжа
Отделение корней уравнения
При использовании ЭВМ проще всего отделить корни путем проб. Не-обходимо найти две близко расположенные точки a и b, в которых непрерывная функция f(x) принимает значения разных знаков. В этом случае между точками a и b есть по крайней мере одна точка, являющаяся корнем уравнения, в которой функция f(x) равна нулю.
Для этого задается произвольно достаточно широкий диапазон изменения неизвестной, который делится на отрезки. На экран выводятся значения функции на границах отрезков. Смена знаков функции указывает отрезки, на которых существуют корни. Если в выведенной таблице функция знаки не меняет, то вводятся новые границы диапазона и расчет повторяется.
Пример отделения корней
Отделить корни уравнения 2x3-10x2+3x+4=0 .
Задаем границы диапазона: начало диапазона nd=0 и конец диапазона kd=12. Принимаем количество отрезков равным 10. Обозначим длину от-резка через h и значение функции на конце отрезка y.
Текст программы
program protd;
var nd, kd, h, x, y: real; i: integer;
begin nd:=0; kd:=12;
h:=(kd-nd)/10;
writeln(‘ x f(x)’);
for i:=1 to 10 do
begin x:=nd+h*i;
y:=(( 2*x-10)*x+3)*x+4;
writeln(x:4:1,y:10:2)
end
end .
Результат
x f(x)
0.0 4.00
1.2 -3.34
2.4 -18.75
3.6 -21.49
4.8 9.18
6.0 94.00
7.2 253.70
8.4 509.01
9.6 880.67
10.8 1389.42
12.0 2056.00
Из результатов расчета видно, что функция f(x) меняет знак на отрез-ках [0.0, 1.2] и [3.6, 4.8]. Следовательно, в диапазоне [0.0, 12] обнаружены
два корня уравнения, которые расположены в отрезках [0.0, 1.2] и [3.6, 4.8].
Уточнение корней методом половинного деления
Метод половинного деления - простой и надежный способ уточнения корня уравнения (2.1) с заданной точностью . Он сходится для любых непрерывных функций f(x), в том числе и недифференцируемых. Усло-вием успешного применения метода является противоположность зна-ков функции f(x) на концах отрезка [a, b] :
f(a).f(b)<0 . (2.2)
Если на отрезке [a, b] находится несколько корней, то процесс сходится к одному из них. Метод неприменим для отыскания кратных корней четного порядка.
В качестве очередного приближения корня x принимается середина отрезка x=(a+b)/2. Исходный отрезок делится таким образом на две по-ловины [a, x] и [x, b] . Проверяется, может ли найденная величина x считаться приближенным значением корня то есть, удовлетворяет ли x неравенству | f(x)| . (2.3)
Если это условие не выполняется, то из двух отрезков [a, x] и [x, b]
оставляется тот, где знаки функции на концах отрезка противоположны. Границы оставшегося отрезка переименовываются на a и b (рис. 2.1) и расчет повторяется. На каждом шаге длина отрезка, содержащего ко-рень, уменьшается вдвое. Таким образом, критерием конца расчета
f(x)
*
a x=(a+b)/2 f(b)
x
f(a) * f(x) b
*
f(x) *
a x=(a+b)/2 f(b)
| x
* f(a) * f(x) b
Рис. 2.1 Предыдущее и последующее приближения
метода половинного деления
f(x), a, b,
y1=f(a)
y2=y1
x=a
k=0
нет
|y2|> и |b-a|>
да
k=k+1 x, k
x=(a+b)/2
y2=f(x)
нет y1.y2>0 да
b=x a=x
Рис. 2.2 Блок-схема алгоритма метода половинного деления
наряду с условием (2.2) может служить длина отрезка, то есть условие:
| b - a | . (2.4)
На рис. 2.2 представлена схема описанного алгоритма.
Пример решения уравнения 2x3-10x2+3x+4=0 на отрезке [3.6, 4.8] с точностью 1 методом половинного деления .