Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЧМ2.pdf
Скачиваний:
2
Добавлен:
29.06.2023
Размер:
181.23 Кб
Скачать

6

3Заключение

Врезультате выполнения лабораторной работы были освоены приближенные методы вычисления (метод простых итераций и метод Зейделя ), а также закреплены навыки решения с помощью точных методов (метода Крамера).

Отчет оформлен в соответствии с ОС ТУСУР, в программном обеспечении LATEX.

7

Приложение А

(Обязательное)

Листинг кода программы для метода Крамера

using System;

namespace Метод_крамера

{

class Program

{

static void Main(string[] args)

{

double[,] a = new double[3, 4]; Console.WriteLine("Введите систему слева-направо"); for (int i = 0; i < 3; i++)

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

{

a[i, j] = double.Parse(Console.ReadLine());

}

double def_delta, def_delta_x, def_delta_y, def_delta_z;

def_delta = a[0, 0] * a[1, 1] * a[2, 2] + a[0, 1] * a[1, 2] * a[2, 0] + a[1, 0] * a[0, 2] * a[2, 1] - a[0, 2] * a[1, 1] * a[2, 0]

- a[0, 1] * a[1, 0] * a[2, 2] - a[0, 0] * a[2, 1] * a[1, 2]; def_delta_x = a[0, 3] * a[1, 1] * a[2, 2] + a[0, 1] * a[1, 2] * a[2, 3]

+a[1, 3] * a[0, 2] * a[2, 1] - a[0, 2] * a[1, 1] * a[2, 3] - a[0, 1] * a[1, 3] * a[2, 2] - a[0, 3] * a[2, 1] * a[1, 2];

def_delta_y = a[0, 0] * a[1, 3] * a[2, 2] + a[0, 3] * a[1, 2] * a[2, 0]

+a[1, 0] * a[0, 2] * a[2, 3] - a[0, 2] * a[1, 3] * a[2, 0]

- a[0, 3] * a[1, 0] * a[2, 2] - a[0, 0] * a[2, 3] * a[1, 2];

def_delta_z = a[0, 0] * a[1, 1] * a[2, 3] + a[0, 1] * a[1, 3] * a[2, 0] + a[1, 0] * a[0, 3] * a[2, 1] - a[0, 3] * a[1, 1] * a[2, 0]

- a[0, 1] * a[1, 0] * a[2, 3] - a[0, 0] * a[2, 1] * a[1, 3];

Console.WriteLine("Решение с помощью метода Крамера:");

Console.WriteLine("x1 =" + (def_delta_x / def_delta));

Console.WriteLine("x2 =" + (def_delta_y / def_delta));

Console.WriteLine("x3 =" + (def_delta_z / def_delta));

8

Приложение Б

(Обязательное)

Листинг кода программы для метода простых итераций

using System;

namespace Метод_простых_итераций

{

class Program

{

static void Main(string[] args)

{

double[,] N = new double[3, 4]; Console.WriteLine("Введите систему слева-направо"); for (int i = 0; i < 3; i++)

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

{

N[i, j] = double.Parse(Console.ReadLine());

}

double[,] M = new double[3, 4]

{

{1, -N[0,1]/N[0,0], -N[0,2]/N[0,0], N[0,3]/N[0,0]}, {-N[1,0]/N[1,1], 1, -N[1,2]/N[1,1], N[1,3]/N[1,1]},

{-N[2,0]/N[2,2], -N[2,1]/N[2,2], 1, N[2,3]/N[2,2]}

};

double x_new = N[0, 3], y_new = N[1, 3], z_new = N[2, 3], x = 0, y = 0, z = 0; int count = 0;

while ((Math.Abs(x_new - x) >= 0.01) & (Math.Abs(y_new - y) >= 0.01) & (Math.Abs(z_new - z) >= 0.01))

{

x = x_new; y = y_new; z = z_new;

x_new = (M[0, 1] * y + M[0, 2] * z + M[0, 3]); y_new = (M[1, 0] * x + M[1, 2] * z + M[1, 3]); z_new = (M[2, 0] * x + M[2, 1] * y + M[2, 3]);

count++;

}

Console.WriteLine("Решение методом простых итераций:");

Console.WriteLine($"x = {x_new}");

Console.WriteLine($"y = {y_new}");

Console.WriteLine($"z = {z_new}");

Console.WriteLine($"Количество итераций {count}");

}

}

}

9

Приложение В

(Обязательное) Листинг кода для метода Зейделя

using System;

namespace Метод_Зеделя

{

class Program

{

static void Main(string[] args)

{

double[,] N = new double[3, 4]; Console.WriteLine("Введите систему слева-направо"); for (int i = 0; i < 3; i++)

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

{

N[i, j] = double.Parse(Console.ReadLine());

}

double[,] M = new double[3, 4]

{

{1, -N[0,1]/N[0,0], -N[0,2]/N[0,0], N[0,3]/N[0,0]}, {-N[1,0]/N[1,1], 1, -N[1,2]/N[1,1], N[1,3]/N[1,1]},

{-N[2,0]/N[2,2], -N[2,1]/N[2,2], 1, N[2,3]/N[2,2]}

};

double x = 1, y = 1, z = 1, x_new = 0, y_new = 0, z_new = 0; int count = 0;

while ((Math.Abs(x_new - x) >= 0.01) || (Math.Abs(y_new - y) >= 0.01) || (Math.Abs(z_new - z) >= 0.01))

{

x = x_new; y = y_new; z = z_new;

x_new = (M[0, 1] * y + M[0, 2] * z + M[0, 3]); y_new = (M[1, 0] * x_new + M[1, 2] * z + M[1, 3]);

z_new = (M[2, 0] * x_new + M[2, 1] * y_new + M[2, 3]);

count++;

}

Console.WriteLine("Решение методом Зеделя:");

10

Console.WriteLine($"x = {x_new}"); Console.WriteLine($"y = {y_new}"); Console.WriteLine($"z = {z_new}"); Console.WriteLine($"Количество итераций {count}");

}

}

}

Соседние файлы в предмете Численные методы