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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
Stas0n
3 / 4 / 0
Регистрация: 13.07.2011
Сообщений: 313
#1

Решение Системы уравнений - C++

19.07.2011, 13:15. Просмотров 2155. Ответов 3
Метки нет (Все метки)

У меня задача - решать систему уравнений. матрица системы имеет порядок 3600. В будущем придется решать системы порядка 100 000.
Мне дана матрица коэффициентов.
Дана она мне в необычном виде.
Исходная СЛУ
4x1 + 2x2 + 9x3 = 1
x2 + 6x3 = 7
4x1 + 2x3 = 0
коэффициенты исходной СЛУ
(1;4)(2;2)(3;9)
(2;1)(3;6)
(1;4)(3;2)
Каждая строка файла содержит информацию о ненулевых коэффициентах одного уравнения СЛУ.
Количество строк в файле соответствует количеству уравнений СЛУ.
Порядковый номер строки в файле соответствует номеру уравнения i.

Каждая строка файла состоит из групп чисел (j ; k(i;j))
• Первое число в группе – это значение номера j коэффициента k(i;j) при неизвестном x(j) в уравнении i
• Второе число в группе – это значение коэффициента k(i;j)

Количество таких групп в строке файла (т.е. количество ненулевых коэффициентов в уравнении) может быть любое – от 1 до n, где n – количество неизвестных в СЛУ.

Но это все го лишь пример. У меня же матрица 3638 порядка. Написал рабочий код(тестил его на матрицах 3 и 4 порядков). Запускаю его на выполнение (для матрицы 3638 порядка) - стопариться программа. Стопарится она, даже если порядок систему 300. Как исправить, чтобы программа полностью решала задачу(для порядка 3638 например, хотя надо и больше)
Я написал программу, но она стопариться на порядке 350. Что делать?
Как вообще научить программу работать с таким огромным массивом данных?

Прога прилагается
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.07.2011, 13:15     Решение Системы уравнений
Посмотрите здесь:

Решение системы уравнений - C++
a1x+b1y+c1=0 a2x+b2y+c2=0 Вывести решение системы (два числа – x и y) с шестью знаками после запятой. Если единственного решения не...

Решение системы линейных уравнений - C++
Не могу сделать прогу на С++. Кто сделает - огромное спасибо. Решить систему линейных уравнений 3x-5y+2z=2, 3x-7y+2z=0, x+5y-4z=-2

Решение системы нелинейных уравнений - C++
найти решения уравнения графическим методом и методом поиска решений {cos(y+0,5)+x=0,8; { sinx-2y=1,6. P.S. только там скобка...

Найти решение системы уравнений - C++
Здравствуйте. Помогите, пожалуйста, составить программу. Найти решение системы линейных уравнений вида A1·x + B1·y = C1, A2·x + B2·y =...

Решение системы тригонометрических уравнений - C++
Здравствуйте, форумчане! С наступающим новым годом) Возник вопрос: какими методами можно решить следующую систему уравнений, используя...

Решение системы линейных уравнений - C++
Помогите решить на Си

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alexcoder
1462 / 676 / 88
Регистрация: 03.06.2009
Сообщений: 3,547
Завершенные тесты: 1
19.07.2011, 13:21     Решение Системы уравнений #2
Сложность алгоритма перемножения матриц порядка n^3
http://ru.wikipedia.org/wiki/%D0%A3%...80.D0.B8.D1.86
Если верить википедии, можно добиться сложности n^2
-=ЮрА=-
Заблокирован
Автор FAQ
19.07.2011, 15:05     Решение Системы уравнений #3
СЛАУ решаются методом Гаусса, он намного менее ресурсозатратен чем матричный способ, особенно для матриц большого порядка, это ещё в универе проходят!!!
Вот проверенные на 100% работоспосбные функции прямого и обратного хода метода Гаусса
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
void PryamoiHod(int n, double **a, double *b)
{
    double v;
    for(int k = 0,i,j,im; k < n - 1; k++)
    {
        im = k;
        for(i = k + 1; i < n; i++)
        {
            if(fabs(a[im][k]) < fabs(a[i][k]))
            {
                im = i;
            }
        }
        if(im != k)
        {
            for(j = 0; j < n; j++)
            {
                v        = a[im][j];
                a[im][j] = a[k][j];
                a[k][j]  = v;
            }
            v     = b[im];
            b[im] = b[k];
            b[k]  = v;
        }
        for(i = k + 1; i < n; i++)
        {
            v       = a[i][k]/a[k][k];
            a[i][k] = 0;
            b[i]    = b[i] - v*b[k];
            for(j = k + 1; j < n; j++)
            {
                a[i][j] = a[i][j] - v*a[k][j];
            }
        }
    }
}
 
void ObratniHod(int n, double **a, double *b, double *x)
{
    double s = 0;
    x[n - 1] = b[n - 1]/a[n - 1][n - 1];
    for(int i = n - 2, j; 0 <= i; i--)
    {
        s = 0;
        for(j = i + 1; j < n; j++)
        {
            s = s+a[i][j]*x[j];
        }
        x[i] = (b[i] - s)/a[i][i];
    }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.07.2011, 15:35     Решение Системы уравнений
Еще ссылки по теме:

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

Решение системы нелинейных уравнений - C++
Никак не могу разобраться с написанием программы на с++, которая бы решала систему нелинейных уравнений...

Решение системы линейных уравнений - C++
Компилятор wxDev-c++. Ошибка:C:\Program Files\Dev-Cpp\çàäà÷è\ãëàâà1\Ïåðâàÿ çàäà÷à\Makefile.win Error 1 #include &lt;cstdlib&gt; #include...

Решение системы уравнений с N>=10000 переменными - C++
Здравствуйте есть такая проблема: необходимо решить систему линейных алгеброических уравнений, проблема состоит в том что число уравнений...

Найти решение системы линейных уравнений - C++
Даны действительные числа a1, b1, c1, a2, b2, c2. Выяснить, верно ли, что |a1*b2-a2*b1|&gt;=0.0001, и если верно, то найти решение системы...

Решение системы уравнений методом Гауса - C++
Вот, ради интереса попробовал написать программу (С++). Сейчас она работает, но выполняет лишь первый шаг. Нужно чтобы программа выполняла...


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

Или воспользуйтесь поиском по форуму:
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
19.07.2011, 15:35     Решение Системы уравнений #4
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
СЛАУ решаются методом Гаусса,
угу, особенно с разежнной матрицей
Цитата Сообщение от hello19 Посмотреть сообщение
порядка 100 000.
Yandex
Объявления
19.07.2011, 15:35     Решение Системы уравнений
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru