C ++ Adaptive و Lanczos خوارزمية Lanczos فقط
يحسب Lambda Lanczos أصغر أو أكبر تقييم ذي قيمة وثيقة المقابلة لمصفوفة متماثلة (هيرميتيان).
الميزة المميزة هي روتين تكاثر المصفوفة-المستخدم المستخدم في خوارزمية Lanczos قابلة للتكيف:
#include <lambda_lanczos/lambda_lanczos.hpp> باستخدام lambda_lanczos :: lambdalanczos ؛/ * يتم حذف بعض وتشمل الإعلانات */void sample () {const int n = 3 ؛ مصفوفة مزدوجة [n] [n] = {{2.0 ، 1.0 ، 1.0} ، {1.0 ، 2.0 ، 1.0} ، {1.0 ، 1.0 ، 2.0}} ؛ // قيمتها الذاتية هي {4 ، 1 ، 1} / * قم بإعداد روتين مضاعف المصفوفة-المستخدم المستخدم في خوارزمية Lanczos */ auto mv_mul = [&] (const vector <double> & in ، vector <double> & out) {for (int i = 0 ؛ i <n ؛ i ++) {for (int j = 0 ؛ j <n ؛ j ++) { Out [i] += matrix [i] [j]*in [j] ؛ } } } ؛ / * تنفيذ خوارزمية Lanczos */ Lambdalanczos <bourent> Engine (mv_mul ، n ، true ، 1) ؛ // العثور على 1 أقصى قيمة eigenvalue المتجه <double> eigenvalues ؛ المتجه <ناقل <double >> eigenvectors ؛ engine.run (القيم الذاتية ، eigenvectors) ؛ //// إذا كان C ++ 17 متاحًا ، فإن التدوين التالي يفعل نفس الشيء: // Auto [eigenvalues ، eigenvectors] = earch.run () / * نتيجة طباعة */ cout << "eigenvalue:" << setPrecision (16) << eigenvalues [0] << endl ؛ cout << "eigenvector:" ؛ لـ (int i = 0 ؛ i <n ؛ i ++) { cout << eigenvectors [0] [i] << "" ؛ } cout << endl ؛ }
هذه الميزة تتيح لك ذلك
الجمع بسهولة بين Lambda Lanczos مع مكتبات المصفوفة الموجودة (مثل Eigen ؛ انظر رمز عينة).
استخدم مصفوفة يتم تقديم عناصرها جزئيًا ، على سبيل المثال ، مصفوفة متناثرة يتم تخزين عناصرها غير الصفرية كقائمة من {row-index ، مؤشر العمود ، القيمة}.
يوفر Lambda Lanczos الواجهتين التاليتين:
تحسب فئة LambdaLanczos
الحد الأقصى (الحد الأدنى) القيم الذاتية والمجتمع المقابل. تؤخذ القيم الذاتية المتدهورة في الاعتبار. يهدف هذا الفصل إلى مشاكل تتطلب واحدة أو عدد قليل من eigenpairs (مثل الإثارة المنخفضة للطاقة لنظام الكم).
تحسب فئة Exponentiator
النوع التالي من مضاعف المصفوفة-المصفوفة:
أين
كتطبيق ، يمكن استخدام هذه الفئة لتطور الوقت لنظام الجسم الكمي:
والخوارزميات الأكثر تطوراً ، مثل TDVP وشبكات الموتر الأخرى.
انظر هنا.
مرجع API
C ++ 11 بيئة متوافقة
Lambda Lanczos نفسها لا تعتمد على أي مكتبات.
من أجل إجراء الاختبارات ، يلزم اختبار Google.
Lambda Lanczos هي مكتبة رأس فقط. لذا فإن خطوة التثبيت هي كما يلي:
استنساخ أو تنزيل أحدث إصدار من GitHub.
ضع دليل include/lambda_lanczos
في أي مكان يمكن أن يجده مشروعك.
معهد ماساتشوستس للتكنولوجيا
MRCDR