Помогите с методом Гаусса-Зейделя, есть код на С++ и его нужно переписать на javascript как-нить, очень нуждаюсь в помощи:
// Условие сходимости
bool converge(double *xk, double *xkp)
{
for (int i = 0; i < n; i++)
{
if (fabs(xk[i] - xkp[i]) >= eps)
return false;
}
return true;
}
/*
Ход метода, где:
a[n][n] - Матрица коэффициентов
x[n], p[n] - Текущее и предыдущее решения
*/
do
{
for (int i = 0; i < n; i++)
{
double var = 0;
for (int j = 0; j < n; j++)
if (j != i) var += (a[i][j] * x[j]);
p[i] = x[i];
x[i] = (b[i] - var) / a[i][i];
}
}
while (!converge(x, p));
Вот код html файла, там для нескольких матриц порядка от 3 до 13:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Численные методы</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js"></script>
<!-- <script type="text/javascript" src="jquery-1.6.4.min.js"></script> -->
<script type="text/javascript" src="tabs.js"></script>
<script type="text/javascript" src="Javascr.js"></script>
</head>
<body>
<div class="section vertical">
<ul class="tabs">
<li class="current">Ввод матрицы</li>
<li>Вторая вкладка</li>
</ul>
<div class="box visible">
Выберите порядок квадратной матрицы
<select id="webmenu" name="webmenu">
<option value="0"></option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
</select>
<div id="matrix"></div>
</div>
<div class="box">
<p>Метод Гаусса-зейделя</p>
</div>
</div>
</body>
</html>
и вот JS с созданием матрицы, мб надо было через массив, но не получилось:
$(document).ready(function () {
$('#webmenu').change(function () {
var n = $(this).val()
var t, r, i, j, c, b, v
$('#matrix').empty()
t = $('<table border="0" cellspacing="12" cellpadding="12"></table>')
v = $('<table border="0" cellpadding="12" cellspacing="12"></table>')
for (i = 0; i < n; i++) {
r = $('<tr></tr>')
for (j = 0; j < n; j++) {
c = $('<td>' + Math.round(Math.random() * 51) + '</td>')
r.append(c)
}
b = $('<tr>' + Math.round(Math.random() * 51) + '</tr>')
v.append(b)
t.append(r)
}
$('#matrix').append(t)
$('#matrix').append(v)
})
})