|
Модераторы: Sardar, Aliance |
|
Kristitrima |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 5.4.2010 Репутация: нет Всего: нет |
Привет всем! Я очень плохо соображаю в JavaScript. Помогите пожалуйста написать код программы на JavaScript "Решение СЛАУ методом Гаусса", или может быть кто-нибудь сможет перевести код с С на JavaScript. Заранее спасибо!
исходный код на С: //Решение системы лин. уравнений методом Гаусса //с выбором главного элемента #include <stdio.h> #include <conio.h> #include <math.h> #define N 50 void glavelem( int k, double mas[] [N + 1], int n, int otv[] ); int main( void ) { double mas[N] [N + 1]; double x[N]; //Корни системы int otv[N]; //Отвечает за порядок корней int i, j, k, n; //Ввод данных clrscr(); do { printf( "Введите число уравнений системы: " ); scanf( "%d", & n ); if ( N < n ) printf( "Слишком большое число уравнений. Повторите ввод\n" ); } while ( N < n ); printf( "Введите систему:\n" ); for ( i = 0; i < n; i++ ) for ( j = 0; j < n + 1; j++ ) scanf( "%lf", & mas[i] [j] ); //Вывод введенной системы clrscr(); printf( "Система:\n" ); for ( i = 0; i < n; i++ ) { for ( j = 0; j < n + 1; j++ ) printf( "%7.2f ", mas[i] [j] ); printf( "\n" ); } //Сначала все корни по порядку for ( i = 0; i < n + 1; i++ ) otv[i] = i; //Прямой ход метода Гаусса for ( k = 0; k < n; k++ ) { //На какой позиции должен стоять главный элемент glavelem( k, mas, n, otv ); //Установка главного элемента if ( fabs( mas[k] [k] ) < 0.0001 ) { printf( "Система не имеет единственного решения" ); return ( 0 ); } for ( j = n; j >= k; j-- ) mas[k] [j] /= mas[k] [k]; for ( i = k + 1; i < n; i++ ) for ( j = n; j >= k; j-- ) mas[i] [j] -= mas[k] [j] * mas[i] [k]; } //Обратный ход for ( i = 0; i < n; i++ ) x[i] = mas[i] [n]; for ( i = n - 2; i >= 0; i-- ) for ( j = i + 1; j < n; j++ ) x[i] -= x[j] * mas[i] [j]; //Вывод результата printf( "Ответ:\n" ); for ( i = 0; i < n; i++ ) for ( j = 0; j < n; j++ ) if ( i == otv[j] ) { //Расставляем корни по порядку printf( "%f\n", x[j] ); break; } return ( 0 ); } //---------------------------------------------- //Описание функции //---------------------------------------------- void glavelem( int k, double mas[] [N + 1], int n, int otv[] ) { int i, j, i_max = k, j_max = k; double temp; //Ищем максимальный по модулю элемент for ( i = k; i < n; i++ ) for ( j = k; j < n; j++ ) if ( fabs( mas[i_max] [j_max] ) < fabs( mas[i] [j] ) ) { i_max = i; j_max = j; } //Переставляем строки for ( j = k; j < n + 1; j++ ) { temp = mas[k] [j]; mas[k] [j] = mas[i_max] [j]; mas[i_max] [j] = temp; } //Переставляем столбцы for ( i = 0; i < n; i++ ) { temp = mas[i] [k]; mas[i] [k] = mas[i] [j_max]; mas[i] [j_max] = temp; } //Учитываем изменение порядка корней i = otv[k]; otv[k] = otv[j_max]; otv[j_max] = i; } |
|||
|
||||
Kristitrima |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 5.4.2010 Репутация: нет Всего: нет |
Попробовала сама перевести код, вот что получилось. Помогите найти ошибки!
<html> <head> <title>Решение СЛАУ методом Гаусса</title> <script language=javascript> <!-- // Ввод данных n=prompt("Введите число уравнений системы:"); var m=new Array(n); // Определение массива for(i=0; i<n; ++i) { m[i]=new Array(n); } // Заполнение матрицы for(i=0; i<n; ++i) { for(j=0; j<n; ++j) { m[i][j]=prompt("Введите систему:"); //прямой ход метода Гаусса function paral(){ for (var k = 0; k < n; k++){ //на какой позиции должен стоять главный элемент glavelem(); if (Math.abs (m[k][k]) < 0.0001){ alert ("Система не имеет единственного решения "); return; } } for (var j = n; j >= k; j--){ m[k][j] /= m[k][k]; } for (var i = k + 1; i < n; i++){ for (j = n; j >= k; j--){ m[i][j] -= m[k][j] * m[i][k]; } } } //поиск главного элемента function glavelem(){ var v; t, i_max = k, j_max = k; //ищем максим по модулю элемент for ( i = k; i < n; i++){ for (j = k; j < n; j++){ if (Math.abs(m[i_max][j_max]) < Math.abs(m[i][j]) ){ i_max = i; j_max = j; } } } document.writeln("Максимальное значение " + m[i_max][j_max]); //Переставляем строки for (j = k; j < n + 1; j++){ t = m[k][j]; m[k][j] = m[i_max][j]; m[i_max][j] = t; } //Переставляем столбцы for (i = 0; i < n; i++){ t = m[i][k]; m[i][k] = m[i][j_max]; m[i][j_max] = t; } //Учитываем изменение порядка корней v = otv[k]; otv[k] = otv[j_max]; otv[j_max] = v; document.writeln(); document.writeln("Преобразованная матрица "); for (i = 0; i < n; i++){ for (j = 0; j < n + 1; j++){ document.writel(m[i][j]+ " "); } document.writeln(); } } //Обратный ход function obratno() { for (i = 0; i < n; i++){ X[i] = m[i][n]; } for (i = n - 2; i >= 0; i--){ for (j = i + 1; j < n; j++){ X[i] -= X[j] * m[i][j]; } } } { Matrix M = new Matrix(); //расставляем все корни по порядку for (i = 0; i < n + 1; i++){ M.otv[i] = i; } document.writeln("Начальный вид матрицы:"); for (i = 0; i < n; i++){ for (j = 0; j < n + 1; j++){ document.writeln(M.m[i][j]+ " "); } document.writeln(); } M.paral(); M.obratno(); document.writeln("Ответ:"); for (i = 0; i < n; i++){ for (j = 0; j < n; j++){ if ( i == M.otv[j]){ document.writeln(M.X[j]+ " "); break; } return; } } } } //--> </script> <body> <center> <h2>Решение СЛАУ методом Гаусса</h2> </center> </body </html> |
|||
|
||||
gcc |
|
|||
Агент алкомафии Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
девушка на Си
|
|||
|
||||
teatorb |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 12.9.2022 Репутация: нет Всего: нет |
Модератор: Сообщение скрыто. |
|||
|
||||
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |