Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/29: Рейтинг темы: голосов - 29, средняя оценка - 4.86
-29 / 0 / 0
Регистрация: 12.10.2012
Сообщений: 12

Двумерные массивы (СЛАУ). Привести систему к треугольному виду

30.12.2012, 01:24. Показов 6544. Ответов 22
Метки нет (Все метки)

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

Незнаю как решить.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.12.2012, 01:24
Ответы с готовыми решениями:

С помощью допустимых изменений привести систему к треугольному виду...
Надо выполнить вот это задание ": Коефіцієнти системи лінійних рівнянь задані у вигляді прямокутної матриці. З допомогою допустимих...

Привести вектор к треугольному виду
Я решаю систему лин. уравнений одной малоизвестной модификацией метода Гаусса. В чем суть: => есть вектор с таким содержимым: ...

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

22
-29 / 0 / 0
Регистрация: 12.10.2012
Сообщений: 12
31.12.2012, 14:39  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от nonedark2008 Посмотреть сообщение
Тем, что там используются не общеизвестные функции. emmintrin.h - я такой в первый раз вижу >_>
__m128d - странный тип, используемый в SIMD 2 - странные инструкции для процессора. Походу это что-то с чем-то для оптимизации кода. Только вопрос, а зачем это обычному студенту, тем более такое никто не приподает. Вот спросит препод - и что ему отвечать? Короче, слишком много надо знать, чтобы такое использовать.
Вот точно! В точку ! Я не понимаю чего там понаписано, к тому же я как бы сам еще хочу понять алгоритм.

[удалено]

да потому что там половино всего расписано, чтобы ваш код разбирать себе головную боль создавать. Я лучше сам алгоритм узнаю точный а потом сам напишу.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
31.12.2012, 15:09
Для всех дочитавших эту тему,(но не для автора данной темы!) привожу код на С++ для метода Гаусса из поста5, котрый после отработки функции PryamoiHod(n, a, b); привод систему к треугольному виду (как видим изменений от кода поста 5 почти нет, прото было переписано с Си на С++, хотя кому то не под силу их даже это было осознать)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include <cmath>
#include <iostream>
using namespace std;
 
void ShowVector(int n, double * vec);
void PryamoiHod(int n, double **a, double *b);
void ObratniHod(int n, double **a, double *b, double *x);
 
int main()
{
    int i,j,n;
    double **a, *b, *x;
    char chInp = 0;
    do
    {
        cout<<"Enter NUM of equations: ";cin>>n;
        //Выделяем память под матрицу А и векторы В и Х
        a = new double *[n];
        b = new double [n];
        x = new double [n];
        for(i = 0; i < n; i++)
        {
            a[i] = new double[n];
            //Ввод a
            for(j = 0; j < n; j++)
            {
                cout<<"a["<<i + 1<<"]["<<j + 1<<"] = ";
                cin>>a[i][j];cin.get();
            }
        }
        //Ввод b
        for(i = 0; i < n; i++)
        {
            cout<<"b["<<i + 1<<"] = ";
            cin>>b[i];cin.get();
        }
        
        cout<<"\tSee input\r\n";
        cout<<"Matrix A:\r\n";
        for(i = 0; i < n; i++)
            ShowVector(n, a[i]);
        cout<<"Vector B:\r\n";
        ShowVector(n, b);
        
        cout<<"\tSolving on Gauss method\r\n";
        PryamoiHod(n, a, b);
        cout<<"Forvard Gauss course\r\n";//Прямой ход
        cout<<"Matrix A:\r\n";
        for(i = 0; i < n; i++)
            ShowVector(n, a[i]);
        cout<<"Vector B:\r\n";
        ShowVector(n, b);
 
        ObratniHod(n, a, b, x);
        cout<<"Back Gauss course\r\n";//Обратный ход
        cout<<"Matrix A:\r\n";
        for(i = 0; i < n; i++)
            ShowVector(n, a[i]);
        cout<<"Vector B:\r\n";
        ShowVector(n, b);
 
        cout<<"Results :\r\n";
        ShowVector(n, x);
 
        cout<<"Enter Y for new input\r\n";
        cin>>chInp;cin.get();
        //Чистим память
        for(i = 0; i < n; i++)
            delete [] a[i];
        delete [] a;
        delete [] b;
        delete [] x;
        
    }
    while(toupper(chInp) == 'Y');
    return 0;
}
 
void ShowVector(int n, double * vec)
{
    for(int i = 0; i < n; i++)
        cout<<vec[i]<<"\t";
    printf("\r\n");
}
 
void PryamoiHod(int n, double **a, double *b)
{
        double v;
        for(int k = 0,i,j,im; k < n - 1; k++)
        {
                im = k;
                for(i = k + 1; i < n; i++)
                {
                        if(fabs(a[im][k]) < fabs(a[i][k]))
                        {
                                im = i;
                        }
                }
                if(im != k)
                {
                        for(j = 0; j < n; j++)
                        {
                                v                = a[im][j];
                                a[im][j] = a[k][j];
                                a[k][j]  = v;
                        }
                        v     = b[im];
                        b[im] = b[k];
                        b[k]  = v;
                }
                for(i = k + 1; i < n; i++)
                {
                        v               = 1.0*a[i][k]/a[k][k];
                        a[i][k] = 0;
                        b[i]    = b[i] - v*b[k];
                        if(v != 0)
                        for(j = k + 1; j < n; j++)
                        {
                                a[i][j] = a[i][j] - v*a[k][j];
                        }
                }
        }
}
 
void ObratniHod(int n, double **a, double *b, double *x)
{
        double s = 0;
        x[n - 1] = 1.0*b[n - 1]/a[n - 1][n - 1];
        for(int i = n - 2, j; 0 <= i; i--)
        {
                s = 0;
                for(j = i + 1; j < n; j++)
                {
                        s = s+a[i][j]*x[j];
                }
                x[i] = 1.0*(b[i] - s)/a[i][i];
        }
}
Миниатюры
Двумерные массивы (СЛАУ). Привести систему к треугольному виду  
1
-29 / 0 / 0
Регистрация: 12.10.2012
Сообщений: 12
31.12.2012, 15:35  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Для всех дочитавших эту тему,(но не для автора данной темы!) привожу код на С++ для метода Гаусса из поста5, котрый после отработки функции PryamoiHod(n, a, b); привод систему к треугольному виду (как видим изменений от кода поста 5 почти нет, прото было переписано с Си на С++, хотя кому то не под силу их даже это было осознать)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include <cmath>
#include <iostream>
using namespace std;
 
void ShowVector(int n, double * vec);
void PryamoiHod(int n, double **a, double *b);
void ObratniHod(int n, double **a, double *b, double *x);
 
int main()
{
    int i,j,n;
    double **a, *b, *x;
    char chInp = 0;
    do
    {
        cout<<"Enter NUM of equations: ";cin>>n;
        //Выделяем память под матрицу А и векторы В и Х
        a = new double *[n];
        b = new double [n];
        x = new double [n];
        for(i = 0; i < n; i++)
        {
            a[i] = new double[n];
            //Ввод a
            for(j = 0; j < n; j++)
            {
                cout<<"a["<<i + 1<<"]["<<j + 1<<"] = ";
                cin>>a[i][j];cin.get();
            }
        }
        //Ввод b
        for(i = 0; i < n; i++)
        {
            cout<<"b["<<i + 1<<"] = ";
            cin>>b[i];cin.get();
        }
        
        cout<<"\tSee input\r\n";
        cout<<"Matrix A:\r\n";
        for(i = 0; i < n; i++)
            ShowVector(n, a[i]);
        cout<<"Vector B:\r\n";
        ShowVector(n, b);
        
        cout<<"\tSolving on Gauss method\r\n";
        PryamoiHod(n, a, b);
        cout<<"Forvard Gauss course\r\n";//Прямой ход
        cout<<"Matrix A:\r\n";
        for(i = 0; i < n; i++)
            ShowVector(n, a[i]);
        cout<<"Vector B:\r\n";
        ShowVector(n, b);
 
        ObratniHod(n, a, b, x);
        cout<<"Back Gauss course\r\n";//Обратный ход
        cout<<"Matrix A:\r\n";
        for(i = 0; i < n; i++)
            ShowVector(n, a[i]);
        cout<<"Vector B:\r\n";
        ShowVector(n, b);
 
        cout<<"Results :\r\n";
        ShowVector(n, x);
 
        cout<<"Enter Y for new input\r\n";
        cin>>chInp;cin.get();
        //Чистим память
        for(i = 0; i < n; i++)
            delete [] a[i];
        delete [] a;
        delete [] b;
        delete [] x;
        
    }
    while(toupper(chInp) == 'Y');
    return 0;
}
 
void ShowVector(int n, double * vec)
{
    for(int i = 0; i < n; i++)
        cout<<vec[i]<<"\t";
    printf("\r\n");
}
 
void PryamoiHod(int n, double **a, double *b)
{
        double v;
        for(int k = 0,i,j,im; k < n - 1; k++)
        {
                im = k;
                for(i = k + 1; i < n; i++)
                {
                        if(fabs(a[im][k]) < fabs(a[i][k]))
                        {
                                im = i;
                        }
                }
                if(im != k)
                {
                        for(j = 0; j < n; j++)
                        {
                                v                = a[im][j];
                                a[im][j] = a[k][j];
                                a[k][j]  = v;
                        }
                        v     = b[im];
                        b[im] = b[k];
                        b[k]  = v;
                }
                for(i = k + 1; i < n; i++)
                {
                        v               = 1.0*a[i][k]/a[k][k];
                        a[i][k] = 0;
                        b[i]    = b[i] - v*b[k];
                        if(v != 0)
                        for(j = k + 1; j < n; j++)
                        {
                                a[i][j] = a[i][j] - v*a[k][j];
                        }
                }
        }
}
 
void ObratniHod(int n, double **a, double *b, double *x)
{
        double s = 0;
        x[n - 1] = 1.0*b[n - 1]/a[n - 1][n - 1];
        for(int i = n - 2, j; 0 <= i; i--)
        {
                s = 0;
                for(j = i + 1; j < n; j++)
                {
                        s = s+a[i][j]*x[j];
                }
                x[i] = 1.0*(b[i] - s)/a[i][i];
        }
}
Спасибо что вы его перекодили на с++, я вам вот за это могу сказать большое спасибо. Но все же у меня есть некоторые вопросы , да я не знаю алгоритм как написать этот , но желание научиться все же у меня есть. Вы не могли бы мне сами действия алгоритма где он приводит матрицу к треугольному виду откомментить, я чуть не могу просто понять что для чего там служит im например и мне кажется там еще другие действия есть которые для моей задачи не нужны видимо , это когда с матрицой b какие то действия идут. Если вот вы мне это объясните я вам вот честное слово , буду благодарен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.12.2012, 15:35

Привести матрицу к треугольному виду
Написать программу для работы с динамическим целочисленным двумерным массивом, который содержит системы линейных уравнений. Количество...

Как привести матрицу к треугольному виду
Нужно привести матрицу к треугольному виду, можно написать прогу , а то какие нашел не работают ни черта

Задача: привести матрицу к треугольному виду
Блин, я никак не разберусь, может тут кто знает? Задание: Дана квадратная матрица размера m*n. С помощью допустимых преобразований...

Как привести матрицу к треугольному виду по методу гауса?
Может у кого есть прога? Нужна срочно!

Привести матрицу к треугольному виду Гауссом (не могу найти работающий код)
Нужен код для приведения матрицы к треугольному виду (матрица статическая, целочисленная). Пробовал гуглить, в том числе и тут....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru