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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите решить здачу, надо решить задачу 
:(
    Опции темы
girlsbest
Дата 19.10.2008, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



помогите решить задачу..нужно возвести квадратную матрицу в степень, которая задается с клавиатуры...по возмоджности напишете алгоритм по проще...чтобы я смогла разобраться..плиз..очень нужно
PM MAIL   Вверх
eyeofhell
Дата 19.10.2008, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Адепт
*


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

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



Напиши какую матрицу и как именно возводить. Что-нибудь вроде "квадрат три на три, перемножаем каждую цифру первой строки..." и так далее. А то тебе посоветуют... преподаватель поседеет smile.
PM MAIL ICQ   Вверх
orange_guard
Дата 19.10.2008, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



возвести матрицу в степень? то есть перемножить ее саму на себя N раз? 
если так, то там  все просто. я бы написал сначала функцию перемножения векторов, потом на основе ее умножение матриц (там строчки на столбцы умножаются). и тогда умножение реализуется элементарно =) 

PM MAIL   Вверх
girlsbest
Дата 19.10.2008, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



мне нужно квадратную матрицу возвести в степень...а вот как в условии небыло написано..но видимо так как ты говоришь.
PM MAIL   Вверх
eyeofhell
Дата 19.10.2008, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Адепт
*


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

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



Матрица 3x3 в степень возводится примерно вот так:

Код

#include <iostream>

void main( void )
{
  // получаем степень с клавиатуры
  std::cout << "pow ( > 2 ): ";
  int pow = 0;
  std::cin >> pow;
  if( pow < 2 )
  {
    return;
  }

  // заполняем матрицу matrix случайными числами
  int matrix[ 3 ][ 3 ] = { 0 };
  for( int item = 0; item < 3 * 3; item ++ )
  {
    matrix[ item / 3 ][ item % 3 ]= rand() % 10;
  }

  // копируем matrix в matrix_pow где будет результат умножения
  int matrix_pow[ 3 ][ 3 ] = { 0 };
  for( int item = 0; item < 3 * 3; item ++ )
  {
    matrix_pow[ item / 3 ][ item % 3 ] = matrix[ item / 3 ][ item % 3 ];
  }
  
  // цикл, при степени 2 выполняется 1 раз, при степени 3 два раза итд
  for( int current_pow = 1; current_pow < pow; current_pow ++ )
  {
    // умножаем matrix_pow на matrix, результат помещаем в matrix_temp
    int matrix_temp[ 3 ][ 3 ] = { 0 };
    for( int i = 0; i < 3; i ++ )
    {
      for( int j = 0; j < 3; j ++ )
      {
        int current = 0;
        for( int index = 0; index < 3; index ++ )
        {
          current += matrix_pow[ i ][ index ] * matrix[ index ][ j ];
        }
        matrix_temp[ i ][ j ] = current;
      }
    }
    // копируем результат умножения в matrix_pow
    for( int item = 0; item < 3 * 3; item ++ )
    {
      matrix_pow[ item / 3 ][ item % 3 ] = matrix_temp[ item / 3 ][ item % 3 ];
    }
  }

  // выводим начальную матрицу
  std::cout << "initial matrix: ";
  for( int i = 0; i < 3 * 3; i ++ )
  {
    std::cout << matrix[ i / 3 ][ i % 3 ] << " ";
  }
  std::cout << std::endl;

  // выводим матрицу в степени
  std::cout << "matrix in pow:  ";
  for( int i = 0; i < 3 * 3; i ++ )
  {
    std::cout << matrix_pow[ i / 3 ][ i % 3 ] << " ";
  }
  std::cout << std::endl;
  int pause;
  std::cin >> pause;
}

PM MAIL ICQ   Вверх
girlsbest
Дата 19.10.2008, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



спасибо..буду смотреть... smile  smile  smile  smile  smile  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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