يحتوي المستودع التالي على تنفيذ خوارزمية Lanczos القياسية.
تثبيت
للعب مع الخوارزمية بنفسك ، git clone
المستودع على جهازك المحلي. بعد ذلك ، في الدليل المستنسخ ، قم بتهيئة بيئة كوندا عن طريق التشغيل
conda env create --file environment.yml
من هناك ، يمكنك تنشيط البيئة مثل ذلك
conda activate LanczosAlgo
وتشغيل دفتر الملاحظات في src/lanczos.ipynb
.
مقدمة
خوارزمية Lanczos عبارة $ م $ "الأكثر فائدة" (تميل نحو أقصى/أدنى) القيم الذاتية والمحفوظات eigenvectors من $ n times n $ مصفوفة هيرميتي ، حيث $ م $ غالبًا ولكن ليس بالضرورة أصغر بكثير من $ n $ .
خوارزمية
تستمر الخوارزمية على النحو التالي:
- أعطى مصفوفة هيرميتي $ a $ من الحجم $ n times n $ وناقل تعسفي $ V_1 $ مع المعيار الإقليدي 1 ، حدد عدد افتراضي لمكالمات الوظائف $ m = n $
- يترك $ w_1 '$ = $ av_1 $
- يترك $ alpha_1 = w_1 '^* v_1 $
- يترك $ w_1 = w_1 '^*- alpha_1 v_1 $
نشير إلى الخطوات 2 - 4 كخطوات التكرار الأولى. تبعًا،
- يترك $ beta_j = || w_ {j-1} || $
- لو $ beta_j neq0 $ ، يترك $ v_j = frac {w_ {j-1}} { beta_j} $ . آخر ، دع $ V_J $ يكون متجهًا تعسفيًا مع المعيار الإقليدي 1 الذي يعامد $ v_1 ، ... ، v_ {j-1} $
- يترك $ w_j '= av_j $
- يترك $ alpha_j = w_j'v_j $
- يترك $ w_j = w_j '- alpha_j v_j- beta_j v_ {j-1} $
أين $ j $ يدل على رقم التكرار ، ويجب أن يرضي $ 2 leq j leq m $ . أخيرًا ، يكون المخرجات عبارة عن مصفوفة ثلاثي الأبعاد $ t $ مع $ alpha_1 ، ... ، alpha_m $ على طول قطري رئيسي ، و $ beta_2 ، ... ، beta_m $ على طول super- و subdiagonals.
العمل المستقبلي
الجهود الجارية حاليًا لتوسيع الخوارزمية لتشمل أنظمة الحالة المنتشر. star this repo إذا كنت ترغب في إخطار ذلك عندما يسير على الهواء مباشرة!