AutoSkill Параллельный расчет собственных значений и визуализация разнонаправленной гистограммы
Реализация workflow для генерации детерминированной симметричной трехдиагональной матрицы Якоби, вычисления собственных значений последовательно (numpy.linalg.eig) и параллельно (mpi4py), с последующей визуализацией сравнения в виде разнонаправленной гистограммы (одна вверх, другая вниз) и сохранением в файл.
git clone https://github.com/ECNU-ICALK/AutoSkill
T=$(mktemp -d) && git clone --depth=1 https://github.com/ECNU-ICALK/AutoSkill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SkillBank/ConvSkill/Russian/параллельный-расчет-собственных-значений-и-визуализация-разнонап" ~/.claude/skills/ecnu-icalk-autoskill-7e8fa6 && rm -rf "$T"
SkillBank/ConvSkill/Russian/параллельный-расчет-собственных-значений-и-визуализация-разнонап/SKILL.mdПараллельный расчет собственных значений и визуализация разнонаправленной гистограммы
Реализация 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
- сохранить гистограмму собственных значений