Форум программистов, компьютерный форум CyberForum.ru

Метод гауса система ленейных уравнений - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Выяснить, у которого из данных треугольников большая площадь http://www.cyberforum.ru/cpp-beginners/thread188043.html
Даны 6 реальных чисел, которые определяют стороны 2 треугольников. Выяснить, у которого из данных треугольников большая площадь(использовать функцию, которая определяет площадь треугольника по 3 его сторонам-формула Герона: S=sqrt, где p=(a+b+c)/2, a,b,c, - длины сторон треугольника) Добрый день всем!) Помогите пожалуйста в алгоритме написания программы С++ по данному условию.
C++ обработка матриц Получить квадратную матрицу порядка n: 1111...1 222...2 33...3 . ..........0 Помогите пожалуйста решить задачу, очень нужно, заранее спасибо! http://www.cyberforum.ru/cpp-beginners/thread188042.html
потоковый ввод - вывод C++
всем доброго времени суток. мне вот недавно задали написать программу которая реализует несколько процедур стандартной библиотеки ввода-вывода языка С с помощью библиотеки потокового ввода-вывода C++. Я так понял что нужно написать две новые функции ввод и вывод. если кто-нибудь знает как это сделать, подскажите пожалуйста
C++ Вложенные циклы и итерации
Даны действительные числа х, ε (ε > 0). Последовательность a1, a2, ... образована по следующему закону: a1 = x; далее,для n = 2,3,...выполнено:аn=(16+x/1+(a^3)n-1)+3an-1 Помогите пожалуйста решить задачу!!!!Заранее спасибо.
C++ Изменение даты создания файла http://www.cyberforum.ru/cpp-beginners/thread188037.html
Всем Здравствуйте! написал программу, которая создает файл, задает желаемую вами дату создания файла, и повторно меняет её на, опять же, ту, которую вы захотите. Исходный код устраивает, но хотелось бы упростить одну строчку, которая выводит на экран дату создания файла, слишком грамозская. Скажите, можно ли это сделать, и если не сложно подскажите как. Добавлено через 56 секунд #include...
C++ Класс Матрица переменной размерности Надо написать лабу с конструкторами при использовании классов. Вот задание: Матрица переменной размерности представленная динамичиским массивом в котором строки матрицы расположенны последовательно друг за другом. Заранее спасибо большое подробнее

Показать сообщение отдельно
Gun#
0 / 0 / 0
Регистрация: 06.11.2010
Сообщений: 57
08.11.2010, 18:59  [ТС]     Метод гауса система ленейных уравнений
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#define N 20
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;
}
как мне дополнить для этого кода это условие?
 
Текущее время: 03:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru