Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.61/38: Рейтинг темы: голосов - 38, средняя оценка - 4.61
Alston
7 / 7 / 2
Регистрация: 16.09.2009
Сообщений: 410
#1

Вычисление матриц

12.10.2010, 22:02. Просмотров 6875. Ответов 33
Метки нет (Все метки)

Вычислить
0
Миниатюры
Вычисление матриц  
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2010, 22:02
Ответы с готовыми решениями:

Вычисление степени матрицы, вычисления произведения двух матриц, вычисление суммы двух матриц
Здравствуйте, помогите решить, пожалуйста: Заданы две квадратные матрицы А и В....

Обход матриц и вычисление значений
Дана квадратная матрица порядка n. Найти наибольший ее элемент, расположенный...

Вычисление средних значений положительных элементов каждой строки матриц
Помогите, пожалуйста, составить поцедуру. Вот задачка: Составбте программу...

Вычисление произведения двух матриц (матрицы реализовать в виде динамических массивов)
написать программу для вычисления произведения двух матриц.матрицы реализовать...

Умножение треугольных матриц«Методы обработки разреженных матриц»
Нужно перемножить треугольные матрицы в обычном виде и в свёрнутом. С обычным...

33
MILAN
888 / 782 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
12.10.2010, 23:58 #2
Могу скинуть исходник, там есть транспонирование, умножение.
1
Alston
7 / 7 / 2
Регистрация: 16.09.2009
Сообщений: 410
13.10.2010, 00:01  [ТС] #3
спасибо, но можете сделать очень прошу?=)
0
MILAN
888 / 782 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
13.10.2010, 00:05 #4
На когда надо?
1
Alston
7 / 7 / 2
Регистрация: 16.09.2009
Сообщений: 410
13.10.2010, 00:18  [ТС] #5
на завтра=(((
0
MILAN
888 / 782 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
13.10.2010, 00:22 #6
На завтра никак, нету время.

Добавлено через 1 минуту
Почему раньше не выложили заданее?
1
Alston
7 / 7 / 2
Регистрация: 16.09.2009
Сообщений: 410
13.10.2010, 00:22  [ТС] #7
а когда сможеш?

Добавлено через 40 секунд
Сегодня только дали... Что то придумаю, к пятнице сделаете?
0
MILAN
888 / 782 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
13.10.2010, 00:24 #8
Если никто не зделает раньше, тогда к пятнице.
1
Alston
7 / 7 / 2
Регистрация: 16.09.2009
Сообщений: 410
13.10.2010, 00:24  [ТС] #9
хорошо=)
0
MILAN
888 / 782 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
14.10.2010, 17:48 #10
Лучший ответ Сообщение было отмечено как решение

Решение

Может кто лутше вариант посоветует

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
#include <iostream>
#include <ctime>
 
using std::cout;
using std::cin;
using std::endl;
 
 void output (int **arr, int size)// функция вывода матриц
 {
     for(int i=0; i<size; i++)
     {
           for(int j=0; j<size; j++)
            {
               cout<<arr[i][j]<<" ";
            }
 
            cout<<endl;
     }
 
 }
 int** mult(int **arr1, int **arr2, int **res, int size) // функция  умножения двух матриц 
 {  
    for ( int i=0; i<size; i++)
      {
        for (int j=0; j<size; j++)
          {
             for (int k=0; k<size; k++)
               {
                  res[i][j] += arr1[i][k] * arr2[k][j];// присвоения результата умножения матрице С
                  
               }
             //cout<<res[i][j]<<"  ";
          }
        //cout<<endl;
       } 
    return res;
 }
 int** trans(int **matr, int **matr_tr, int size) // функция транспонирования матриц 
 {
       for(int i=0; i<size; i++)
          {
            for(int j=0; j<size; j++)
               {
                  matr_tr[i][j]=matr[j][i];
               }
          }
     return matr_tr;
 }
 int** rizn(int **matr1, int **res, int size) //функция вычитания матриц
 {
     for(int i=0; i<size; i++)
     {
         for(int j=0; j<size; j++)
         {
             res[i][j]=res[i][j]-matr1[i][j];
         }
     }
     return res;
 }
 int** mult_ch(int **matr, int **res, int size) //функция умножения матрицы на число
 {
     for(int i=0; i<size; i++)
     {
         for(int j=0; j<size; j++)
         {
             res[i][j]=3*(matr[i][j]);
         }
     }
     return res;
 }
int main ()
{
     srand((unsigned int)time(NULL));
      setlocale( LC_ALL,"Russian" );
     int size,i,j;
     int **A, **B, **C, **At, **temp; //опредиления указателей на матрицы
     cout<<"Введите розмер: ";
         cin>>size;
     A = new int*[size]; //выделение памяти под строки матриц
         B = new int*[size]; 
         C = new int*[size]; 
         At = new int*[size]; 
         temp = new int*[size];
     for(i=0; i<size; i++)
     {
           A[i]= new int[size]; //выделение памяти под столбцы матриц
                   B[i]= new int[size]; 
                   C[i]= new int[size]; 
                   At[i] = new int[size];  
                   temp[i] = new int[size];
         for(j=0; j<size; j++)
           {
               A[i][j]=rand()%5; //заполнение матриц А и В случайными числами
               B[i][j]=rand()%5;
               C[i][j]=0;
               At[i][j]=0;
               temp[i][j]=0;
 
           }
     }
     cout<<"Матрица А:"<<endl;
     output(A,size); //вывод матрицы А
     cout<<endl;
     cout<<"Матрица B:"<<endl;
     output(B,size); //вывод матрицы А
     cout<<endl;
     cout<<"Матрица C:"<<endl;
     mult((trans(A,At,size)),B,C,size); //А^t*B 
     mult_ch((mult(B,B,At,size)),A,size);//3*B^2
     mult((rizn(A,C,size)),B,temp,size);//(A^t-3*B^2)*B
     output(temp,size); //вывод матрицы С
//очистка памяти  
for(i=0; i<size; i++)
    {
      delete A[i], B[i], C[i], At[i];
    }
     delete [] A;
     delete [] B;
     delete [] C;
     delete [] At;
     delete [] temp;     
     system("PAUSE");
     return 0;
}
3
PointsEqual
ниначмуроФ
839 / 523 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
14.10.2010, 17:55 #11
а если матрицы не квадратные?
0
Unforgiven_00
60 / 60 / 17
Регистрация: 12.10.2010
Сообщений: 129
14.10.2010, 17:59 #12
Цитата Сообщение от MILAN Посмотреть сообщение
Может кто лутше вариант посоветует

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 int** mult(int **arr1, int **arr2, int **res, int size) // функция  умножения двух матриц 
 {  
    for ( int i=0; i<size; i++)
      {
        for (int j=0; j<size; j++)
          {
             for (int k=0; k<size; k++)
               {
                  res[i][j] += arr1[i][k] * arr2[k][j];// присвоения результата умножения матрице С
                  
               }
             //cout<<res[i][j]<<"  ";
          }
        //cout<<endl;
       } 
    return res;
 }
Зачем принимать int **res?
1
Alston
7 / 7 / 2
Регистрация: 16.09.2009
Сообщений: 410
14.10.2010, 18:01  [ТС] #13
Напишиет кто то попроще пожалуста...=)
0
PointsEqual
ниначмуроФ
839 / 523 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
14.10.2010, 18:02 #14
Цитата Сообщение от Alston Посмотреть сообщение
Напишиет кто то попроще пожалуста...=)
проще наверно некуда...
0
MILAN
888 / 782 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
14.10.2010, 18:02 #15
Цитата Сообщение от Unforgiven_00 Посмотреть сообщение
Зачем принимать int **res?
Для того, что бы в res записивать результат умножения!!!
0
Alston
7 / 7 / 2
Регистрация: 16.09.2009
Сообщений: 410
14.10.2010, 18:03  [ТС] #16
без всяких подключеный руссково языка и тому подобное, переменние нормальние...
0
silent_1991
Эксперт С++
5009 / 3069 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
14.10.2010, 18:11 #17
Я когда писал что-то подобное, я примерно так же делал, проще наверное действительно некуда...


Alston, а что вас в переменных не устраивает? что по-вашему "нормальные"? "Подключение русского языка" занимает ровно строчку - вызывается единственная функция... В чём проблема, тоже непонятно...
1
Alston
7 / 7 / 2
Регистрация: 16.09.2009
Сообщений: 410
14.10.2010, 18:13  [ТС] #18
что значат ети ** нпример **arr1
0
MILAN
888 / 782 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
14.10.2010, 18:14 #19
Цитата Сообщение от Alston Посмотреть сообщение
что значат ети ** нпример **arr1
указатель на матрицу!!!
0
Alston
7 / 7 / 2
Регистрация: 16.09.2009
Сообщений: 410
14.10.2010, 18:18  [ТС] #20
спасибо
0
14.10.2010, 18:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.10.2010, 18:18

Транспонирование матриц. Произведение транспонированных матриц
Найти матрицу С: C=ATBTB; A=\begin{bmatrix}1\\ 1\\ 1\end{bmatrix} ...

Вычисление непрерывных дробей и выражений. Вычисление полиномов и их производных.
1. Чему равна знакочередующаяся сумма цифр числа n. 2. Даны...

Вычисление матриц?
1. Составить алгоритм программы для вычисления матриц 2. Написать программу на...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru