Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная робота_3_числ_мет.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
10 Мб
Скачать
☆
  1. Метод Зейделя.

Решить систему линейных уравненийметодом Зейделя с точностью = 0,001:

    1. Введите матрицу коэффициентов при неизвестных и матрицу свободных членов.

, .

    1. Задайте функцию, выполняющую последовательно:

  • приведение системы к нормальному виду;

  • приведение нормальной системы к виду, пригодному для итерационного процесса Зейделя;

  • реализация итерационного процесса Зейделя. Аргументы функции: А - матрица исходной системы, B - вектор-столбец свободных членов, - точность решения. Функция возвращает решение системы и его погрешность.

Замечание: При наборе оператора if: , сделайте слева команду Add Line дважды и получите

    1. Решите систему, используя эту функцию:

    1. Проверьте решение:

  1. Метод Гаусса — Зейделя. Отладьте программы и проверьте их решение на примерах, выданных преподавателем.

    1. Пример реализация на С++

// Условие окончания

bool converge(double *xk, double *xkp)

{

for (int i = 0; i < n; i++)

{

if (fabs(xk[i] - xkp[i]) >= eps)

return false;

}

return true;

}

/*

Ход метода, где:

a[n][n] - Матрица коэффициентов

x[n], p[n] - Текущее и предыдущее решения

b[n] - Столбец правых частей

Все перечисленные массивы вещественные и

должны быть определены в основной программе,

также в массив x[n] следует поместить начальное

приближение столбца решений (например, все нули)

*/

do

{

for (int i = 0; i < n; i++)

p[i] = x[i];

for (int i = 0; i < n; i++)

{

double var = 0;

for (int j = 0; j < i; j++)

var += (a[i][j] * x[j]);

for (int j = i + 1; j < n; j++)

var += (a[i][j] * p[j]);

x[i] = (b[i] - var) / a[i][i];

}

}

while (!converge(x, p));

    1. Реализация на Pascal

type ar2d = array [1..50, 1..50] of double;

ar1d = array [1..50] of double;

procedure seidel(n: byte; e: extended; a: ar2d; b: ar1d; x: ar1d);

var i, j: longint;

s, v, m: double;

begin

// Проверка на совместность

for i := 1 to n do

begin

s := 0;

for j := 1 to n do

if j <> i then s := s + abs(a[i, j]);

if s >= abs(a[i, i]) then

begin

writeln('SLAE is inconsistent');

exit

end;

end;

// Сам алгоритм

repeat

m := 0;

for i := 1 to n do

begin

s := 0;

for j := 1 to n do

if i <> j then s := s + a[i, j] * x[j];

v := x[i];

x[i] := (b[i] - s) / a[i, i];

m:=abs(x[i])-abs(v);

end;

until m < e;

// Вывод корней

writeln('roots: ');

for i := 1 to n do

writeln('x[', i, ']= ', x[i]:0:4);

end;

  1. Исследуйте однородную систему линейных уравнений:

t 1+4t2+2t3-3t5 =0

2t1+9t2+5t3+2t4+t5=0

t1+3t2+t3-2t4-9t5=0

3t1+12t2+6t3-8t5=0

2t1+10t2+6t3+4t4+7t5=0

    1. Установите режим автоматических вычислений, пометив строку Automatic Calculation в меню Math.

    2. Присвойте переменной ORIGIN значение, равное 1. Значение этой переменной определяет номер первой строки (столбца) матрицы. По умолчанию в Mathcad нумерация начинается с 0.

    1. Введите матрицу системы:

    1. Вычислите ранг матрицы системы:

    1. Приведите матрицу системы к ступенчатому виду:

    1. Определив базисные и свободные переменные, запишите полученную эквивалентную систему:

Здесь равно ставится с панели:

    1. Используя функцию Find, решите полученную систему относительно базовых переменных: (используйте ту же панель, что в пункте выше)

    1. Запишите общее решение системы:

    1. Найдите фундаментальную систему решений:

  1. Исследуйте неоднородную систему:

Решение:

    1. Присвойте переменной ORIGIN значение, равное 1. Значение этой переменной определяет номер первой строки (столбца) матрицы. По умолчанию в Mathcad нумерация начинается с 0.

    1. Введите матрицу системы и матрицу-столбец свободных членов:

    1. Сформируйте расширенную матрицу системы:

    1. Вычислите ранг основной матрицы и ранг расширенной матрицы системы и сделайте вывод о совместности системы:

    1. Приведите расширенную матрицу совместной системы к ступенчатому виду:

    1. Определив базисные и свободные переменные, запишите полученную эквивалентную систему и разрешите её относительно базисных переменных:

    1. Запишите общее решение:

    1. Найдите фундаментальную систему решений: