Форум программистов, компьютерный форум CyberForum.ru

Привести вектор к треугольному виду - C++

Восстановить пароль Регистрация
 
Super GT
4 / 4 / 0
Регистрация: 23.12.2012
Сообщений: 131
27.03.2014, 16:05     Привести вектор к треугольному виду #1
Я решаю систему лин. уравнений одной малоизвестной модификацией метода Гаусса.

В чем суть:
=> есть вектор с таким содержимым:
1 2 3 4 6
5 6 7 8 3
5 1 7 5 4
7 9 0 4 3
(строк и столбцов может быть неограниченное кол-во, но столбцов всегда на 1 больше)

Преобразование:
1) В исходной матрице первая строка остается без изменений
2) 1-ый элемент 2-ой строки (назовем его С1) заменяется на отрицание своего деления на 1-ый элемент 1-ой строки
3) 2-ой элемент 2-ой строки равен сумме самого себя и 2-ого элемента 1-ой строки, умноженного на С1
4) 3-ий элемент 2-ой строки равен сумме самого себя и 3-его элемента 1-ой строки, умноженного на С1
5) 4-ый элемент 2-ой строки равен сумме самого себя и 4-ого элемента 1-ой строки, умноженного на С1
6) ... и т.д. нужно сделать со всеми элементами до конца строки

Для третьей строки:
7) 1-ый элемент 3-ей строки (назовем его С2) заменяется на отрицание своего деления на 1-ый элемент 1-ой строки
8) 2-ой элемент 3-ей строки равен сумме самого себя и 2-ого элемента 1-ой строки, умноженного на С2
9) 3-ий элемент 3-ей строки равен сумме самого себя и 3-его элемента 1-ой строки, умноженного на С2
10) 4-ый элемент 3-ей строки равен сумме самого себя и 4-ого элемента 1-ой строки, умноженного на С2
11) ... и т.д. нужно сделать со всеми элементами до конца строки

Далее не переходим сразу к 4-ой, а делается так:
12) 2-ой элемент 3-ей строки (назовем его С3) заменяется на отрицание своего деления на 2-ой элемент 2-ой строки
13) 3-ий элемент 3-ей строки равен сумме самого себя и 3-его элемента 2-ой строки, умноженного на С3
14) 4-ый элемент 3-ей строки равен сумме самого себя и 4-ого элемента 2-ой строки, умноженного на С3
15) ... и т.д. нужно сделать со всеми элементами до конца строки

В случае с 4-ой и последующими строками отличия лишь в том, что с каждой новой строкой элементов С нужно будет вычислять все больше (их кол-во в строках будет увеличиваться).

Большая проблема с циклами, заключается в том, что никак не придумаю алгоритм для определения новой строки и момента с которого нужно вычислять значения С (которые в свою очередь с каждой новой строкой все увеличиваются).

Помощь не помешает!

Добавлено через 1 час 29 минут
Хелп!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2014, 16:05     Привести вектор к треугольному виду
Посмотрите здесь:

C++ Как привести матрицу к верхнему треугольному виду? С++ (Имеется код нахождения нижней треуг. матрицы)
C++ Как привести матрицу к треугольному виду по методу гауса?
C++ Задача: привести матрицу к треугольному виду
Как привести матрицу к треугольному виду C++
C++ Двумерные массивы (СЛАУ). Привести систему к треугольному виду
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IrineK
Заблокирован
27.03.2014, 16:19     Привести вектор к треугольному виду #2
Вектор - это одномерный массив.

У вас 2D объект. Называется - массив или матрица.
Super GT
4 / 4 / 0
Регистрация: 23.12.2012
Сообщений: 131
27.03.2014, 21:28  [ТС]     Привести вектор к треугольному виду #3
IrineK,
э...как бы имеется ввиду, что в задаче используется вектор типа контейнер. То, что числа в нем представлены в виде матрицы и так ясно, и отношения к сути дела не имеет.
Хотелось бы некой конкретики по поставленной задаче.

Добавлено через 1 час 22 минуты
Вопрос актуален.
IrineK
Заблокирован
27.03.2014, 22:31     Привести вектор к треугольному виду #4
Цитата Сообщение от Super GT Посмотреть сообщение
вектор типа контейнер
Еще интересней.
Super GT
4 / 4 / 0
Регистрация: 23.12.2012
Сообщений: 131
28.03.2014, 15:57  [ТС]     Привести вектор к треугольному виду #5
Пфф...а по-вашему вектор это не контейнер?
Знаете, если помочь не можете, не отвлекайте от темы хоть, спасибо.
fmtuner
-5 / 14 / 2
Регистрация: 16.03.2014
Сообщений: 78
28.03.2014, 17:07     Привести вектор к треугольному виду #6
ты бы лучше ссылку дал на модификацию эту, а то по описанию неочень ясен алгоритм.

Добавлено через 56 минут
http://ru.wikipedia.org/wiki/%CC%E5%...E0%F3%F1%F1%E0
если это то о чем ты пишешь - то там же и алгоритм есть.
Super GT
4 / 4 / 0
Регистрация: 23.12.2012
Сообщений: 131
28.03.2014, 17:35  [ТС]     Привести вектор к треугольному виду #7
fmtuner,
Смотри, модификация заключается в чем:
- к треугольному виду матрицу приводим не посредством перестановки строк, как сделал юзер -=ЮРА=- вот тут Двумерные массивы (СЛАУ). Привести систему к треугольному виду , а посредством сложения двух строк матрицы, одну из которых домножаем на некоторое число
- по ходу приведения матрицы к треугольному виду, коэффициенты (числа, на которые умножаем строки) записываем в нижнюю часть этой же матрицы
- дальнейшие вычисления неизвестных производить не нужно, с этим и сам разберусь

Описания алгоритма в нете нет, но есть книга, откуда этот алгоритм взят. Если нужно - могу скинуть ссылку (2Мб, djvu)
fmtuner
-5 / 14 / 2
Регистрация: 16.03.2014
Сообщений: 78
28.03.2014, 17:39     Привести вектор к треугольному виду #8
кидай
Super GT
4 / 4 / 0
Регистрация: 23.12.2012
Сообщений: 131
28.03.2014, 17:42  [ТС]     Привести вектор к треугольному виду #9
Вот книга rghost. ru/53516469 (без пробела перед ru)
Называется цепной алгоритм, с.73
fmtuner
-5 / 14 / 2
Регистрация: 16.03.2014
Сообщений: 78
28.03.2014, 18:44     Привести вектор к треугольному виду #10
ну и? проблемы твоей толком тогда не понимаю
Super GT
4 / 4 / 0
Регистрация: 23.12.2012
Сообщений: 131
28.03.2014, 19:25  [ТС]     Привести вектор к треугольному виду #11
Математический алгоритм ясен, практических знаний по реализации на С++ не хватает.
fmtuner
-5 / 14 / 2
Регистрация: 16.03.2014
Сообщений: 78
28.03.2014, 19:29     Привести вектор к треугольному виду #12
Т.е. тебе надо алгоритм написать на с++ или просто алгоритм сам закодируешь?
или тебе надо с самого начала всё целиком закодировать?
Super GT
4 / 4 / 0
Регистрация: 23.12.2012
Сообщений: 131
28.03.2014, 19:37  [ТС]     Привести вектор к треугольному виду #13
Э...я ж говорю - у меня есть вектор с записанными в него числами.(это уже готовая часть кода, ничего сначала писать не надо).
Мне нужно составить код, который бы приводил матрицу к треугольному виду, причем если обычно в таких случаях нижняя часть матрицы заполняется нулями - сейчас ее нужно заполнить коэффициентами. ВСЕ.
fmtuner
-5 / 14 / 2
Регистрация: 16.03.2014
Сообщений: 78
28.03.2014, 19:39     Привести вектор к треугольному виду #14
матрица - то что в топике?
Super GT
4 / 4 / 0
Регистрация: 23.12.2012
Сообщений: 131
28.03.2014, 19:51  [ТС]     Привести вектор к треугольному виду #15
Нет. Матрица может быть абсолютного любого размера (единственное, столбцов всегда на 1 больше строк), и вещественные числа в ней могут быть абсолютно любые.
Матрица записана в контейнер (вектор).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2014, 20:18     Привести вектор к треугольному виду
Еще ссылки по теме:

C++ Свести матрицу к треугольному виду
C++ С помощью допустимых изменений привести систему к треугольному виду...
C++ Привести матрицу к треугольному виду

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

Или воспользуйтесь поиском по форуму:
fmtuner
-5 / 14 / 2
Регистрация: 16.03.2014
Сообщений: 78
28.03.2014, 20:18     Привести вектор к треугольному виду #16
как мне видится - делаешь рекурсивную функцию в которую передаешь свою матрицу, до тех пор пока не останется 2 строки.
Yandex
Объявления
28.03.2014, 20:18     Привести вектор к треугольному виду
Ответ Создать тему
Опции темы

Текущее время: 21:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru