Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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)
 
    })
})
Ответить с цитированием
  #2 (permalink)  
Старый 11.10.2011, 08:46
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,205

Сообщение от Gravy07
методом Гаусса-Зейделя
Решение системы линейных уравнений?

Сколько платишь?
Ответить с цитированием
  #3 (permalink)  
Старый 11.10.2011, 10:26
Аватар для aiky
Аспирант
Отправить личное сообщение для aiky Посмотреть профиль Найти все сообщения от aiky
 
Регистрация: 06.04.2010
Сообщений: 90

var n = ..
var eps = 1.11E-16;

var converge = function(xk, xkp){
  for (var i = 0; i < n; i++)
    if(Math.abs(xk[i] - xkp[i]) >= eps) return false;
  return true;
}
  
do{
  for(var i = 0; i < n; i++){
    var v = 0;
    for (j = 0; j < n; j++) 
      if (j != i) v += (a[i][j] * x[j]);
    p[i] = x[i];
    x[i] = (b[i] - v) / a[i][i];
  }
}
while (!converge(x, p));
Ответить с цитированием
  #4 (permalink)  
Старый 14.10.2011, 23:05
Новичок на форуме
Отправить личное сообщение для Gravy07 Посмотреть профиль Найти все сообщения от Gravy07
 
Регистрация: 10.10.2011
Сообщений: 2

Спасибо, попробую
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться!!! Greendumb Общие вопросы Javascript 8 19.08.2010 14:04
Помогите! Многоуровневые вкладки! sergeeeeee Элементы интерфейса 2 02.08.2010 23:50
Помогите с массивами Suharik jQuery 6 05.07.2010 15:28
Помогите написать скрипт для корзины Deep Элементы интерфейса 1 19.06.2010 14:46