Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/47: Рейтинг темы: голосов - 47, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 03.05.2017
Сообщений: 16
1

Метод Гаусса

15.05.2017, 21:33. Показов 9588. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как реализовать метод Гаусса в моей программе? Вкратце о том, что сделано:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void Gauss(int N)//объявил функцию
{
    int i, k;
    double x[N+1]; // объявил матрицу неизвестных величин
    ifstream f7("cosnx.txt");
    for(k=0;k<N;k++) f7>>b[k]; // прочитал из файла матрицу свободных членов
    ifstream f10("akimod.txt");
    for(k=0; k<N+1; k++)
    {
        for(i=0; i<N+1; i++)
        {
            f10>>a[k][i]; 
        }
    } // прочитал из файла матрицу коэффициентов
        ofstream f11("x.txt");// это для вывода результата в файл
 
}
Нужно написать метод Гаусса, и полученное решение вывести в файл, через ofstream.
Соответственно, в main функция будет вызвана следующим образом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
int main()
{
    int N=8;
//предшествующие функции
    ksi(N);
    xy(N);
    cos(N);
    aki(N);
    akimod(N);
        Gauss(N); //вот так
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.05.2017, 21:33
Ответы с готовыми решениями:

СЛАУ. Метод обратной матрицы, метод Гаусса, метод Крамера, метод Зейделя
Помогите ребят. Не могу построить алгоритмы для этих методов Язык C++

метод Гаусса
Помогите пожалуйста написать программу на С++ Задана система линейного уравнения:MA*X=B. Для...

Метод Гаусса
Помогите, пожалуйста, написать программу. Вот условие: Написать программу решения системы...

метод Гаусса
дана система линейных уравнений, в графическом режиме надо написать программу. Не понимаю как,...

4
2 / 2 / 0
Регистрация: 06.01.2017
Сообщений: 56
15.05.2017, 23:00 2
Вот пример метода Гаусса. Сводим(приводим) к верхнетреугольному виду
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
float  tmp, xx[m];
    int k;
 
    for (i=0; i<n; i++)
     {
       tmp=matrix[i][i];
         for (j=n;j>=i;j--)
             matrix[i][j]/=tmp;
           for (j=i+1;j<n;j++)
          {
             tmp=matrix[j][i];
               for (k=n;k>=i;k--)
             matrix[j][k]-=tmp*matrix[i][k];
          }
      }
  /*обратный ход*/
    xx[n-1] = matrix[n-1][n];
     for (i=n-2; i>=0; i--)
       {
           xx[i] = matrix[i][n];
           for (j=i+1;j<n;j++) xx[i]-=matrix[i][j]*xx[j];
       }
 
//Вывод
       for (i=0; i<n; i++)
           cout << xx[i] << " ";
       cout << endl;
 
    delete[] matrix;
 
   return 0;
}
Тебе нужно будет заменить cout на название твоего файла, ну и естественно переменные
0
0 / 0 / 0
Регистрация: 03.05.2017
Сообщений: 16
15.05.2017, 23:35  [ТС] 3
и что тут есть что? я не понимаю
0
2 / 2 / 0
Регистрация: 06.01.2017
Сообщений: 56
16.05.2017, 20:04 4
Friday n, tmp-временная переменная. xx - массив который мы находим, ну это и есть та верхнетреугольная матрица, которая в результате будет.
C++
1
matrix[i][j]/=tmp;
здесь считай у меня идет деление если помнишь алгоритм это типа an1/a11.
C++
1
tmp*matrix[i][k]
процесс умножения если помнишь то в гауссе это присутствует. А потом вычитаю
C++
1
 xx[i]-=matrix[i][j]*xx[j];
как и в самом методе. Ну а потом уже вывод
0
5 / 5 / 1
Регистрация: 19.04.2017
Сообщений: 35
16.05.2017, 20:16 5
Детерминант матрицы что ли методом Гаусса вычислить?
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
int gauss_det(int size, double **arr, double &det)
{
    int i , j, k;
    det = 1;
    double b;
    for (i = 0; i < size; i++)
    {
        for (j = i + 1; j < size; j++)
        {
            if (arr[i][i] == 0)
            {
                if (arr[i][j] == 0)
                    b = 0;
                else
                    return 0;
            }
            else 
                b = arr[j][i] / arr[i][i];
            for (k = i; k < size; k++)
                arr[j][k] = arr[j][k] - arr[i][k] * b;
        }
        det *= arr[i][i];
    }
    return 1;
}
0
16.05.2017, 20:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.05.2017, 20:16
Помогаю со студенческими работами здесь

Метод Гаусса
Добрый вечер, можете написать программу для решения СЛАУ методом гаусса на Си, чтобы был прямой и...

Метод Гаусса
Как решить квадратную матрицу методом Гаусса, я ее привел к треугольному виду, не могу понять как...

Метод Гаусса
#include&lt;stdio.h&gt; #include&lt;iostream.h&gt; #include&lt;conio.h&gt; #include&lt;stdlib.h&gt; #include&lt;malloc.h&gt;...

метод гаусса
Помогите,пожалуйста Преподаватель попросил расписать программу по блокам #include &quot;stdio.h&quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru