Форум сайта python.su
0
Здравствуйте! Возникла необходимость решить систему из 16 линейных уравнений.Для решения задачи использую Numpy.
xr = numpy.linalg.solve(ge,kon)
Traceback (most recent call last): File "C:\Users\777\Desktop\j.py", line 18, in <module> xr = numpy.linalg.solve(ge,kon) File "C:\Python27\lib\site-packages\numpy\linalg\linalg.py", line 328, in solve raise LinAlgError, 'Singular matrix' LinAlgError: Singular matrix
522378 -- 1039847 -- 522378 -- -- 1039847 -- 522378 -- 1039847 -- 522378 -- 1039847 -- 522378 -- 1039847 -- 522378 -- 1039847 -- 522378 -- 1039847 -- 522378 -- 1039847 521964 -- 1040563 -- 521964 -- -- 1040563 -- 521964 -- 1040563 -- 521964 -- 1040563 -- 521964 -- 1040563 -- 521964 -- 1040563 -- 521964 -- 1040563 -- 521964 -- 1040563 522051 -- 1040675 -- 522051 -- -- 1040675 -- 522051 -- 1040675 -- 522051 -- 1040675 -- 522051 -- 1040675 -- 522051 -- 1040675 -- 522051 -- 1040675 -- 522051 -- 1040675 522128 -- 1040708 -- 522128 -- -- 1040708 -- 522128 -- 1040708 -- 522128 -- 1040708 -- 522128 -- 1040708 -- 522128 -- 1040708 -- 522128 -- 1040708 -- 522128 -- 1040708 521858 -- 1040674 -- 521858 -- -- 1040674 -- 521858 -- 1040674 -- 521858 -- 1040674 -- 521858 -- 1040674 -- 521858 -- 1040674 -- 521858 -- 1040674 -- 521858 -- 1040674 522378 -- 1040847 -- 522378 -- -- 1040847 -- 522378 -- 1040847 -- 522378 -- 1040847 -- 522378 -- 1040847 -- 522378 -- 1040847 -- 522378 -- 1040847 -- 522378 -- 1040847 521814 -- 1040677 -- 521814 -- -- 1040677 -- 521814 -- 1040677 -- 521814 -- 1040677 -- 521814 -- 1040677 -- 521814 -- 1040677 -- 521814 -- 1040677 -- 521814 -- 1040677 521378 -- 1039847 -- 521378 -- -- 1039847 -- 521378 -- 1039847 -- 521378 -- 1039847 -- 521378 -- 1039847 -- 521378 -- 1039847 -- 521378 -- 1039847 -- 521378 -- 1039847 521952 -- 1040772 -- 521952 -- -- 1040772 -- 521952 -- 1040772 -- 521952 -- 1040772 -- 521952 -- 1040772 -- 521952 -- 1040772 -- 521952 -- 1040772 -- 521952 -- 1040772 522054 -- 1040891 -- 522054 -- -- 1040891 -- 522054 -- 1040891 -- 522054 -- 1040891 -- 522054 -- 1040891 -- 522054 -- 1040891 -- 522054 -- 1040891 -- 522054 -- 1040891 521798 -- 1040816 -- 521798 -- -- 1040816 -- 521798 -- 1040816 -- 521798 -- 1040816 -- 521798 -- 1040816 -- 521798 -- 1040816 -- 521798 -- 1040816 -- 521798 -- 1040816 521976 -- 1040917 -- 521976 -- -- 1040917 -- 521976 -- 1040917 -- 521976 -- 1040917 -- 521976 -- 1040917 -- 521976 -- 1040917 -- 521976 -- 1040917 -- 521976 -- 1040917 521916 -- 1040899 -- 521916 -- -- 1040899 -- 521916 -- 1040899 -- 521916 -- 1040899 -- 521916 -- 1040899 -- 521916 -- 1040899 -- 521916 -- 1040899 -- 521916 -- 1040899 521823 -- 1040891 -- 521823 -- -- 1040891 -- 521823 -- 1040891 -- 521823 -- 1040891 -- 521823 -- 1040891 -- 521823 -- 1040891 -- 521823 -- 1040891 -- 521823 -- 1040891 521875 -- 1040963 -- 521875 -- -- 1040963 -- 521875 -- 1040963 -- 521875 -- 1040963 -- 521875 -- 1040963 -- 521875 -- 1040963 -- 521875 -- 1040963 -- 521875 -- 1040963 521983 -- 1041008 -- 521983 -- -- 1041008 -- 521983 -- 1041008 -- 521983 -- 1041008 -- 521983 -- 1041008 -- 521983 -- 1041008 -- 521983 -- 1041008 -- 521983 -- 1041008
37300 44500 79300 42699 64500 37300 50000 37300 185500 73000 235500 97400 271400 289200 501900 134000
Отредактировано ingushet (Ноя. 11, 2012 13:30:19)
Офлайн
63
Ошибка: матрица вырожденная (матрица, определитель которой равен 0). Проверь…
Дай полный текст программы…
Отредактировано 4kpt (Ноя. 11, 2012 13:44:08)
Офлайн
0
проверил :
k=numpy.linalg.det(ge)
Офлайн
0
в математике не силен, возможен ли другой вариант решения?
Либо преобразования для дальнейшего решения?
Отредактировано ingushet (Ноя. 11, 2012 14:01:31)
Офлайн
18
может быть, нужно найти ФСР? Не уверен, что numpy умеет это делать.
Офлайн
0
что такое ФСР?
Офлайн
43
работает же все
nb Out[93]: array([ 37300, 44500, 79300, 42699, 64500, 37300, 50000, 37300, 185500, 73000, 235500, 97400, 271400, 289200, 501900, 134000]) na Out[94]: array([['522378', '1039847', '522378', '1039847', '522378', '1039847', '522378', '1039847', '522378', '1039847', '522378', '1039847', '522378', '1039847', '522378', '1039847'], ['521964', '1040563', '521964', '1040563', '521964', '1040563', '521964', '1040563', '521964', '1040563', '521964', '1040563', '521964', '1040563', '521964', '1040563'], ['522051', '1040675', '522051', '1040675', '522051', '1040675', '522051', '1040675', '522051', '1040675', '522051', '1040675', '522051', '1040675', '522051', '1040675'], ['522128', '1040708', '522128', '1040708', '522128', '1040708', '522128', '1040708', '522128', '1040708', '522128', '1040708', '522128', '1040708', '522128', '1040708'], ['521858', '1040674', '521858', '1040674', '521858', '1040674', '521858', '1040674', '521858', '1040674', '521858', '1040674', '521858', '1040674', '521858', '1040674'], ['522378', '1040847', '522378', '1040847', '522378', '1040847', '522378', '1040847', '522378', '1040847', '522378', '1040847', '522378', '1040847', '522378', '1040847'], ['521814', '1040677', '521814', '1040677', '521814', '1040677', '521814', '1040677', '521814', '1040677', '521814', '1040677', '521814', '1040677', '521814', '1040677'], ['521378', '1039847', '521378', '1039847', '521378', '1039847', '521378', '1039847', '521378', '1039847', '521378', '1039847', '521378', '1039847', '521378', '1039847'], ['521952', '1040772', '521952', '1040772', '521952', '1040772', '521952', '1040772', '521952', '1040772', '521952', '1040772', '521952', '1040772', '521952', '1040772'], ['522054', '1040891', '522054', '1040891', '522054', '1040891', '522054', '1040891', '522054', '1040891', '522054', '1040891', '522054', '1040891', '522054', '1040891'], ['521798', '1040816', '521798', '1040816', '521798', '1040816', '521798', '1040816', '521798', '1040816', '521798', '1040816', '521798', '1040816', '521798', '1040816'], ['521976', '1040917', '521976', '1040917', '521976', '1040917', '521976', '1040917', '521976', '1040917', '521976', '1040917', '521976', '1040917', '521976', '1040917'], ['521916', '1040899', '521916', '1040899', '521916', '1040899', '521916', '1040899', '521916', '1040899', '521916', '1040899', '521916', '1040899', '521916', '1040899'], ['521823', '1040891', '521823', '1040891', '521823', '1040891', '521823', '1040891', '521823', '1040891', '521823', '1040891', '521823', '1040891', '521823', '1040891'], ['521875', '1040963', '521875', '1040963', '521875', '1040963', '521875', '1040963', '521875', '1040963', '521875', '1040963', '521875', '1040963', '521875', '1040963'], ['521983', '1041008', '521983', '1041008', '521983', '1041008', '521983', '1041008', '521983', '1041008', '521983', '1041008', '521983', '1041008', '521983', '1041008']], dtype='|S7') np.linalg.solve(na,nb) Out[95]: array([ -2.43316710e+101, 6.68208273e+100, 2.29391012e+098, 1.05197199e+101, 7.61282498e+098, 9.30931038e+100, -4.19905303e+098, -1.96617794e+101, 1.69165939e+098, 1.47401094e+100, -2.21377315e+098, 1.06715305e+101, -7.24459489e+114, -1.96406281e+117, 7.24459489e+114, 1.96406281e+117])
Офлайн
18
sergeekЭто частное решение, причем, наверное, не самое лучшее. Видимо внутри какой-нибудь итерационный метод. Так как ранг матрицы - 2, то общее решение - 14 лнз векторов
работает же все
Отредактировано adray (Ноя. 11, 2012 14:58:38)
Офлайн
0
import numpy r1=numpy.array([ 37300, 44500, 79300, 42699, 64500, 37300, 50000, 37300, 185500, 73000, 235500, 97400, 271400, 289200, 501900, 134000]) r=numpy.array([['522378', '1039847', '522378', '1039847', '522378', '1039847', '522378', '1039847', '522378', '1039847', '522378', '1039847', '522378', '1039847', '522378', '1039847'], ['521964', '1040563', '521964', '1040563', '521964', '1040563', '521964', '1040563', '521964', '1040563', '521964', '1040563', '521964', '1040563', '521964', '1040563'], ['522051', '1040675', '522051', '1040675', '522051', '1040675', '522051', '1040675', '522051', '1040675', '522051', '1040675', '522051', '1040675', '522051', '1040675'], ['522128', '1040708', '522128', '1040708', '522128', '1040708', '522128', '1040708', '522128', '1040708', '522128', '1040708', '522128', '1040708', '522128', '1040708'], ['521858', '1040674', '521858', '1040674', '521858', '1040674', '521858', '1040674', '521858', '1040674', '521858', '1040674', '521858', '1040674', '521858', '1040674'], ['522378', '1040847', '522378', '1040847', '522378', '1040847', '522378', '1040847', '522378', '1040847', '522378', '1040847', '522378', '1040847', '522378', '1040847'], ['521814', '1040677', '521814', '1040677', '521814', '1040677', '521814', '1040677', '521814', '1040677', '521814', '1040677', '521814', '1040677', '521814', '1040677'], ['521378', '1039847', '521378', '1039847', '521378', '1039847', '521378', '1039847', '521378', '1039847', '521378', '1039847', '521378', '1039847', '521378', '1039847'], ['521952', '1040772', '521952', '1040772', '521952', '1040772', '521952', '1040772', '521952', '1040772', '521952', '1040772', '521952', '1040772', '521952', '1040772'], ['522054', '1040891', '522054', '1040891', '522054', '1040891', '522054', '1040891', '522054', '1040891', '522054', '1040891', '522054', '1040891', '522054', '1040891'], ['521798', '1040816', '521798', '1040816', '521798', '1040816', '521798', '1040816', '521798', '1040816', '521798', '1040816', '521798', '1040816', '521798', '1040816'], ['521976', '1040917', '521976', '1040917', '521976', '1040917', '521976', '1040917', '521976', '1040917', '521976', '1040917', '521976', '1040917', '521976', '1040917'], ['521916', '1040899', '521916', '1040899', '521916', '1040899', '521916', '1040899', '521916', '1040899', '521916', '1040899', '521916', '1040899', '521916', '1040899'], ['521823', '1040891', '521823', '1040891', '521823', '1040891', '521823', '1040891', '521823', '1040891', '521823', '1040891', '521823', '1040891', '521823', '1040891'], ['521875', '1040963', '521875', '1040963', '521875', '1040963', '521875', '1040963', '521875', '1040963', '521875', '1040963', '521875', '1040963', '521875', '1040963'], ['521983', '1041008', '521983', '1041008', '521983', '1041008', '521983', '1041008', '521983', '1041008', '521983', '1041008', '521983', '1041008', '521983', '1041008']], dtype='|S7') r2=numpy.linalg.solve(r,r1) print r2
Офлайн
43
adrayв доке говорят
Видимо внутри какой-нибудь итерационный метод
The solution to the system of linear equations is computed using an LU decomposition with partial pivoting and row interchanges.
ingushetне знаю зачем оно так делает, скопипастил, все ок. С твоим numpy что-то не в порядке, может быть
У меня не выводит, та же самая ошибка
Офлайн