С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Метод Гаусса для решения СЛАУ с использованием одномерного массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сумма квадратов цифр любого числа в итоге равняется числу из интервала [1,9]. http://www.cyberforum.ru/cpp-beginners/thread100117.html
Помогите решить с объяснениями. Сумма квадратов цифр любого числа в итоге равняется числу из интервала . Вывести количество и сами числа, сумма цифр которых равны либо 1, либо 4, из интервала от 1...
C++ В вещественной матрице размером NxN найти максимальный и минимальный элементы. Помогите решить с объяснениями. В вещественной матрице размером NxN найти максимальный и минимальный элементы. Переставить строки, в которых они находятся. Если они находятся в одной строке,... http://www.cyberforum.ru/cpp-beginners/thread100116.html
вычисление простых чисел C++
в книге написана программа, про вычисление простых чисел. #include <iostream> #include <math.h> using namespace std; int main() { int n; bool prostoe = true; double koren =...
Геометрия(треугольник) C++
Даны два угла треугольника (в градусах). Определить, существует ли такой треугольник, и если да, то будет ли он прямоугольным.
C++ Последовательность http://www.cyberforum.ru/cpp-beginners/thread100052.html
Дана последовательность целых чисел . Выяснить, какое число встречается раньше — положительное или отрицательное.
C++ Найти среди компонентов файла количество чисел, которые делятся на 2, но не делятся на 4 Заполнить файл f целыми числами, полученными с помощью генератора случайных чисел. Найти среди компонентов файла количество чисел, которые делятся на 2, но не делятся на 4. подробнее

Показать сообщение отдельно
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
01.03.2010, 12:47
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
double abs(double x)
{
 if (x<0)
 {
  return -x;
 }
 retrun x;
}
void Gaus(double *a, double *b, double *&x, unsigned int n)
{
 int i;
 int j;
 int k;
 double kof;
 double s;
 for (i=n-1; i>=0; --i)
 {
  for (j=i-1; i>=0; --j)
  {
   if (abs(a[j*n+i])>abs(a[i*n+i]))
   {
    for (k=n-1; k>=0; --k)
    {
     a[j*n+k]^=a[i*n+k];
     a[i*n+k]^=a[j*n+k];
     a[j*n+k]^=a[i*n+k];
    }
   }
  }
  for (j=i-1; j>=0; --j)
  {
   Kof=a[j*n+i]/a[i*n+i];
   for (k=i; k>=0; --k)
   {
    a[j*n+k]-=a[i*n+k]*kof;
   }
   b[j]-=b[i]*Kof;
  }
 }
 for (i=0; i<n; ++i)
 {
  s=0;
  for (k=i-1; k<i; ++k)
  {
   s+=a[i*n+k]*x[k];
  }
  x[i]=(b[i]-s)/a[i*n+i];
 }
}
Добавлено через 2 минуты
Если сама матрица плохо обусловлена, или, что ещё хуже, вырождена, тогда и этот вариант будет гарантировано глючить. Но по нормальным матрицам должен работать. Идею переделки я тебе дал в своём первом в этой теме посте.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.