Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 15.12.2022
Сообщений: 137

Реализация Слау

24.09.2024, 06:44. Показов 957. Ответов 3
Метки с++ (Все метки)

Студворк — интернет-сервис помощи студентам
Иметься массив A=[
Кликните здесь для просмотра всего текста
6 12 13 16 17 10 11 13 9 5 (Диагональные элементы матрицы) 0 0 1 3 6 10 14 18 22 26 30(строчки для нижнего треугольника и столбцы для верхнего треугольника) -1 -2 -3 0 -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 (не нулевые элементы) -1 -2 -3 0 -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(U разложение )-1 -2 -3 0 -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(L разложение)
]
Проблема в том что не могу понять как мне посчитать слау для верхнего треугольника.
вот примерно как у меня получилось но в этом коде он идет по столбикам.
Кликните здесь для просмотра всего текста
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
 for ( i = n - 1; i >= 0; --i) {//строка
     X1[i] = B[i];
     for (j = i + 1; j < n; ++j) {//столб
             if (l < A[n + 1 + t] - A[n  + t] && A[n + 1 + t] - A[n + t]==n-i-1-ll ) {
                 X1[i] -= A[p + (p - (2 * n) - 2) - uk] * X1[j];
                 z = A[p + (p - (2 * n) - 2) - uk];
                 uk++;
                 l++;
             }
             else {
                 X1[i] -= 0 * X1[j];
                 ll++;
             }
         }
         if (l != 0) {
             X1[i] = X1[i] / A[i];
             l = 0;
             t++;
         }
         else {
             X1[i] = X1[i] / A[i];
             t++;
         }
     
 }

То есть допустим есть матрица
1 0 3 0
0 2 5 7
0 0 4 8
0 0 0 9
и программа будет считать x4 как надо x3 тоже, а вот x2 вместо 2 5 7 будет использовать 7 0 5.
переменная p -это сколько всего элементов, n-это размерность матрицы.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.09.2024, 06:44
Ответы с готовыми решениями:

Реализация численного метода решения СЛАУ
Помогите разработать ПО для реализации численного метода простой итерации решения СЛАУ.

Реализация алгоритма решения СЛАУ на Visual C++
Помогите пожалуйста!!! Надо реализовать решения СЛАУ методами Крамера, Гауса и другие, какие знаете. Заранее благодарен

Реализация методов решения СЛАУ
Здравствуйте, помогите решить задачу. Решите задачу с помощью систем линейных алгебраических уравнений в соответствии с вашим номером...

