0 / 0 / 0
Регистрация: 30.06.2014
Сообщений: 9

Решение систем алгебраических уравнений

30.06.2014, 08:53. Показов 5865. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всех приветствую и желаю доброго дня!
Нуждаюсь в помощи по разработке алгоритма задания на языке С++
Необходимо написать программу для решения алгебраических уравнений и нахождения корней системы уравнения следующего вида:
a11+a12+a13=b14
a21+a22+a23=b24
a31+a32+a33=a34
Вот такая система, надеюсь на вашу помощь спасибо за внимание !
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.06.2014, 08:53
Ответы с готовыми решениями:

Метод Монте-Карло для решение систем линейных алгебраических уравнений
Здравствуйте форумчане, у меня, наверное, проблема больше с математикой. Попытался написать программу, которая решает СЛАУ методом...

Решение систем линейных алгебраических уравнений методом Гаусса с выбором главного элемента
Помогите пожалуйста найти решение системы линейных уравнений с матричными элементами. Условия задания матрицы в файле.

Помогите найти программу решения систем алгебраических уравнений методом Зейделя
Ребята, помогите найти программу решения систем алгебраических уравнений методом Зейделя. Код нужен на С++ или на С#. Переделывать с...

25
0 / 0 / 0
Регистрация: 30.06.2014
Сообщений: 9
30.06.2014, 12:38  [ТС]
Студворк — интернет-сервис помощи студентам
именно так
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
30.06.2014, 12:41
Цитата Сообщение от Relaxory Посмотреть сообщение
вот само задание
У Вас в учебнике не система линейных уравнений, а какая-то бредятина. Сами почитайте, да хоть в википедии.
Систему из трёх линейных уравнений я вам написал в корректной записи.
Насчёт кода - тут сложнее, я сам в С++ новичок. Мучайте поиск.
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
30.06.2014, 12:47
Relaxory, тогда читайте учебники по C++ для начинающих,или возьмите тему с форума и сделайте по аналогии.
1
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
30.06.2014, 13:04
Вот нашёл код. Автор кода говорит, что рабочий. Проверяйте, разбирайтесь.
Кликните здесь для просмотра всего текста

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
#include<iostream>
#include <math.h>
#include <stdlib.h>
#include <windows.h>
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    int i, j, n, m;
    //создаем массив
    cout << "Введите число уравнений: ";
    cin >> n;
    cout << "Введите число неизвестных: ";
    cin >> m;
    m += 1;
    float **matrix = new float *[n];
    for (i=0; i<n; i++)
             matrix[i] = new float [m];
 
    //инициализируем
    for (i = 0; i<n; i++)
        for (j = 0; j<m; j++)
        {
            cout << "Элемент " << "[" << i+1 << " , " << j+1 << "]: "  ;
            cin >> matrix[i][j];
        }
 
    //выводим массив
    cout << "matrix: " << endl;
    for (i=0; i<n; i++)
    {
        for (j=0; j<m; j++)
            cout << matrix[i][j] << " ";
        cout << endl;
    }
    cout << endl;
 
    //Метод Гаусса
    //Прямой ход, приведение к верхнетреугольному виду
    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;
}


P.S. Немного поправил форматирование. Кстати, четвёртая ссылка в гугле по запросу система линейных уравнений C++.
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
30.06.2014, 13:17
Попробую еще раз, только это уже более универсальный вариант
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
100
101
102
103
104
#include <iostream>
#include <cmath>
#include <cstdlib>
 
//Минор матрицы
double** minor(double** matrix, int row, int col, int size)
{
    double** minor;
    minor = new double*[size-1];
    int m_row = 0, m_col;
    for (int i = 0; i < size; i++)
    {
        m_col = 0;
        if(i != row)
        {
            minor[m_row] = new double[size-1];
            for (int j = 0; j < size; j++)
            {
                if(j != col)
                {
                    minor[m_row][m_col] = matrix[i][j];
                    m_col++;
                }
            }
            m_row++;
        }
    }
    return minor;
}
 
// Детерминант матрицы
double determinant(double** matrix,int size)
{
    if (size == 1)
        return matrix[0][0];
    else if (size == 2)
        return matrix[0][0] * matrix[1][1] - matrix[0][1] * matrix[1][0];
    double determ = 0;
    for (int j = 0; j < size; j++)
        if (matrix[0][j])
            determ += (j%2==0?1:-1) * matrix[0][j] * determinant(minor(matrix,0, j, size), size-1);
 
    return determ;
}
 
int main()
{
    char ch;
    setlocale(LC_ALL, "");
    do
    {
        system("cls");
        int row;
        std::cout << "Введите порядок уравнения: ";
        std::cin >> row;
        int col = row + 1;
        double d0[row][col];
        std::cout << "Введите коэффициенты уравнения:" << std::endl;
        for (int i = 0; i < row; i++)
            for (int j = 0; j < col; j++)
                std::cin >> d0[i][j];
        double ***d = new double **[col];
        for (int k = 0; k < col; k++)
        {
            d[k] = new double *[col];
            for (int i = 0; i < row; i++)
            {
                d[k][i] = new double[row];
                for (int j = 0; j < row; j++)
                {   
                    d[k][i][j] = d0[i][j];
                    if (k > 0 && j == k-1) d[k][i][j] = d0[i][col-1];
                }
            }
        }
        double det = determinant(d[0], row);
        std::cout << "determinant = " << det << std::endl;
        if (det != 0)
        {
            for (int k = 1; k < col; k++)
            {
                std::cout << "x" << k << " = " << determinant(d[k], row)/det << std::endl;
            }
        }
        else std::cout << "Корней нет!" << std::endl;
        for (int k = 0; k < col; k++)
        {
            for (int i =0; i < row; i++)
            {   
                delete[] d[k][i];
                d[k][i] = NULL;
            }
            delete[] d[k];
            d[k] = NULL;
        }
        delete[] d;
        d = NULL;
        std::cout << "Продолжить? ";
        std::cin >> ch;
    }
    while (ch != 'n');
    
    return 0;
}
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
30.06.2014, 14:09
Лучший ответ Сообщение было отмечено Relaxory как решение

Решение

Вот ещё очень простой, но при этом вполне работающий вариант (тоже поиск в гугле).

Кликните здесь для просмотра всего текста

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
#include <iostream>
#include <windows.h>
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    int a11, a12, a13, a21, a22, a23, a31, a32, a33, b1, b2, b3;
 
    cout << "Введите значение a11: ";
    cin >> a11;
    cout << "Введите значение a12: ";
    cin >> a12;
    cout << "Введите значение a13: ";
    cin >> a13;
    cout << endl;
 
    cout << "Введите значение a21: ";
    cin >> a21;
    cout << "Введите значение a22: ";
    cin >> a22;
    cout << "Введите значение a23: ";
    cin >> a23;
    cout << endl;
 
    cout << "Введите значение a31: ";
    cin >> a31;
    cout << "Введите значение a32: ";
    cin >> a32;
    cout << "Введите значение a33: ";
    cin >> a33;
    cout << endl;
 
    cout << "Введите значение b1: ";
    cin >> b1;
    cout << "Введите значение b2: ";
    cin >> b2;
    cout << "Введите значение b3: ";
    cin >> b3;
    cout << endl;
 
    int A1 = 0, A2 = 0, A3 = 0, A4 = 0, A5 = 0, A6 = 0, A7 = 0, A8 = 0;
 
    A1 = (a11 * a22) - (a21 * a12);
    A2 = (a11 * a23) - (a21 * a13);
    A3 = (a11 * b2) - (a21 * b1);
 
    A4 = (a11 * a32) - (a31 * a12);
    A5 = (a11 * a33) - (a31 * a13);
    A6 = (a11 * b3) - (a31 * b1);
 
    A7 = (A1 * A5) - (A4 * A2);
    A8 = (A1 * A6) - (A4 * A3);
 
    int x1 = 0, x2 = 0, x3 = 0, y = 0, z = 0;
 
    x3 = A8 / A7;
    y = A3 -(A2 * x3);
    x2 = y / A1;
    z = b1 - ((a12 * x2) + (a13 * x3));
    x1 = z / a11;
 
    cout << endl;
    cout << "x1 = " << x1 << endl;
    cout << "x2 = " << x2 << endl;
    cout << "x3 = " << x3 << endl;
 
    system("pause");
    return 0;
}


P.S. Тоже немного форматирование кода поправил.

Добавлено через 8 минут
А вот этот вариант и вовсе в теме, которая в шапке раздела С++ для начинающих прикреплена.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.06.2014, 14:09

Решение системы алгебраических уравнений
Доброго времени суток, форумчане :) Помогите пожалуйста решить задачу: Найти корни системы линейных алгебраических уравнений...

Решение системы линейных алгебраических уравнений
Добрый вечер!!! Помогите, пожалуйста, написать программу для решения системы уравнений итерационным методом(метод А-минимальных...

Решение СЛАУ - Системы линейных алгебраических уравнений
Задачу почти закончил писать, матрицу приводит к ступенчатому виду, только не могу понять как сделать обратный проход и найти корни...

Решение системы линейных алгебраических уравнений методом Гаусса
Решить систему n линейных алгебраических уравнений методом Гаусса. Использовать указатели.

Решение системы линейных алгебраических уравнений, метод простой итерации
Решить систему линейных алгебраических уравнений. Коэффициенты и свободные члены линейного уравнения считываются с предварительно...


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Опции темы

Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru