Системы линейных уравнений
Автор: Рустам Хасенов • Январь 8, 2022 • Практическая работа • 4,457 Слов (18 Страниц) • 226 Просмотры
Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«Южно-Уральский государственный университет»
(Национальный исследовательский университет)
Кафедра Автоматики и Управления
ОТЧЕТ
по практической работе №5
«Системы линейных уравнений»
Вариант №24
Автор работы:
студент группы КЭ-217
___________Хасенов Р.С
«__» ____________ 2020
Проверила:
__________ Вставская Е.В
«__» ____________ 2020
Челябинск 2020
1. Текст задания
[pic 1]
2. Описание логических структур
Описание логической структуры программы представлено в виде блок схем алгоритма.
1 способ (обратная матрица)
[pic 2]
[pic 3]
[pic 4]
[pic 5]
2 способ (Крамер)
[pic 6]
[pic 7]
[pic 8]
3 способ (Гаусс)
[pic 9]
[pic 10]
[pic 11]
[pic 12][pic 13]
3. Входные данные программ
Во всех случаях вводится матрица СЛАУ и вектор свободных множителей.
1 способ (Обратная матрица)
[pic 14]
2 способ (Крамер)
[pic 15]
3 способ (Гаусс)
[pic 16]
4. Выходные данные для программ
Выводится количество итераций, для поиска решения.
1 способ (Обратная матрица)
[pic 17]
2 способ (Крамер)
[pic 18]
3 способ (Гаусс)
[pic 19]
5. Исходный код программ
1 способ (Обратная матрица)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
double ** Input(int rows, int cols) {
double **p;
p = (double**)malloc(rows * sizeof(double*));
for (int i = 0; i<rows; i++) {
p[i] = (double*)malloc(cols * sizeof(double));
for (int j = 0; j < cols; j++)
{
printf("mas[%d][%d]= ", i, j);
scanf("%lf", &p[i][j]);
}
}
return p;
}
void Output(double **mas, int rows, int cols) {
int i, j;
for (i = 0; i<rows; i++) {
for (j = 0; j<cols; j++)
printf("%8.4lf ", mas[i][j]);
printf("\n");
}
}
// Сумма двух матриц
double ** Summa(double **a, double **b, int rows, int cols) {
double **p;
p = (double**)malloc(rows * sizeof(double*));
for (int i = 0; i<rows; i++) {
p[i] = (double*)malloc(cols * sizeof(double));
for (int j = 0; j < cols; j++)
{
p[i][j] = a[i][j] + b[i][j];
}
}
return p;
}
// Произведение двух матриц
double** Multiply(double **a, double **b, int rows1, int cols1, int rows2, int cols2)
{
if (cols1 != rows2) return NULL;
double** c = (double**)malloc(rows1 * sizeof(double*));
...