مكتبة Eigen C++: دليل شامل مع أمثلة عملية
1. ما هي مكتبة Eigen ولماذا تحتاجها؟
Eigen هي مكتبة عالية الأداء للجبر الخطي (Linear Algebra) مكتوبة بلغة C++ باستخدام القوالب (Templates). توفر للمطورين أدوات قوية وسهلة للتعامل مع المصفوفات (Matrices)، المتجهات (Vectors)، حل المعادلات العددية والخوارزميات المرتبطة بها. على عكس العديد من المكتبات الأخرى (مثل BLAS/LAPACK)، فإن Eigen مكتوبة بلغة C++ خالصة بدون أي تبعيات خارجية، مما يجعلها الخيار الأمثل للمشاريع التي تتطلب سهولة التكامل وقابلية النقل.
لماذا تحتاجها؟ في عالم البرمجة الحديث، يشكل الجبر الخطي أساس عدد هائل من التطبيقات: بدءًا من الرسوميات الحاسوبية ومعالجة الصور، وصولاً إلى التعلم الآلي، الروبوتات، والمحاكاة العلمية. تتيح لك Eigen عدم إعادة اختراع العجلة، بل استخدام خوارزميات مُحسَّنة ومُختبرة، والتي غالبًا ما تكون أسرع من التطبيقات اليدوية. تستخدم المكتبة بشكل مكثف قوالب C++ (Template Expressions) لإجراء تحسينات معقدة في مرحلة الترجمة (Compile-time)، مما يقلل من الحمل الزائد لإنشاء كائنات مؤقتة ويدمج العمليات في حلقة واحدة فعالة.
تدعم Eigen جميع الأنواع الرئيسية للمصفوفات (كثيفة، متفرقة، ثابتة ومتغيرة الحجم)، ومجموعة واسعة من التحليلات (LU, QR, SVD, Cholesky, القيم الذاتية)، والتحويلات الهندسية (دوران، إزاحة، تحويلات أفينية). بفضل مرونتها وأدائها العالي، أصبحت Eigen المعيار الفعلي (De facto) للعديد من مشاريع C++، بما في ذلك الأطر المعروفة مثل ROS (Robot Operating System)، TensorFlow (جزئيًا)، و CGAL.
2. طريقة التثبيت
Eigen هي مكتبة تعتمد فقط على ملفات الرأس (Header-only). هذا يعني أنك لست بحاجة إلى ترجمة مكتبة منفصلة أو ربطها مع مشروعك. كل ما عليك فعله هو تنزيل الملفات وتحديد مسارها للمترجم.
الطريقة الأولى: التثبيت اليدوي (موصى به للتعلم)
# تحميل أحدث إصدار من الموقع الرسمي أو GitHub
wget https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.tar.gz
tar -xzf eigen-3.4.0.tar.gz
sudo mv eigen-3.4.0 /usr/local/include/eigen3
الآن عند الترجمة، يجب تحديد مسار ملفات الرأس:
g++ -std=c++11 -I /usr/local/include/eigen3 my_program.cpp -o my_program
الطريقة الثانية: عبر مدير الحزم (Linux/macOS)
# Ubuntu/Debian
sudo apt-get install libeigen3-dev
# macOS (عبر Homebrew)
brew install eigen
الطريقة الثالثة: عبر vcpkg أو Conan (Windows)
# vcpkg
vcpkg install eigen3
# Conan
conan install eigen/3.4.0@
ملاحظة مهمة: على عكس Python (pip) أو JavaScript (npm)، لا يتم تثبيت Eigen عبر مدير حزم اللغة. إنها مكتبة نظامية بلغة C++.
3. البداية السريعة — مثال عملي بسيط
قم بإنشاء ملف main.cpp وانسخ الكود التالي فيه:
#include <iostream>
#include <Eigen/Dense> // الرأس الرئيسي للمصفوفات الكثيفة
int main() {
// إنشاء مصفوفة 2x2 وتعبئتها
Eigen::Matrix2d mat;
mat << 1, 2,
3, 4;
// إنشاء متجه 2x1
Eigen::Vector2d vec(5, 6);
// ضرب المصفوفة في المتجه
Eigen::Vector2d result = mat * vec;
// طباعة النتيجة
std::cout << "المصفوفة:\n" << mat << std::endl;
std::cou