Показать сообщение отдельно
  #1 (permalink)  
Старый 10.10.2011, 20:28
Новичок на форуме
Отправить личное сообщение для Gravy07 Посмотреть профиль Найти все сообщения от Gravy07
 
Регистрация: 10.10.2011
Сообщений: 2

Помогите с матрицами и массивами
Помогите с методом Гаусса-Зейделя, есть код на С++ и его нужно переписать на 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)
 
    })
})
Ответить с цитированием