3 / 4 / 1
Регистрация: 13.07.2011
Сообщений: 313

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

22.07.2011, 15:58. Показов 16459. Ответов 152
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть система линейных уравнений. В ней 4000 уравнений.
Киньте плиз код для её решения. Желательно, чтобы он был максимально быстрым.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.07.2011, 15:58
Ответы с готовыми решениями:

Решить систему линейных алгебраических уравнений
Решить CЛАУ 2A^tX=Y^2,где |2 1 5 6| |3| A= |5 2 2 6| Y= |1| |2 2 1 2| |2| |1 3 3 1|...

Методом Гаусса решить систему n линейных алгебраических уравнений
Помогите пожалуйста написать на с++ методом Гаусса решить систему n линейных алгебраических уравнений. Отсюда нашла именно ту тему там...

Решить систему алгебраических уравнений методом Гаусса
Решить систему алгебраических уравнений методом Гаусса: 6X1-X2-X3=11,33, -X1+6X2-X3=32, -X1-X2+6X3=42;

152
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
05.08.2011, 16:41
Студворк — интернет-сервис помощи студентам
Я за вводить писал всмысле из матрицы вводить. Ведь ввод А занимает кучу времениО_о
Ок, я работать, вечером привееду результаты в 2008
1
3 / 4 / 1
Регистрация: 13.07.2011
Сообщений: 313
05.08.2011, 16:43  [ТС]
Теперь тот же косяк и с матрицей коэффициентов))
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.08.2011, 16:57
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Введением EPS мы можем что то выграть, но не факт
А как еще сравнивать double с нулем?
А если не сравнивать, то работать будет только с матрицами без нулевых элементов.
Чтобы работало с любыми матрицами, находят опорный элемент. У вас я этого не увидел.
Хотя, возможно, плохо смотрел.
0
3 / 4 / 1
Регистрация: 13.07.2011
Сообщений: 313
05.08.2011, 17:20  [ТС]
Кстати, может кто знает какой нить матпакет, который сможет решить эту систему? что то типа mathlab?
0
Эксперт С++
 Аватар для grizlik78
2383 / 1667 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
05.08.2011, 17:32
hello19, ну а чем, собственно, matlab не подходит? Или scilab? Разумеется, надо использовать инструментарий для Sparse Matrix.
0
3 / 4 / 1
Регистрация: 13.07.2011
Сообщений: 313
05.08.2011, 17:35  [ТС]
scilab уже юзаю... хотелось бы чтобы пошустрее решало что-то...
Что касается матлаба, то никак не могу найти бесплатную версию... везде платить)
0
Эксперт С++
 Аватар для grizlik78
2383 / 1667 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
05.08.2011, 20:37
Цитата Сообщение от hello19 Посмотреть сообщение
scilab уже юзаю... хотелось бы чтобы пошустрее решало что-то...
hello19, sсilab матрицу из #30 решает меньше секунды. Надо ещё шустрее?
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
05.08.2011, 22:20
https://www.cyberforum.ru/cpp/thread3119.html - копался по форуму. А вобще всерьёз подумываю об испытании матричного метода решения СЛАУ
Вот что удалось откопать
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
#include <iostream>
#include <time.h>
using namespace std;
const int n = 4;
void vivod(int**, int);
void del(int**, int**, int, int, int);
long Determinant(int**, int);
void main()
{
    time_t t;
    srand(time(&t));
    int** a = new int*[n];
    for(int i = 0; i < n; i++)
        a[i] = new int[n];
    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j ++)
            a[i][j] = rand() % 10;
    vivod(a, n);
    long dt = Determinant(a, n);
    cout << "Determinant=" << dt <<endl;
    for(int i = 0; i < n; i++)
        delete[] a[i];
    delete[] a;
}
void vivod(int** a, int n)
{
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < n; j++)
            cout << a[i][j] <<'\t';
        cout << endl;
    }
}
void del(int** a, int** b, int m, int i, int j)
{
    int di = 0;
    int dj;
    for(int ki = 0; ki < m - 1; ki++)
    {
        if(ki == i) 
            di = 1;
        dj = 0;
        for(int kj = 0; kj < m - 1; kj++)
        {
            if(kj == j)
                dj = 1;
            b[ki][kj] = a[ki + di][kj + dj];
        }
    }
}
long Determinant(int** a, int n)
{
    int** b = new int*[n];
    for(int i = 0; i < n; i++)
        b[i] = new int[n];
    if(n < 1)
    {
        cout << "determinanta net" <<endl;
        return 0;
    }
    else
        if(n == 1)
            return a[0][0];
        else
            if(n == 2)
                return a[0][0] * a[1][1] - a[0][1] * a[1][0];
            else
            {
                int d = 0;
                int k = 1;
                
                for(int i  = 0; i < n; i++)
                {
                    del(a, b, n, i, 0);
                    d += k * a[i][0] * Determinant(b, n - 1);
                    k--;
                }
                return d;
            }
    for(int i = 0; i < n; i++)
        delete[] b[i];
    delete[] b;
    
    return 0;
}
Добавлено через 4 минуты
Сейчас сдесь смотрю http://alglib.sources.ru/matrixops/general/det.php

Добавлено через 37 секунд
Сейчас сдесь смотрю http://alglib.sources.ru/matrixops/general/det.php
2
3 / 4 / 1
Регистрация: 13.07.2011
Сообщений: 313
06.08.2011, 20:44  [ТС]
ммм.... интересность
0
3 / 4 / 1
Регистрация: 13.07.2011
Сообщений: 313
08.08.2011, 10:30  [ТС]
Я на самом деле тоже уже на alglib скачивал.. что-то у меня с ним не срослось)
Кстати, интересную особенность заметил. Помнишь ту мою проблему со считыванием файла?
Так вот, как только появляется косяк со считыванием из файла с расширением txt нужно просто его содержимое копирнуть в другой файл с расширением txt. Вообще понятия не имею почему и как это, но... работает.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
08.08.2011, 14:50
Цитата Сообщение от hello19 Посмотреть сообщение
Так вот, как только появляется косяк со считыванием из файла с расширением txt нужно просто его содержимое копирнуть в другой файл с расширением txt. Вообще понятия не имею почему и как это, но... работает.
возможно связано с кодировкой, ума не приложу. А косяки с файлами которые из форума сохраняешь или с твоими собстенными. Если с тему что сюда выкладывал - возможно редактор загрузки изменил в них кодировку
1
3 / 4 / 1
Регистрация: 13.07.2011
Сообщений: 313
08.08.2011, 14:52  [ТС]
с моими...
можно как нить вообще избавиться от этого? я имею ввиду от того, чтобы по 10 раз пересохранять содержимое файла?
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
08.08.2011, 16:19
Система решена!После реализации алгоритма вычёркивания строк и столбцов, метод Гаусса начал обрабатывать систему где-то за 2 секунды, решение занимает около 10 секунд. Сжатие матрицы сделал посредством обычных присваиваний, как оказалось работа memcpy приводила к потере строк, в результате скорость алгоритма немножко пострадала, зато считает правильно и довольно быстро!
В архивах - сам cpp-шник и Матрицы А В а также результат расчёта сохранённый в Х.txt
Вложения
Тип файла: rar SLAU8.cpp.rar (1.6 Кб, 19 просмотров)
Тип файла: rar ABX.rar (28.8 Кб, 14 просмотров)
1
3 / 4 / 1
Регистрация: 13.07.2011
Сообщений: 313
08.08.2011, 16:21  [ТС]
Сейчас посмотрим что там и как
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
08.08.2011, 16:25
Давай давай, напишешь как оттестируешь!
1
3 / 4 / 1
Регистрация: 13.07.2011
Сообщений: 313
08.08.2011, 16:26  [ТС]
Интересно интересно... просто я решил туже систему на матпакете scilib и результаты вообще не такие))))))
кстати, почему матрица А с таким непонятным расширением?
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
08.08.2011, 16:32
Цитата Сообщение от hello19 Посмотреть сообщение
кстати, почему матрица А с таким непонятным расширением?
Я её через свой конвертер переганял из 25 Мб-ной, кстати по запаре не тот файл с А бросил, вот он inpA, просто переименовал СЛУ1 - Коэффициенты. В программе юзаю именно её смотри код в срр-шнике
C++
1
2
3
4
5
6
if(bContinue)
    if(!(f = fopen(/*"A.txt.tmp"*/"inpA.txt","rb+")))
    {
        printf("ERROR OPEN A.TXT : %s\r\n",strerror(GetLastError()));
        bContinue = false;
    }
А результаты легко проверить подстановкой, не забывай что если в scilib вводил А с ноликами на главной диагонали, без вычёркиваний, решение не точным выйдет...Если элемент ноль - его нужно вычёркивать - этим и могу объяснить различие результатов. Можешь ввести проверку и перемножить А на Х
Вложения
Тип файла: rar inpA.rar (19.4 Кб, 11 просмотров)
1
3 / 4 / 1
Регистрация: 13.07.2011
Сообщений: 313
08.08.2011, 16:36  [ТС]
Наличие этих нулевых строчек по идее ни как не сказывается на результате.
В матпакете я решил систему порядка 3638 и 3635(без плохих строчек)
и результаты совпали (хотя есть отличия, но они где-то в 8 знаке после запятой)
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
08.08.2011, 16:40
Сейчас доделываю код проверки inpA*X - B если будут величины гораздо меньше нуля - посчиталось правильно, ещё напишу...
1
3 / 4 / 1
Регистрация: 13.07.2011
Сообщений: 313
08.08.2011, 16:41  [ТС]
я сейчас вручную прорешал 3 уравнения и... кароч ваще не сходится ни с одним результатом))))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.08.2011, 16:41

Решить систему линейных неравенств
Нужно написать программу, решающую систему неравенств. Программа должна правильно выполняться при любых значениях начальных...

Решить систему линейных уравнений вида Ax=b методом Зейделя
2)Решить систему линейных уравнений вида Ax=b методом Зейделя 6.9 0,0319 0,039 0,461 0,0191 6,0 0,0333 0,405 0,0134 0,0205 5,1...

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

Система линейных алгебраических уравнений
помогите исправить ошибки! #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;iomanip&gt; using namespace std; ...

Система линейных алгебраических уравнений
Помогите пожалуйта с програмой вопрос жизни и смерти!!! Мне нужно написать програму до завтра! Програма должна выводить решения всеми...


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

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

Новые блоги и статьи
Часы электронные
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