Armadillo C++: دليل شامل مع أمثلة عملية

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

Armadillo في C++: دليل شامل للحسابات المصفوفية

1. ما هي مكتبة Armadillo ولماذا تستخدم؟

Armadillo هي مكتبة عالية الأداء للجبر الخطي بلغة C++، توفر واجهة سهلة وبديهية للتعامل مع المصفوفات والمتجهات والمكعبات (المصفوفات ثلاثية الأبعاد). صُممت لتجمع بين سرعة المكتبات منخفضة المستوى (مثل LAPACK و BLAS) وسهولة الاستخدام التي تتميز بها لغات المستوى العالي مثل MATLAB أو Python (NumPy).

لماذا تحتاج إليها؟ إذا كنت تطور تطبيقات تتعلق بتعلم الآلة، الرؤية الحاسوبية، معالجة الإشارات، الروبوتات، النمذجة الفيزيائية، أو أي مجال يتطلب حسابات مصفوفية مكثفة، فإن Armadillo ستكون أداتك التي لا غنى عنها. تتيح لك كتابة كود نظيف وسهل القراءة، مع تنفيذ سريع للغاية بفضل التحسين التلقائي واستخدام التسريع العتادي (عبر OpenBLAS أو Intel MKL أو Apple Accelerate).

على عكس الحلقات التكرارية التقليدية على عناصر المصفوفة، تقدم Armadillo عمليات عالية المستوى: ضرب المصفوفات، حل أنظمة المعادلات الخطية، حساب القيم الذاتية، تحليل القيمة المفردة (SVD)، وغيرها الكثير. تُستخدم المكتبة بنشاط في المشاريع البحثية والصناعية، وواجهة برمجتها قريبة جدًا من MATLAB، مما يسمح غالبًا بنقل الكود بشكل شبه حرفي.

2. طريقة التركيب

Armadillo هي مكتبة خاصة بلغة C++، لذا لا يتم تثبيتها عبر pip أو npm. بدلاً من ذلك، يجب تثبيتها كمكتبة نظام أو ربطها بالمشروع عبر مدير حزم C++ (مثل vcpkg أو Conan) أو يدويًا.

الطريقة الموصى بها (لنظامي Linux و macOS):

# Ubuntu / Debian
sudo apt-get install libarmadillo-dev

# macOS (عبر Homebrew)
brew install armadillo

# Fedora / RHEL
sudo dnf install armadillo-devel

التركيب عبر vcpkg (لنظام Windows و Linux و macOS):

git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh  # أو bootstrap-vcpkg.bat على Windows
./vcpkg install armadillo

ترجمة الكود مع Armadillo (باستخدام g++/clang): بعد التثبيت، اربط المكتبة عند الترجمة:

g++ -std=c++11 -O2 my_program.cpp -larmadillo -o my_program

للحصول على أقصى أداء، يُنصح بتثبيت محرك BLAS محسّن (مثل OpenBLAS أو Intel MKL). ستقوم Armadillo باكتشافه تلقائيًا إذا كان مثبتًا.

3. البداية السريعة

مثال عملي بسيط يوضح إنشاء المصفوفات والعمليات الأساسية:

#include <iostream>
#include <armadillo>

using namespace arma;

int main() {
    // إنشاء مصفوفة 3x3 مليئة بالواحدات
    mat A = ones<mat>(3, 3);
    std::cout << "المصفوفة A:\n" << A << std::endl;

    // إنشاء متجه عمودي
    vec b = {1, 2, 3};
    std::cout << "المتجه b:\n" << b << std::endl;

    // حل نظام المعادلات الخطية A * x = b
    vec x = solve(A, b);
    std::cout << "الحل x:\n" << x << std::endl;

    // التحقق: يجب أن يكون A * x مساوياً لـ b
    std::cout << "التحقق A * x:\n" << A * x << std::endl;

    return 0;
}

النتيجة: سيقوم البرنامج بإنشاء مصفوفة من الواحدات (جميع عناصرها تساوي 1)، وحل النظام، وعرض النتيجة.

4. أهم الدوال والكلاسات

توفر Armadillo ثلاث كلاسات رئيسية: mat (مصفوفة من النوع double)، vec (م

توصيات