czukowski
18.08.2007, 21:00
В общем, я тебе не поверил :) и вот что выяснил:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body bgcolor="#ffffff">
<div id="workspace">
</div>
<a href="#" onClick="print_matrix(out, hermite(A));return false;">click</a>
<script type="text/javascript">
var A=[[1, 2, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4],
[1, 1, 3, 4, 1, 111, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4],
[1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 61, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4],
[1, 65, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4],
[1, 1, 2, 4, 1, 1, 1, 4, 1, 51, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 81, 1, 1, -4, 1, 1, 1, 4, 1, 1, 1, 4],
[1, 1, 98, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4],
[1, 1, 1, 4, 1, 1, 54, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4],
[1, 1, 1, 4, 23, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, -1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4],
[1, 1, 12, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4],
[1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 19, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4],
[1, 1, 1, 4, 1, -1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 31, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4],
[1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4],
[1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4],
[1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 91, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4],
[1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4],
[1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 32, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4],
[1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4],
[1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 34, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4],
[1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4],
[1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4]];
var out = document.getElementById("workspace");
print_matrix(out, A);
function print_matrix(element, m)
{
for (var i = 0; i < m.length; i++)
{
for (var j = 0; j < m.length; j++)
{
element.innerHTML += m[i][j] + ' ';
}
element.innerHTML += '<br />';
}
element.innerHTML += '<br />';
}
function hermite(A)
{
var m = 0, n = 0;
try
{
m = A.length;
n = A[0].length;
}
catch(e)
{
m = 0;
n = 0;
}
if (m == 0 || n == 0)
{
return false;
}
for (var g = 0, h = 0; g < m; g++, h++)
{
var currentRow = A[g];
if (A[g][h] == 0)
{
for (var i = g + 1; i < m; i++)
{
if (A[i][h] != 0)
{
A[g] = A[i];
A[i] = currentRow;
break;
}
}
if (i == m)
{
g--;
continue;
}
}
for (var i = g; i < m; i++)
{
var k = A[i][h];
if (k != 0)
{
for (var j = h; j < n; j++)
{
A[i][j] = A[i][j] / k;
}
}
}
for (var i = g + 1; i < m; i++)
{
if (A[i][h] != 0)
{
for (var j = h; j < n; j++)
{
A[i][j] = A[i][j] - A[g][j];
}
}
}
for (var i = 0; i < g; i++)
{
var k = A[i][h];
if (k != 0)
{
for (var j = h; j < n; j++)
{
A[i][j] = A[i][j] - k * A[g][j];
}
}
}
}
return A;
}
</script>
</body>
</html> (вместе с хтмл, для удобства копи-паста :)) приводит очень некрасивую мартицу размером 40х20 к Эрмитовой нормальной форме менее, чем за секунду (и потом две-три секунды 1 0 0 4 0 0 0 4 1 0 0 4 1 0 1 4 1 1 1 4 1 1 1.0909090909090908 4 0 1 0 4 -0.6000000000000085 0 1 4.160000000000001 1 1 1 4 1 1 1 4
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.09090909090909091 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.6 0 0 -0.16 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 выписывает, но это из-за медленной функции выписи, с которой уже не хотелось возиться).
Оно ясно, что маткад по-любому лучше для таких задач, но его-то к веб-странице ну никак не прикрутить, согласись :)
Вы еще решите ЛУ на стороне сервера, вот хостеру будет щастье)
На хосте вообще ничего запускать нельзя (даже более-менее посещаемый форум), из-за их дурацких условий про нагрузку.
ST.RIKE, почти пол-дела уже сделано, осталось тебе только вытащить отсюда ответ :)
[I]Добавлено через 16 минут
Il_Burbero, нагрузка на комп: :)
http://aycu32.webshots.com/image/26391/2000510558274770116_rs.jpg
1) Запуск браузера
2) Открытие страницы (при этом выписывается начальная матрица)
3) Нажатие кнопки вычисления
Вот, а я сначала было поддался твоим настроениям и написал выше про 10х10, хотя сам до этого думал о 100х100 (правда, тоже с потолка, никогда не занимался измерением производительности яваскрипта) :razz:
vBulletin® v3.8.9, Copyright ©2000-2026, vBulletin Solutions, Inc.