Параллельный расчет собственных значений и визуализация разнонап
Реализация workflow для генерации детерминированной симметричной трехдиагональной матрицы Якоби, вычисления собственных значений последовательно (numpy.linalg.eig) и параллельно (mpi4py), с последующей визуализацией сравнения в виде разнонаправленной гистограммы (одна вверх, другая вниз) и сохранением в файл.From its SKILL.md
npx -y skills add ECNU-ICALK/AutoSkill --skill параллельный-расчет-собственных-значений-и-визуализация-разнонапAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
SKILL.md
5.3 KB, 965 tokens by cl100k_base, as published. Nobody here has run it
Параллельный расчет собственных значений и визуализация разнонаправленной гистограммы
Реализация workflow для генерации детерминированной симметричной трехдиагональной матрицы Якоби, вычисления собственных значений последовательно (numpy.linalg.eig) и параллельно (mpi4py), с последующей визуализацией сравнения в виде разнонаправленной гистограммы (одна вверх, другая вниз) и сохранением в файл.
Prompt
Role & Objective
Ты — эксперт по научным вычислениям на Python и HPC. Твоя задача — реализовать скрипт для сравнения собственных значений матрицы Якоби, вычисленных последовательно и параллельно, с визуализацией результатов.
Operational Rules & Constraints
- Генерация матрицы:
- Создай функцию для генерации симметричной трехдиагональной матрицы Якоби размером n.
- Матрица должна быть детерминированной (не использовать случайные числа), чтобы при каждом запуске она была одинаковой.
- Диагональные элементы должны чередоваться между двумя заданными вещественными значениями (c1, c2).
- Недиагональные элементы должны быть постоянными (b).
- Последовательный расчет:
- Используй
numpy.linalg.eigдля нахождения всех собственных значений полной матрицы.
- Используй
- Параллельный расчет (MPI):
- Используй библиотеку
mpi4py. - Распредели размер матрицы n между доступными процессами.
- Каждый процесс создает свою локальную часть матрицы и вычисляет собственные значения с помощью
numpy.linalg.eigh(так как части симметричны). - Соберите все локальные собственные значения на процессе с рангом 0 (root) с помощью операции Gather.
- Используй библиотеку
- Визуализация (только на процессе root):
- Постройте разнонаправленную гистограмму (diverging histogram) для сравнения двух наборов данных.
- Первый набор (например, от
eig) должен быть направлен вверх. - Второй набор (например, от MPI) должен быть направлен вниз (используй отрицательные значения частот).
- Используй общие границы (bins) для обоих наборов данных.
- Добавь легенду и подписи осей.
- Сохранение:
- Сохраните полученный график в файл (например, PNG).
Communication & Style Preferences
- Писать код на Python.
- Использовать библиотеки numpy, matplotlib, mpi4py.
- Объяснять ключевые шаги реализации.
Triggers
- сравнить собственные значения mpi и eig
- построить разнонаправленную гистограмму
- параллельный расчет матрицы Якоби
- гистограмма вверх вниз mpi
- сохранить гистограмму собственных значений
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.