Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите написать прогу, Матрицы 
:(
    Опции темы
Incinerated
Дата 4.7.2006, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 18.5.2006
Где: Беларусь, Новопол оцк

Репутация: нет
Всего: нет



Здравствуйте, не могли бы вы мне помочь вот с такой задачей:
Коэффициенты системы линейных уравнений заданы в виде прямоугольной матрицы. С помощью допустимых преобразований привести систему к треугольному виду. 
Если вы не знаете что такое треугольная матрица я вам скажу, что нужно сделать:
Допустим дана матрица:
1 2 -1
1 1 -1
-6 5 1
Должна получиться, путем преобразований(сложением строк, умножение строки и прибавление ее к другой строки, или столбцы):
1 2 -1
0 -1 0
0 0 -5
т.е. ниже главной диагонали должны получаться «0».
Я собственно не понимаю как сделать для n-мерной матрицы, скажем для определенного размера я бы сделал, а для n-мерного как не знаю…. Если надо могу привести пример, по действиям как и что нужно делать.
Спасибо.
 
PM MAIL   Вверх
_hunter
Дата 4.7.2006, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: нет
Всего: 98



приводи пример для 48-ми мерной матрицы. там видно будет... 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
EEEEEE
Дата 5.7.2006, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 15.5.2006

Репутация: нет
Всего: нет



Может мысли появятся...
Код

/* --------------------------------------------------------------------------*/
/*                       Определение класса Array                            */
/* --------------------------------------------------------------------------*/
class Array{
public:
          Array(int = 1, int = 1);     // конструктор с умолчанием


private:
   double *ptr;                           // указатель на массив
   int rows;                                // количество строк
   int columns;                           // количество столбцов
   int size;                                // размер массива   
};



Код

//------------------------------------------------------------------------------
//                 Конструктор с умолчанием класса Array
//------------------------------------------------------------------------------
 Array::Array(int arrayRows, int arrayColumns)
{
 rows= arrayRows; columns= arrayColumns;
 size=rows*columns; ptr= new double[size]; assert(ptr !=0);
 for( int i=0; i<size; i++)  ptr[i]=0.0;
}
//**************************************************
 
PM MAIL   Вверх
shupg
Дата 5.7.2006, 02:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 21.6.2006

Репутация: нет
Всего: 2



Цитата

Я собственно не понимаю как сделать для n-мерной матрицы, скажем для определенного размера я бы сделал, а для n-мерного как не знаю…. Если надо могу привести пример, по действиям как и что нужно делать.


Если я правильно понял проблемму, то

Код


const n=100;
int i,j,a[n][n];

for (j=0;j<n;j++)
for (i=j;i<=n;i++)
         a[i][j+1]-=a[i][j]/a[j][j];  

 
PM MAIL   Вверх
londinium
Дата 5.7.2006, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 21.1.2006

Репутация: нет
Всего: нет



Здравствуйте!

Если не ошибаюсь, это называется LU-разложением матрицы. Алгоритм приводится в курсе "Вычислительная математика" 
PM MAIL   Вверх
Vyacheslav
Дата 5.7.2006, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 59



Для домашних заданий, курсовых, существует "Центр Помощи"

Тема перенесена!  


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Incinerated
Дата 5.7.2006, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 18.5.2006
Где: Беларусь, Новопол оцк

Репутация: нет
Всего: нет



Цитата(_hunter @ 4.7.2006,  12:18)
приводи пример для 48-ми мерной матрицы. там видно будет...

Очень смешно. Вам самому не смешно?! ;)

Добавлено @ 15:22 
Цитата(shupg @ 5.7.2006,  02:53)
Цитата

Я собственно не понимаю как сделать для n-мерной матрицы, скажем для определенного размера я бы сделал, а для n-мерного как не знаю…. Если надо могу привести пример, по действиям как и что нужно делать.


Если я правильно понял проблемму, то

Код


const n=100;
int i,j,a[n][n];

for (j=0;j<n;j++)
for (i=j;i<=n;i++)
         a[i][j+1]-=a[i][j]/a[j][j];  


Вообщем, привожу полный пример для матрицы 4х4.
1 5 -2 3
0 2 7 1
2 10 -1 5
-3 -15 -6 13
После первой операции следующее(умножили первую строку на -2 и сложили с третьей)
1 5 -2 3
0 2 7 1
0 0 3 -1
-3 -15 -6 13
Далее(третьую строку умножили на 2 и сложили с 4-ой)
1 5 -2 3
0 2 7 1
0 0 3 -1
- 3 -15 0 11
Далее(первую строку умножили на 3 и сложили с 4-ой)
1 5 -2 3
0 2 7 1
0 0 3 -1
0 0 -6 20
Далее(третью строку смножили на 2 и сложили с 4-ой)
1 5 -2 3
0 2 7 1
0 0 3 -1
0 0 0 18
Вот что мне нужно.
Ваш код делает что то другое. Я просто не понимаю как мне реализовать в программе такой алгоритм, что программа будет сама искать какую строку на что нужно умножить и с чем сложить. Может конечно есть другой способ провести к треугольному виду.
Хотелось бы чтобы помог кто-нибудь.
Спасибо. 
PM MAIL   Вверх
Palladin
Дата 5.7.2006, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



Задача так задача smile  smile  smile 

З.Ы. Решений нет smile оч сложно, два часа убил и забилsmile smile  smile   


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
Rockie
Дата 5.7.2006, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 13
Всего: 31





--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.1479 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.