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

maidan

Member
Joined
Jan 6, 2005
Messages
93
Reaction score
4
Age
55
Нужен алгоритм решения таких же систем уравнений, где количество неизвестных
n^2,количество уравнений 2*n+1 , где n - натуральное число , n>2
 
Last edited by a moderator:

ploki

Member
Joined
May 16, 2005
Messages
237
Reaction score
180
Location
Москва
А можешь привести общий вид системы, зависящий от n?
В виде, наподобие x(i)+x(i+1)+... = d(i), где i=[1, 2*n+1].
А то из приведённого частного случая он не совсем ясен.
Или хотя бы вариант при n=4.
А лучше полную формулировку технического задания на разработку программного продукта.
 

maidan

Member
Joined
Jan 6, 2005
Messages
93
Reaction score
4
Age
55
Задание такое : найти значения квадратной матрицы по известным суммам строк и столбцов, но так как решить это не возможно, добавляется сумма диагонали.Вариант для n=4:
Code:
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.
 
C

Casp(!)

_http://math1.front.ru/-позыркай тут учебники есть неплохие

maidan, я поколдовал немного над исходником,но все равно он непригоден для вычисления подобных уравнений,у которых все коэ-ты перед х=1:(
можно его полностью перелопатить,но это и есть та проблема которую ты изначально хотел решить
 
Last edited by a moderator:

maidan

Member
Joined
Jan 6, 2005
Messages
93
Reaction score
4
Age
55
:( решение должго быть, надо только всем разом подумать .Если квадратный корень с отрицательного числа добыть можно, то в матеметике нет ничего не решаемого. :)
 

ploki

Member
Joined
May 16, 2005
Messages
237
Reaction score
180
Location
Москва
Решать в общем виде можно следующим образом:
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=...) выкидываем.
Остальные решаем. Всё.

Проверь, может я где ошибся :)
 
Last edited by a moderator:

maidan

Member
Joined
Jan 6, 2005
Messages
93
Reaction score
4
Age
55
Спасибо, вроде всё ок. Теперь буду пробовать писать прогу.
 
Last edited by a moderator:

maidan

Member
Joined
Jan 6, 2005
Messages
93
Reaction score
4
Age
55
Перед тем как писать прогу решил еще раз проверить, но не получилось(5 раз проверял).На первой странице есть пример для n=3 , решите плз, и напишите ответ(х1-х9). Или я не вьехал или где то ошибка.Если это я не понял, распишите пример для n=3 или n=4 , pls :help: :help2: :confused:
 

Ognev

ex-Team DUMPz
Joined
Aug 20, 2018
Messages
2,105
Reaction score
902
Age
25
Хрена, мужики, вы даете! Линейные системы всю жизнь через определители решали. Ну а для склонных к извращениям - можно программно искать преобразование, приводящее матрицу к диагональному виду.
Удачи.
 

ploki

Member
Joined
May 16, 2005
Messages
237
Reaction score
180
Location
Москва
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!
 
Last edited by a moderator:
C

Casp(!)

_http://alglib.sources.ru/linequations/
посмотри тут готовые алгоритмы в виде блоксхем для слау и прога для конвертирования в пас файлы
 

maidan

Member
Joined
Jan 6, 2005
Messages
93
Reaction score
4
Age
55
ploki, спасибо за ответ. нашел, где я ошибся.Но теперь вопрос постает иначе, как написать прогу ,которая будет решать системы с произвольным n( n>2)?
На теории получается, но на практике нет.Пример на 1 стр. - у меня результат совсем отличается от решения.
casp, смотрел , блок схем честно скажу не нашел, а алгоритмы не очень подходят,так как случай уникальный, та и по скорости они не отличаются( я уже там давно смотрел, алгоритмы рабочие , но уж слишком заумные и ограниченые в размерах системы. При небольшой переработке для больших систем, или долго работают, или перестают вообще работать)И эти алгоритмы используют матрицы коэфициентов, а в этом случае коэфициенты равны 1.
 

ploki

Member
Joined
May 16, 2005
Messages
237
Reaction score
180
Location
Москва
maidan, когда у система имеет более одного решения, естественно, что можно записать разные варианты общего вида решения, в зависимости от того, как выбраны неизвестные, задаваемые произвольными константами. Поэтому у разных людей вполне может совсем отличаться !вид записи! решения.

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