![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Oct 2010
Сообщений: 53
|
Подскажите пожалуйста, где я допустил ошибку в ниже приведенном алгоритме умножения двух квадратных матриц. почему-то не работает...
var table_res:Array =new Array(); var column_res:Array = null; for(i = 0; i < num_ans; i++) column_res = new Array(); table_res.push(column_res); for(j = 0; j < num_ans; j++){ for(var k:int = 0; k < num_ans; k++) //table_res[i][j] += table[i][k] * table2[k][j]; column_res.push(table[i][k].text * table2[k][j].text); } |
|
|||||
|
Судя по всему table[i][k] и table[k][j] у вас текстовые поля. Раз так, то воспользуйтесь функцией parseInt (parseFloat) для перевода строк из свойства text в числа.
|
|
|||||
|
Регистрация: Oct 2010
Сообщений: 53
|
Цитата:
![]() Добавлено через 56 минут Код исправил, программа запускается. однако результат выдает неправильный. Если умножить две матрицы 2 Х 2, где все элементы равны 2. результат выходит такой: 4 4 4 4 Хотя должно быть: 8 8 8 8 Подскажите пожалуйста что не так? Последний раз редактировалось linnard; 16.03.2011 в 01:31. |
|
|||||
|
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Пожалуйста, подсказываем:
var mA:Array = [ [ 111, 112, 113, 114 ], [ 121, 122, 123, 124 ], [ 131, 132, 133, 134 ] ]; var mB:Array = [ [ 211, 212 ], [ 221, 222 ], [ 231, 232 ], [ 241, 242 ] ]; var mRes:Array = multiplyMatricies( mA, mB, 3, 4, 2 ); trace( matrixToString( mRes, 3, 2 ) ); function multiplyMatricies( matA:Array, matB:Array, rowsA:uint=0, colsArowsB:uint=0, colsB:uint=0 ):Array { /* * Matrix dimensions: * * matA [rowsA x colsArowsB] * matB [colsArowsB x colsB] * matR [rowsA x colsB] */ var matR:Array = []; var sum:Number; var i, j, k:int; for (i=0; i<rowsA; i++) { matR[i] = []; for (j=0; j<colsB; j++) { sum = 0; for (k=0; k<colsArowsB; k++) { sum += matA[i][k] * matB[k][j]; } matR[i][j] = sum; } } return matR; } function matrixToString( mat:Array, rows:uint=0, cols:uint=0, numLength:uint=10, precision:uint=2 ):String { var s:String = "[" + rows.toString() + "x" + cols.toString() + "]:"; var sp:String; var i, j:int; for (i=0; i<rows; i++) { s += "\n| "; sp = ""; for (j=0; j<cols; j++) { s += sp + numberToString( mat[i][j], numLength, precision ); sp = " "; } s += " |"; } return s; } function numberToString( num:Number, outLength:uint=10, precision:uint=2, toRight:Boolean=false ):String { var s:String = num.toFixed( precision ); if( s.length >= outLength ) return s.substr( 0, outLength ); const SPACES:String = " "; if( toRight ) { s = SPACES + s; return s.substr( s.length - outLength - 1, outLength ); } else { return (s + SPACES).substr( 0, outLength ); } } Заодно для себя прояснил тему матриц ![]()
__________________
Загружаем картинки, минуя ошибки безопасности Последний раз редактировалось i.o.; 16.03.2011 в 01:56. |
|
|||||
|
Регистрация: Oct 2010
Сообщений: 53
|
Спасибо большое i.o.!
|
|
|||||
|
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
всегда пожалуйста
![]()
__________________
Загружаем картинки, минуя ошибки безопасности |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:59. |
|
|
« Предыдущая тема | Следующая тема » |
|
|