Форум программистов, компьютерный форум, киберфорум
Python: Научные вычисления
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/121: Рейтинг темы: голосов - 121, средняя оценка - 4.74
0 / 0 / 0
Регистрация: 31.03.2016
Сообщений: 4

Вычисление в numpy собственных чисел и векторов матрицы

16.02.2017, 15:46. Показов 23835. Ответов 6

Студворк — интернет-сервис помощи студентам
Добрый день!
Есть задача найти собственные числа и собственные вектора матрицы на питоне. Для начала я пытаюсь проверить, работает ли верно, с помощью простейшей матрицы 2 на 2 вида: [[-1, -6], [2, 6]]. Для этого, как я нашел в интернете, надо использовать метод np.linalg.eig (matrix).

Python
1
2
3
matrix = np.mat ([[-1, -6], [2, 6]])
w, v = np.linalg.eig (matrix)
print w, "\n", v
Однако, при выполнении у меня выдается неверный ответ:
>> w = [2. 3.] (это верно)
>> v = [[-0.894 0.832]
[0.447 -0.555]]

По расчетам вручную собственное значение должно быть (2, 3) (это верно), а векторы (2, -1) и (3, -2).
Что я делаю не так?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.02.2017, 15:46
Ответы с готовыми решениями:

Вычисление собственных значений и собственных векторов матрицы. Метод скалярных произведений
Курсовая работа!! Задание: "Вычисление собственных значений и собственных векторов матрицы. Метод скалярных произведений" ...

Вычисление собственных значений и собственных векторов матрицы. Метод скалярных произведений
Вычисление собственных значений и собственных векторов матрицы. Метод скалярных произведений кто может реализовать этот метод в...

Вычисление собственных значений и собственных векторов матрицы.
Вычисление собственных значений и собственных векторов матрицы. Метод скалярных произведений. Метод обратных итераций с переменными...

6
431 / 302 / 90
Регистрация: 03.12.2015
Сообщений: 741
17.02.2017, 01:22
Лучший ответ Сообщение было отмечено Yurricane как решение

Решение

Это верные векторы.
(0.832, -0.555) коллинеарен вектору (3, -2)
(-0.894 0.447) коллинеарен вектору (2, -1)
2
0 / 0 / 0
Регистрация: 31.03.2016
Сообщений: 4
17.02.2017, 09:33  [ТС]
А можно ли как-то задать, чтобы он выдавал ответ в более удобном виде? По негласным правилам, векторы должны быть попроще - в идеале с целыми числами и одно из значений 1.

Добавлено через 12 минут
Спасибо, разобрался. В математике я не силен, так что не сообразил сам о нормировке.
0
431 / 302 / 90
Регистрация: 03.12.2015
Сообщений: 741
17.02.2017, 11:31
Цитата Сообщение от Yurricane Посмотреть сообщение
А можно ли как-то задать, чтобы он выдавал ответ в более удобном виде? По негласным правилам, векторы должны быть попроще - в идеале с целыми числами и одно из значений 1.
Можно, например, так:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
import functools
import math
import fractions
 
def integer_collinear_vector(numbers, max_denominator=1000000):
    norma = min(numbers)
    numbers = [num / norma for num in numbers]
    fracts = [fractions.Fraction(f).limit_denominator(max_denominator) for f in numbers]
    denoms = [f.denominator for f in fracts]
    denoms_gcd = functools.reduce(math.gcd, denoms)
    denoms_lcm = functools.reduce(lambda a, b: a*b, [d // denoms_gcd for d in denoms]) * denoms_gcd
    result_integers = [f.numerator * (denoms_lcm // f.denominator) for f in fracts]
    return result_integers
Результат:
Python
1
2
3
4
5
integer_collinear_vector([0.83205029, -0.5547002])
[-3, 2]
 
integer_collinear_vector([-0.89442719, 0.4472136])
[2, -1]
0
0 / 0 / 0
Регистрация: 31.03.2016
Сообщений: 4
22.02.2017, 15:05  [ТС]
Хм, непривычно: в поиске яндекса нашел собственный вопрос)
Часть 2 : оказывается, метод eig работает только с квадратными матрицами. Есть что-то похожее (готовый метод) для матриц произвольного размера (я буду считать для матрицы 32 х 1536) ?

Добавлено через 30 минут
Разложения для прямоугольной не существует, вопрос снимаю
0
0 / 0 / 0
Регистрация: 23.03.2020
Сообщений: 2
31.07.2020, 17:53
Чтоб не создавать новые ветки.

Исходная матрица
5 6 3
-1 0 1
1 2 -1

после np.linalg.eig

[-2. 4. 2.] - правильно

ненормированные собств.векторы
[[-3.15975012e-16 -9.70494959e-01 -8.94427191e-01]
[-4.47213595e-01 2.15665546e-01 4.47213595e-01]
[ 8.94427191e-01 -1.07832773e-01 -3.18938141e-16]]

После применения функции integer_collinear_vector)

[0, 1, -2] - правильно
[81, -18, 9] - если разделить на 9, то тоже будет правильно - не могу понять почему так. Что я делаю нет так?
[2, -1, 0] - правильно

Заранее спасибо.
0
Эксперт Python
 Аватар для dondublon
4648 / 2068 / 366
Регистрация: 17.03.2012
Сообщений: 10,168
Записей в блоге: 6
04.08.2020, 10:38
Цитата Сообщение от Alexx_7777 Посмотреть сообщение
ненормированные собств.векторы
Похоже, наоборот, нормированные.

Цитата Сообщение от Alexx_7777 Посмотреть сообщение
81, -18, 9] - если разделить на 9, то тоже будет правильно
Видимо, из-за погрешности в хранении float-ов.

Не пойму, зачем вам их умножать на что-то.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.08.2020, 10:38
Помогаю со студенческими работами здесь

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

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

Вычисление собственных значений и собственных векторов матрицы
Вычисление собственных значений и собственных векторов матрицы. Метод скалярных произведений Матрицу задаём произвольно! а дальше по...

Вычисление собственных значений и собственных векторов матрицы
Доброго времени суток всем. Собственно написал программу, реализует степенной метод. Проблема в округлении. 1 итерация- вычисление...

Разработать м-файл для нахождения собственных чисел и собственных векторов матрицы
1 1 3 -1 2 0 2 1 0


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru