Система уравнений

  • Автор темы maidan
  • 2807
  • Обновлено
  • 16, Oct 2005
  • #2
Ни в одном учебнике нету, проверено - 100% . Если будете так любезны и дадите ссылку на учебник, буду очень благодарен.Сколько я не мучался , а алгоритм для решения системы не нашел
 

maidan


Рег
06 Jan, 2005

Тем
2

Постов
15

Баллов
35
  • 16, Oct 2005
  • #3
Это из области линейных уравнений и соотвественно линейное программирование. Вот например теория http://www0.krgtu.ru/WD/TUTOR/lp/lp01.html

или вот
http://www.murm.ru/~alexeyf/lp_faq.html

Да, и не ленитесь в библиотеку при учебном заведении заглядывать. Бывает весьма полезно.
 

jonjonson


Рег
04 Mar, 2004

Тем
0

Постов
2

Баллов
2
  • 16, Oct 2005
  • #4
Согласен , что из области линейных уравнений, но в уравнениях нет коэфициентов, что делает невозможным решение системы известными мне алгоритмами.Можна поробовать использовать нейроные сети, но понятия не имею как ими пользоватся.Буду очень признателен, если хоть какой то подобный пример покажите.Любой алгоритм для решения систем уранений будет очень кстати.



Спасибо всем за ответы P.s. Я в библиотеке "живу"
 

maidan


Рег
06 Jan, 2005

Тем
2

Постов
15

Баллов
35
  • 16, Oct 2005
  • #5
пример на c++ думаю устроит пример решения снау у самого лаба такая была PS если сильно надо,могу еще и блоксхему подогнать в ворде _http://lumtu.com/index.php?action=downloadfile & filename=LW8.7z & directory= &
 

I AM


Рег
23 Jul, 2011

Тем
49554

Постов
57426

Баллов
552966
  • 16, Oct 2005
  • #6
maidan:
но в уравнениях нет коэфициентов
Что значит нет - если не пишется, значит равен 1-це.
 

duplex


Рег
19 Feb, 2005

Тем
0

Постов
1

Баллов
1
  • 16, Oct 2005
  • #7
Casp(!) посмотрел я пример, чёто немного я не догнал, если не трудно блок схему нарисуй( можеш в блокноте набросать). а что пример должен делать(что там за bitmap)? а то щас с++builder'a нету, токо дельфя
 

maidan


Рег
06 Jan, 2005

Тем
2

Постов
15

Баллов
35
  • 16, Oct 2005
  • #8
duplex:
Что значит нет - если не пишется, значит равен 1-це.
Пусть 1 , но всё равно не решается. У меня такое впечитление ,что и вышку тоже завалю :help2:
 

maidan


Рег
06 Jan, 2005

Тем
2

Постов
15

Баллов
35
  • 16, Oct 2005
  • #9
maidan:
Casp(!) посмотрел я пример, чёто немного я не догнал, если не трудно блок схему нарисуй( можеш в блокноте набросать). а что пример должен делать(что там за bitmap)? а то щас с++builder'a нету, токо дельфя
битмап там просто для красы,а пример после запуска просит нажать кнопь для генерации случайных коэффициентов,в твоем случае единицы,а затем уже выбрать колво неизвестных,и потом на другой вкладке тебе доступна кнопь найти решение,и не помню по какому алгоритму начнется поиск решения!!!

тебе надо будет нажимать кнопь найти решения,пока все х не найдены.

со случайными коэф она 100% работает,не знаю как в твоем случае,если и не будет работать,то только изза неприменимости алгоритма к твоему ур-нию,

а еще лучше попроси знающих си людей(на форуме их мноОого) пусть помогут с переводом из си на делфи
 

I AM


Рег
23 Jul, 2011

Тем
49554

Постов
57426

Баллов
552966
  • 16, Oct 2005
  • #10
Во-первых, это из области линейной алгебры

Во-вторых, система состоит из семи уравнений при девяти неизвестных, причём первые шесть уравнений линейно зависимы, из-за чего ранг матрицы коэффициентов системы равен 6!

Поэтому при условии произвольности значений d1-d7 система неразрешима!



Она станет разрешимой в общем виде, либо если связать нетривиальным соотношением d1-d6 (например, d1=d4, d2=d5, d3=d6), либо если изменить какое-то из первых шести уравнений (например, в первое уравнение добавить “+x4”, то есть x1+x2+x3+x4=d1. При этом ранг матрицы станет равным 7). К счастью, на практике такая система вряд ли встретится.

Допустим, мы приняли d4:=d1, d5:=d2, d6:=d3, что гарантирует нам существование решения.

Тогда общее решение сразу ясно для трёх (число неизвестных минус ранг) линейно независимых неизвестных, например: x1=C1, x2=C2, x9=C3 (где C1, C2 и C3 – некоторые константы).

Остальные неизвестные выражаем через C1, С2, C3 и d1, ..., d7:

x3=-C1-C2+d1

x4=-C2+2*C3+d1+d2-d3-d7

x5=-C1-C3+d7

x6=C1+C2-C3-d1+d3

x7=-C1+C2-2*C3-d2+d3+d7

x8=-C2+C1+C3+d2-d7

Фу, запарился считать, но в принципе, задачка для школы - вопрос в том, как изменить условие для гарантированного существования решения.

P.S.

При чём здесь линейное программирование и нейронные сети - не понял.

Также не понял, как это "нет коэффициентов" ?
 

ploki


Рег
16 May, 2005

Тем
0

Постов
22

Баллов
22
  • 16, Oct 2005
  • #11
Добавление по решению на компьютере: Программы для решения систем в общем символьном виде без ограничений довольно сложны, поскольку требуют не только проверки ранга и реализации какого-то из численных методов, но также символьного процессора (правда для данного частного случая вполне понятного и простого), анализа обусловленности и множества других тонкостей. По сути, даже MathCad относительно недавно (в 10 версии!!!) дорос до нормального символьного решения систем, да и то меня даже в 13 версии не устраивает форма выдачи сообщений об ошибках - фиг поймёшь, что на самом деле не так. А в качестве задачки по программированию я себе такое просто не представляю. Посмотреть стандартные методы численного решения СЛАУ лучше всего на _http://alglib.sources.ru
 

ploki


Рег
16 May, 2005

Тем
0

Постов
22

Баллов
22
  • 16, Oct 2005
  • #12
Если d1-d7 абсолютно разные, то система не разрешима в общем виде. Складываем первые три уравнения: x1+x2+x3+x4+x5+x6+x7+x8+x9=d1+d2+d3 Складываем три следующих уравнения: x1+x2+x3+x4+x5+x6+x7+x8+x9=d4+d5+d6 Получаем: d1+d2+d3=d4+d5+d6 - ?
 

ploki


Рег
16 May, 2005

Тем
0

Постов
22

Баллов
22
  • 16, Oct 2005
  • #13


вот пример, надите х1-х9 . жду ответов и алгоритмы решения
 

maidan


Рег
06 Jan, 2005

Тем
2

Постов
15

Баллов
35
  • 16, Oct 2005
  • #14
ploki:

Получаем:
d1+d2+d3=d4+d5+d6 - ?
Правильно, но наверно седьмое уравнение для этого и нужно
 

maidan


Рег
06 Jan, 2005

Тем
2

Постов
15

Баллов
35
  • 16, Oct 2005
  • #15
А такая система сразу становится разрешимой! Так бы сразу и написали. Ранг равен 6, => Решение в общем виде (один из вариантов!): x1=C1 x2=C2 x3=-C1-C2+37 x4=-C2+2*C3+4 x5=-C1-C3+28 x6=C1+C2-C3-12 x7=-C1+C2-2*C3+17 x8=C1-C2+C3-9 x9=C3
 

ploki


Рег
16 May, 2005

Тем
0

Постов
22

Баллов
22
  • 16, Oct 2005
  • #16
Правильно, но наверно седьмое уравнение для этого и нужно
С этого места лучше в нормальном учебнике линейной алгебры почитайте про линейную зависимость. А то долго придётся батоны жать, а лучше, чем в учебнике, вряд ли скажу. Я специализируюсь в другой области.
 

ploki


Рег
16 May, 2005

Тем
0

Постов
22

Баллов
22
  • 16, Oct 2005
  • #17
ploki:
...лучше в нормальном учебнике линейной алгебры почитайте про линейную зависимость...
Во-первых мне приятней когда разговоривают на "ты", Во-вторых , где взять нормальный учебник (в электроном виде) , уже поиск юзел, результатов - null
 

maidan


Рег
06 Jan, 2005

Тем
2

Постов
15

Баллов
35
  • 16, Oct 2005
  • #18
Нужен алгоритм решения таких же систем уравнений, где количество неизвестных n^2,количество уравнений 2*n+1 , где n - натуральное число , n>2
 

maidan


Рег
06 Jan, 2005

Тем
2

Постов
15

Баллов
35
  • 16, Oct 2005
  • #19
А можешь привести общий вид системы, зависящий от n? В виде, наподобие x(i)+x(i+1)+... = d(i), где i=[1, 2*n+1]. А то из приведённого частного случая он не совсем ясен. Или хотя бы вариант при n=4. А лучше полную формулировку технического задания на разработку программного продукта.
 

ploki


Рег
16 May, 2005

Тем
0

Постов
22

Баллов
22
  • 16, Oct 2005
  • #20
Задание такое : найти значения квадратной матрицы по известным суммам строк и столбцов, но так как решить это не возможно, добавляется сумма диагонали.Вариант для n=4:
 x1+x2+x3+x4=d1;
x5+x6+x7+x8=d2;
x9+x10+x11+x12=d3;
x13+x14+x15+x16=d4;
x1+x5+x9+x13=d5;
x2+x6+x10+x14=d6;
x3+x7+x11+x15=d7;
x4+x8+x12+x16=d8;
x1+x6+x11+x16=d9;

Предполагается что n будет больше 200 , а может и 5000.
 

maidan


Рег
06 Jan, 2005

Тем
2

Постов
15

Баллов
35
  • 16, Oct 2005
  • #21
_http://math1.front.ru/-позыркай тут учебники есть неплохие maidan, я поколдовал немного над исходником,но все равно он непригоден для вычисления подобных уравнений,у которых все коэ-ты перед х=1 можно его полностью перелопатить,но это и есть та проблема которую ты изначально хотел решить
 

I AM


Рег
23 Jul, 2011

Тем
49554

Постов
57426

Баллов
552966
  • 17, Oct 2005
  • #22
решение должго быть, надо только всем разом подумать .Если квадратный корень с отрицательного числа добыть можно, то в матеметике нет ничего не решаемого.
 

maidan


Рег
06 Jan, 2005

Тем
2

Постов
15

Баллов
35
  • 17, Oct 2005
  • #23
Решать в общем виде можно следующим образом:

1.

Проверяем условие (d(1)+...+d(n)=d(n+1)+...+d(2*n))

2.

Неизвестным x(1), ..., x(n-1) сопоставляем константы С(1), ...,C(n-1), неизвестным x(n+1), ..., x(2*n-1) сопоставляем константы С(n), ...,C(2*n-2) и т.д. вплоть до С(n^2-2*n).

3.

Неизвестные x(n), x(2*n), ..., x((n-2)*n), x(n^2-n+1), x(n^2-n+2), ..., x(n^2-2) выражаем через уже известные C(i).

4.

Получаем нормальную систему из пяти уравнений с 4 неизвестными, одно из первых четырёх уравнений выкидываем (они линейно зависимы) и решаем любым методом (например, Якоби).

5.

Ура, это всё.

Пример для n=4:

x1=C1

x2=C2

x3=C3

x5=C4

x6=C5

x7=C6

x9=C7

x10=C8

x5=-C1-C2-C3+d1

x8=-C4-C5-C6+d2

x13=-C1-C4-C7+d5

x14=-C2-C5-C8+d6

Осталась система:

x11+x12=d3-...

x15+x16=d4-...

x11+x15=d7-...

x12+x16=d8-...

x11+x16=d9-...

(Замечу, что правые части просто лень писать - долго, я тут попробовал, страницу исписал и надоело, надо на компе!)

Первое уравнение (x11+x12=...) выкидываем.

Остальные решаем.

Всё. Проверь, может я где ошибся
 

ploki


Рег
16 May, 2005

Тем
0

Постов
22

Баллов
22
  • 17, Oct 2005
  • #24
Перед тем как писать прогу решил еще раз проверить, но не получилось(5 раз проверял).На первой странице есть пример для n=3 , решите плз, и напишите ответ(х1-х9). Или я не вьехал или где то ошибка.Если это я не понял, распишите пример для n=3 или n=4 , pls :help2:
 

maidan


Рег
06 Jan, 2005

Тем
2

Постов
15

Баллов
35
  • 17, Oct 2005
  • #25
Хрена, мужики, вы даете! Линейные системы всю жизнь через определители решали. Ну а для склонных к извращениям - можно программно искать преобразование, приводящее матрицу к диагональному виду. Удачи.
 

Ognev


Рег
20 Aug, 2004

Тем
8

Постов
99

Баллов
179
  • 17, Oct 2005
  • #26
To Ognev - это совсем не тот случай. To maidan - проверил для n=4. Мой алгоритм сработал правильно.

Вот полный ответ:

x1=C1

x2=C2

x3=C3

x4=-C1-C2-C3+d1

x5=C4

x6=C5

x7=C6

x8=-C4-C5-C6+d2

x9=C7

x10=C8

x11=1/2*d9+1/2*d7-1/2*C3-1/2*C6-1/2*d4+1/2*d5-1/2*C4-1/2*C7+1/2*d6-1/2*C2-1/2*C8-C1-C5

x12=-1/2*d9+1/2*d7+1/2*C3+1/2*C6-1/2*d4+1/2*d5+1/2*C4-1/2*C7+1/2*d6+1/2*C2-1/2*C8+d8-d1+C1-d2+C5

x13=-C1-C4-C7+d5

x14=-C2-C5-C8+d6

x15=-1/2*d9+1/2*d7-1/2*C3-1/2*C6+1/2*d4-1/2*d5+1/2*C4+1/2*C7-1/2*d6+1/2*C2+1/2*C8+C1+C5

x16=1/2*d9-1/2*d7+1/2*C3+1/2*C6+1/2*d4-1/2*d5+1/2*C4+1/2*C7-1/2*d6+1/2*C2+1/2*C8

Я проверил, что уровнения выполняются.

Но может, где при перезаписи на форум слегка ошибся. Добавление - заметил ошибку в своём предыдущем посте: было x5=-C1-C2-C3+d1, надо x4=-C1-C2-C3+d1!
 

ploki


Рег
16 May, 2005

Тем
0

Постов
22

Баллов
22
  • 17, Oct 2005
  • #27
_http://alglib.sources.ru/linequations/ посмотри тут готовые алгоритмы в виде блоксхем для слау и прога для конвертирования в пас файлы
 

I AM


Рег
23 Jul, 2011

Тем
49554

Постов
57426

Баллов
552966
  • 17, Oct 2005
  • #28
ploki, спасибо за ответ. нашел, где я ошибся.Но теперь вопрос постает иначе, как написать прогу ,которая будет решать системы с произвольным n( n>2)? На теории получается, но на практике нет.Пример на 1 стр.

- у меня результат совсем отличается от решения. casp, смотрел , блок схем честно скажу не нашел, а алгоритмы не очень подходят,так как случай уникальный, та и по скорости они не отличаются( я уже там давно смотрел, алгоритмы рабочие , но уж слишком заумные и ограниченые в размерах системы.

При небольшой переработке для больших систем, или долго работают, или перестают вообще работать)
 

maidan


Рег
06 Jan, 2005

Тем
2

Постов
15

Баллов
35
  • 17, Oct 2005
  • #29
ploki, спасибо за ответ. нашел, где я ошибся.Но теперь вопрос постает иначе, как написать прогу ,которая будет решать системы с произвольным n( n>2)? На теории получается, но на практике нет.Пример на 1 стр.

- у меня результат совсем отличается от решения. casp, смотрел , блок схем честно скажу не нашел, а алгоритмы не очень подходят,так как случай уникальный, та и по скорости они не отличаются( я уже там давно смотрел, алгоритмы рабочие , но уж слишком заумные и ограниченые в размерах системы.

При небольшой переработке для больших систем, или долго работают, или перестают вообще работать)И эти алгоритмы используют матрицы коэфициентов, а в этом случае коэфициенты равны 1.
 

maidan


Рег
06 Jan, 2005

Тем
2

Постов
15

Баллов
35
  • 18, Oct 2005
  • #30
maidan, когда у система имеет более одного решения, естественно, что можно записать разные варианты общего вида решения, в зависимости от того, как выбраны неизвестные, задаваемые произвольными константами.

Поэтому у разных людей вполне может совсем отличаться !вид записи! решения.

По поводу алгоритма - вроде пост номер 26 нормально описывает алгоритм при любом n. Или есть трудность в решении однозначно определённой системы из четырёх уравнений с четырьмя неизвестными? Мне писать прогу в лом, я сейчас две другие проги пишу, извини.

Но на конкретный вопрос отвечу.
 

ploki


Рег
16 May, 2005

Тем
0

Постов
22

Баллов
22
  • 24, Nov 2016
  • #31
Причем здесь определители есть два способа- либо прямой приведение к треугольной форме, либо итерационный (пример метод Зейделя)
 

kinpan


Рег
10 Jan, 2005

Тем
1

Постов
8

Баллов
18
Тем
49554
Комментарии
57426
Опыт
552966

Интересно