Главная страница
Навигация по странице:

  • Задание № 1.

  • Отчет по лабораторным работам по дисциплине Конструирование программ


    Скачать 356.47 Kb.
    НазваниеОтчет по лабораторным работам по дисциплине Конструирование программ
    Дата06.03.2021
    Размер356.47 Kb.
    Формат файлаdocx
    Имя файлаOtchyot.docx
    ТипОтчет
    #182374
    страница6 из 9
    1   2   3   4   5   6   7   8   9

    Лабораторная работа № 6. Решение систем линейных алгебраических уравнений методом простых итераций


    Метод простых итераций используется для решения разреженных систем большой размерности ( ), причем матрица такой системы помимо разреженности должна быть близкой к диагональной. Метод сходится тем быстрее, чем меньше норма матрицы коэффициентов , при этом для сходимости метода необходимо Основная формула метода

    (5.9.1)

    Если система линейных уравнений задана в традиционной форме , ее сначала нужно привести к форме (5.9.1) методом Якоби.

    Пусть дана система - квадратная невырожденная матрица. Преобразуем ее к виду (5.5.1)

    где - квадратная матрица такой же размерности что и , - вектор -столбец. В развернутой форме записи система (5.5.1) имеет вид

    (5.5.2)
    Система уравнений метода Якоби имеет вид

    (5.5.3)

    На главной диагонали матрицы системы (5.5.3) стоят нули, а остальные элементы, очевидно, выражаются по формулам
    Задание № 1. Методом простых итераций с точностью решить систему линейных алгебраических уравнений, заданную в форме :

    вари-

    анта

    Матрица

    Вектор

    правой

    части

    25

    12.10

    5.28

    0.64

    0.75

    14.8310

    0.37

    11.20

    5.86

    0.69

    15.9430

    0.31

    0.42

    10.30

    6.44

    16.6926

    2.60

    0.37

    4.81

    19.40

    17.0800


    Код программы

    #include

    #include

    using namespace std;

    int main()

    {

    setlocale(LC_ALL, "rus");

    const double E = 0.0000001;

    double A[4][4], b[4], x[4], prev[4], B[4][4], c[4];

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

    {

    cout << "Строка №" << i << endl;

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

    cin >> A[i][j];

    cout << "b" << i << " = ";

    cin >> b[i];

    x[i] = 0;

    }

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

    {

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

    B[i][j] = -A[i][j] / A[i][i];

    c[i] = b[i] / A[i][i];

    }

    do

    {

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

    {

    prev[i] = x[i];

    x[i] = 0;

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

    if (i != j) x[i] += B[i][j] * x[j];

    x[i] += c[i];

    }

    } while (((x[0]-prev[0]) > E) || ((x[1] - prev[1]) > E) || ((x[2] - prev[2]) > E) || ((x[3] - prev[3]) > E));

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

    cout << "x" << i << " = " << x[i] << endl;

    _getch();

    return 0;

    }

    1   2   3   4   5   6   7   8   9


    написать администратору сайта