М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
StasyaGolden
StasyaGolden
09.02.2021 10:33 •  Информатика

Написать программный код на C++ для решения линейного уравнения методом гауса 15,7х1+6,6х2+7,5х3+11,5х4=-2,4
8,8х1+6,7х2+5,5х3-4,5х4=5,6
6,3х1-5,7х2-23,4х3+6,6х4=7,7
14,3х1+8,7х2+15,7х3+5,8х4=23,4

👇
Ответ:
karuna4
karuna4
09.02.2021

#include <iostream>

#include <vector>

const double EPSILON = 1e-10; // Предел точности

void rowOperation(std::vector<std::vector<double>>& matrix, int row1, int row2, double multiplier) {

   int n = matrix[0].size();

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

       matrix[row1][i] -= multiplier * matrix[row2][i];

   }

}

void gaussElimination(std::vector<std::vector<double>>& matrix, std::vector<double>& solution) {

   int n = matrix.size();

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

       // Поиск строки с наибольшим элементом в текущем столбце

       int maxRow = i;

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

           if (std::abs(matrix[j][i]) > std::abs(matrix[maxRow][i])) {

               maxRow = j;

           }

       }

       

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

       if (maxRow != i) {

           std::swap(matrix[i], matrix[maxRow]);

       }

       

       // Проверка на нулевой коэффициент

       if (std::abs(matrix[i][i]) < EPSILON) {

           continue;

       }

       

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

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

           double multiplier = matrix[j][i] / matrix[i][i];

           rowOperation(matrix, j, i, multiplier);

       }

   }

   

   // Обратный ход

   for (int i = n - 1; i >= 0; i--) {

       if (std::abs(matrix[i][i]) < EPSILON) {

           continue;

       }

       

       double sum = 0.0;

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

           sum += matrix[i][j] * solution[j];

       }

       

       solution[i] = (matrix[i].back() - sum) / matrix[i][i];

   }

}

int main() {

   std::vector<std::vector<double>> matrix = {

       {15.7, 6.6, 7.5, 11.5, -2.4},

       {8.8, 6.7, 5.5, -4.5, 5.6},

       {6.3, -5.7, -23.4, 6.6, 7.7},

       {14.3, 8.7, 15.7, 5.8, 23.4}

   };

   

   int n = matrix.size();

   std::vector<double> solution(n, 0.0);

   

   gaussElimination(matrix, solution);

   

   std::cout << "Solution: ";

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

       std::cout << "x" << i + 1 << " = " << solution[i] << ", ";

   }

   

   return 0;

}


Объяснение:

   Мы используем метод Гаусса для решения системы линейных уравнений. Этот метод состоит из двух этапов: приведение матрицы коэффициентов к ступенчатому виду и обратный ход, чтобы найти значения переменных.

   Функция rowOperation выполняет операцию над строками матрицы, умножая одну строку на множитель и вычитая ее из другой строки.

   Функция gaussElimination приводит матрицу к ступенчатому виду, применяя элементарные преобразования над строками. Затем она выполняет обратный ход, чтобы найти значения переменных.

   В функции main мы определяем матрицу коэффициентов и вектор решений. Затем вызываем gaussElimination, чтобы найти решение системы.

   Результат выводится на экран в виде значений переменных x1, x2, x3, x4, соответственно.

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

4,7(68 оценок)
Открыть все ответы
Ответ:
Var a:array[1..100] of integer; //объявляем целочис. массив из 100 элементов
i,j,c,k,n:integer; //целочислительные переменные
f:boolean;// логические переменные
begin // начало программы
writeln('vvedite razmer massiva'); //выводим текст
readln(n); //вводим переменную n
writeln('vvedite el-ty massiva'); //выводим текст
for i:=1 to n do  //повторить n раз
begin write('a[',i,'] = ');readln(a[i]);end;
{отвратный кодстайл. В данном цикле заполняем массив n количеством элементов. Как будто нельзя было объявить динамический массив}
writeln('massiv');       //вывод текста
for i:=1 to n do write(a[i]:4);  //выводим n элементов массива
writeln; //сносим строчку
k:=2; //k=2
while k<=n do //пока k меньше или равно n выполнять
begin //начало тела цикла
c:=a[k]; //с=a[k]
i:=1;     //i=1
if c while f do //ОШИБКА, странное сочетание логического оператора и цикла с предусловием
begin //начало тела вложенного цикла, объявленного ошибочно
a[k-i+1]:=a[k-i];
{элементу массива a, индекс которого равен k-i+1 присваивается элемент массива a, индекс которого равен k-i, по сути, это просто сдвих массива на один элемент}
i:=i+1; //увеличение i на 1
f:=false; //f=ложь
if i if c end; //ОШИБКА, совсем упоротое сочетание условных операторов
a[k-i+1]:=c;
{элементу массива a, индекс которого равен k-i+1 присваивается c}
k:=k+1; //k увеличивается на 1
{                  //комментарий как у меня
for i:=1 to n do write(a[i]:4); //снова вывод от 1 до n элементов массива
writeln; //сноска строки
}
end; //выход из вложенного цикла
//нет выхода из основного цикла
//нет завершения программы
//Абсолютно нерабочий код
//Сожгите автора как ведьму
4,5(25 оценок)
Ответ:
virina059
virina059
09.02.2021

1 Компьютерная сеть - это совокупность компьютеров, взаимосвязанных через каналы передачи данных для обеспечения обмена информацией и коллективного доступа пользователей к аппаратным, программным и информационным ресурсам сети.

2 На какие 4 вида делятся компьютерные сети: Локальные сети, Глобальная сеть.

3 Лока́льная вычисли́тельная сеть — компьютерная сеть, покрывающая обычно относительно небольшую территорию или небольшую группу зданий.

4 Aliexpress, Авито

5 Клиент — сервер — вычислительная или сетевая архитектура, в которой задания или сетевая нагрузка распределены между поставщиками услуг, называемыми серверами, и заказчиками услуг, называемыми клиентами.

6 (cкрин)

7 Правило 1: Помните, что Вы говорите с человеком.

Правило 2: Придерживайтесь тех же стандартов поведения, что и в реальной жизни.

Правило 3: Помните, где Вы находитесь в киберпространстве.

8 Скорость передачи данных — объём данных, передаваемых за единицу времени.

ЗАДАЧА

v=256000 битс 

t= 2 минуты= 120 секунд 

S= 256000 * 120 =30720000 бит 

Теперь перейдём в байты: 30720000 разделить на 8 = 3840000байт, 

а из байтов в килобайты: 3840000 разделить на 1024 = 3750 килобайт 


-Что такое компьютерная сеть?-На какие 4 вида делятся компьютерные сети?-Что такое Локальная сеть?-Ч
4,7(46 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