3
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,246
24.09.2024, 12:58
ffdfdsdfsf, у Вас куча каких-то левых переменных,
поэтому трудно пнять, что не так, но вижу нюанс
Цитата Сообщение от ffdfdsdfsf Посмотреть сообщение
for ( i = n - 1; i >= 0; --i) {//строка
Цитата Сообщение от ffdfdsdfsf Посмотреть сообщение
for (j = i + 1; j < n; ++j) {//столб
Цитата Сообщение от ffdfdsdfsf Посмотреть сообщение
* X1[j];
При i=n-1, j=i+1=n, X1[j]=X1[n] - Выход за границы массива
0
0 / 0 / 0
Регистрация: 15.12.2022
Сообщений: 137
24.09.2024, 16:49  [ТС]
zss, так
Цитата Сообщение от zss Посмотреть сообщение
При i=n-1, j=i+1=n, X1[j]=X1[n]
у меня же строго меньше n и из за этого не будет выходить
Цитата Сообщение от zss Посмотреть сообщение
у Вас куча каких-то левых переменных,
поэтому трудно пнять, что не так, но вижу нюанс
uk =0 переменная считает количество использованных переменных из массива
ll =0 тоже отвечает за количество переменных но уже всех тоесть если в массиве в 4 столбике всего 2 числа то ll после прохода по столбику 4
l -не используется нигде видимо забыл удалить после проверок )
t- считает столбики чтобы переходить от 1 к последнему

Добавлено через 4 минуты
X1 -результат
B- вектор правой части
AX1=B

Добавлено через 4 минуты
if (l < A[n + 1 + t] - A[n + t] && A[n + 1 + t] - A[n + t]==n-i-1-ll ) это проверка больше к нижней матрицы как я сейчас понял l < A[n + 1 + t] - A[n + t] это проверка на то что в строчке есть еще не нулевые элементы ,A[n + 1 + t] - A[n + t]==n-i-1-ll это проверка на то сколько нулевых элементов

Добавлено через 15 минут
ну я же правильно понимаю что для верхтреугольной матрицы целесообразней использовать обратный ход метода Гауса?

Добавлено через 1 час 35 минут
zss,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
for ( i = n - 1; i >= 0; --i) {//строка
       X1[i] = B[i];
       for (j = i + 1; j < n; ++j) {//столб
                   int ind = p -1+ A[n+2 + i] - uk;
                   X1[i] -= A[ind] * X1[j];
                   z = A[ind];
                   uk++;
           }
           if (uk != 0) {
               X1[i] = X1[i] / A[i];
               z = X1[i];
           }
           else {
               X1[i] = X1[i] / A[i];
               z = X1[i];
           }
       
   }
премерно как то так получилось считает сейчас x 5 и x4 так как и должно быть а дальше нет

Добавлено через 40 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    for ( i = n - 1; i >= 0; --i) {//строка
        X1[i] = B[i];
        for (j = i + 1; j < n; ++j) {//столб
                    int ind = p-1+ A[ n + j]+i+1;
                    X1[i] -= A[ind] * X1[j];
                    z = A[ind];
                    uk++;
            }
            if (uk != 0) {
                X1[i] = X1[i] / A[i];
                z = X1[i];
            }
            else {
                X1[i] = X1[i] / A[i];
                z = X1[i];
            }
    }
получилось как то так матрицу
6 12 13 16 17
0 0 1 3 6 10
-1 -2 -3 0 -4 -5 0 -7 -8 -9
такую слау считает, но такой
6 12 13 16 17
0 0 1 3 6 9
-1 -2 -3 0 -4 -5 -7 -8 -9
нет
0
0 / 0 / 0
Регистрация: 15.12.2022
Сообщений: 137
26.09.2024, 20:33  [ТС]
Надо было умножать весь столбик и вычитать его из вектора.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    for (i = n-1; i >= 0; i--) {
        if (i == n - 1) {
            X[i] /= A[i];
        }
        else {
 
            for (j = i; j >= 0 && A[n + 2 + i] - A[n + 1 + i] - l != 0; j--) {//str
                int ind = p - 1 + A[n + 2 + i] - l;
                X[j] -= A[ind] * X[i+1];
                ji[l] = X[j];
                l++;
            }
            X[i] /= A[i];
        }
        l = 0;
        
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.09.2024, 20:33
Помогаю со студенческими работами здесь

Реализация алгоритма решения СЛАУ методом Гаусса
Попрошу помочь в реализации алгоритма решения СЛАУ методом Гаусса на языке С (НЕ C++!). Заранее спасибо.

Реализация решения СЛАУ методом Гаусса переделать
Всем здравствуйте! У меня есть программа (полностью рабочая) для решения СЛАУ методом Гаусса и мне нужно переделать ее же для решения этих...

Реализация метода Зейделя для решения СЛАУ
Помогите найти ошибку. Заранее спасибо function Seidel(matA, matB){ var A = JSON.parse(JSON.stringify(matA)); var B =...

Реализация метода Зейделя для решения СЛАУ 6-го порядка
Помогите найти ошибки в коде. Не могу заставить программу работать. (программа для реализации метода Зейделя для решения СЛАУ 6-го порядка)...

Реализация метода Гаусса для СЛАУ комплексных переменных (Delphi)!!!
Здравствуйте!!! Не могли бы вы , уважаемые форумчане ,подсказать в чем заключается моя ошибка. Учитывая то, что процедуры работы с...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru