- •1. Приближенное решение нелинейных уравнений 5
- •Введение
- •1. Приближенное решение нелинейных уравнений
- •1.1. Графический способ отделения корней.
- •1.2. Аналитический способ отделения корней.
- •1.4.2. Блок-схема.
- •1.4.3. Программа.
- •1.3. Метод половинного деления.
- •1.3.1. Расчётная схема.
- •1.4. Метод хорд.
- •1.4.1. Расчетная схема метода.
- •1.5. Метод касательных.
- •1.5.1. Расчётная схема.
- •1.5.2. Блок-схема.
- •1.5.3. Программа.
- •1.6. Комбинированный метод.
- •1.6.1. Расчётная схема.
- •1.7. Метод итераций.
- •1.7.1. Расчётная схема.
- •1.7.2. Блок-схема.
- •1.7.3. Программа.
- •1.8. Дополнения к разделу.
- •1.8.1. Комментарии.
- •1.8.2. Алгоритмы и программы.
- •1.8.3. Пример работы программ.
- •2. Приближенное вычисление определенных интегралов.
- •2.1. Геометрическая интерпретация.
- •2.2. Метод прямоугольников.
- •2.2.1. Расчётная схема.
- •2.3. Метод трапеций.
- •2.3.1. Расчётная схема.
- •2.4. Метод Симпсона.
- •2.4.1. Расчётная схема.
- •2.5. Дополнения к разделу.
- •2.5.1. Комментарии.
- •2.5.2. Пример работы программ.
- •3. Решение систем линейных уравнений.
- •3.1. Метод простых итераций.
- •3.1.1. Расчётная схема.
- •3.1.2. Блок-схема.
- •3.1.3. Программа.
- •3.2. Метод Зейделя.
- •3.2.1. Расчётная схема.
- •3.2.2. Блок-схема.
- •3.2.3. Программа.
- •3.4. Метод Гаусса.
- •3.4.1. Расчётная схема.
- •3.4.2. Блок-схема.
- •3.4.3. Программа.
- •3.5. Дополнения к разделу.
- •3.5.1. Комментарии.
- •3.5.2. Алгоритмы и программы.
- •3.5.3. Пример работы программ.
- •4.3. Метод Рунге-Кутта (четвертого порядка).
- •4.3.1. Расчётная схема.
- •4.4. Дополнения к разделу.
- •4.4.1. Комментарии.
- •4.4.2. Пример работы программ.
- •5. Математическая обработка данных.
- •5.1. Интерполяция.
- •5.1.2. Квадратичная интерполяция.
- •5.1.2.1. Блок-схема.
- •5.1.2.2. Программа.
- •5.1.3. Интерполяция Лагранжа.
- •5.1.3.1. Расчётная схема.
- •5.2.1. Линейное приближение методом наименьших квадратов.
- •5.3. Дополнения к разделу.
- •5.3.1. Комментарии.
- •5.3.2. Алгоритмы и программы.
- •5.3.3. Пример работы программ.
- •6. Задания по численным методам.
3.4. Метод Гаусса.
Данный метод решения СЛАУ является классичесиким. Он обладает высокой точностью и скоростью, так как основан на элементарных преобразованиях.
3.4.1. Расчётная схема.
Пусть имеется система уравнений:
Составим из этой системы матрицу:
Процесс решения состоит из двух этапов. На первом этапе (прямой ход) система, с помощью элементарных преобразований над строками матрицы, приводится к ступенчатому (треугольному) виду:
На втором этапе
(обратный ход) последовательно находят
переменные из получившейся ступенчатой
матрицы. Принимая
,
последовательно поднимаясь снизу
вверх, и подставляя уже найденные
значения
находят все решения системы.
3.4.2. Блок-схема.
3.4.3. Программа.
procedure gauss;
var
u,i: integer;
tmp: real; {for compatability}
begin
fillin;
{Pivedenie k treugolnomu vidu}
triangle(tmp,i);
{nahojdenie korney uravneniya}
if (matrix[k,k]<>0) then
begin
smatrix[k]:=matrix[k,k+1]/matrix[k,k];
writeln('X',k,'= ',smatrix[k]);
for u:=k-1 downto 1 do
begin
i:=u;
while i<>k+1 do
begin
smatrix[u]:=smatrix[u]+smatrix[i]*matrix[u,i];
i:=i+1;
end;
smatrix[u]:=(matrix[u,k+1]-smatrix[u])/matrix[u,u];
writeln('X',u,'= ',smatrix[u]);
end;
end
else
writeln('Systema imeet mnojestvo resheniy');
end;
3.5. Дополнения к разделу.
3.5.1. Комментарии.
Реализация методов Крамера и Гаусса базируется на приведении матрицы к треугольному виду. Поэтому данная процедура используется как в методе Крамера, так и в Методе Гаусса (раздел 3.3 и 3.4). Также в реализации этих методов используется программа заполнения массива данными. Данные программы представлены ниже, и они требуются для корректной работы методов.
Точность этих
методов, в отличие от итерационных,
полностью базируется на точности
математических операций. Поэтому для
повышения точности решения рекомендуется
перейти на длинную математику (требуемая
точность более
).
3.5.2. Алгоритмы и программы.
Процедура приведения матрицы к треугольному виду:
Программа
procedure triangle(var opr: real; var znak: integer);
var
u,i,j,w,y: integer;
tmp,tmpz: real;
begin
opr:=1;
znak:=1;
for u:=1 to k-1 do
begin
for i:=1 to k-1 do {proverka kolonki na 0}
begin
j:=i;
while (matrix[j,u]=0)and(matrix[j+1,u]<>0)and(j<>0) do
begin
y:=1;
while (matrix[y,u]=0)and(y<>u) do
begin
y:=y+1;
end;
if (y=u) then
begin
znak:=znak*(-1);
for w:=1 to k+1 do
begin
tmp:=matrix[j,w];
matrix[j,w]:=matrix[j+1,w];
matrix[j+1,w]:=tmp;
end;
end;
j:=j-1;
end;
end;
tmpz:=matrix[u,u]; {summirovanie strok}
for j:=u+1 to k do
begin
tmp:=matrix[j,u];
opr:=opr*tmpz;
for i:=u to k+1 do
begin
matrix[j,i]:=(-1)*tmp*matrix[u,i]+tmpz*matrix[j,i]
end;
end;
end;
end;
Входные данные: глобальный массив «matrix», объявленные переменные «opr» и «znak» (требуются для метода Крамера, глава 3.3).
Выходные данные: преобразованный глобальный массив «matrix».
Процедура заполнения матрицы (глава 3.3, 3.4).
|
Программа. procedure fillin; var u,i: integer; begin for i:=1 to k+1 do begin for u:=1 to k do begin if i<>k+1 then matrix[u,i]:=a[u,i] else matrix[u,i]:=b[u]; end; end; end; |
Входные данные: глобальный массив «matrix», массив коэффициентов линейных уравнений «a», массив свободных членов «b».
Выходные данные: заполненный глобальный массив «matrix».
