C ++ Adaptive and Header-only Lanczos Algorithm Library
Lambda Lanczos คำนวณค่าลักษณะเฉพาะที่เล็กที่สุดหรือใหญ่ที่สุดและ eigenvector ที่สอดคล้องกันของเมทริกซ์สมมาตร (Hermitian)
คุณสมบัติลักษณะคือรูทีนการคูณเมทริกซ์-เวกเตอร์ที่ใช้ในอัลกอริทึม Lanczos สามารถปรับได้:
#include <lambda_lanczos/lambda_lanczos.hpp> การใช้ lambda_lanczos :: lambdalanczos;/ * บางส่วนรวมและการใช้คำประกาศถูกละไว้ */โมฆะตัวอย่าง () {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 <bould> & in, เวกเตอร์ <borture> & out) {สำหรับ (int i = 0; i <n; i ++) {สำหรับ (int j = 0; j <n; j ++) { ออก [i] += เมทริกซ์ [i] [j]*ใน [j]; - - - / * เรียกใช้อัลกอริทึม Lanczos *// Lambdalanczos <bould> เครื่องยนต์ (mv_mul, n, true, 1); // ค้นหาค่าลักษณะเฉพาะ 1 ค่าสูงสุด เวกเตอร์ <bouth> eigenvalues; เวกเตอร์ <เวกเตอร์ <สองครั้ง >> eigenvectors; engine.run (eigenvalues, eigenvectors); //// หากมี C ++ 17 สัญกรณ์ต่อไปนี้ทำสิ่งเดียวกัน: // auto [eigenvalues, eigenvectors] = engine.run () / * พิมพ์ผลลัพธ์ */ ศาล << "eigenvalue:" << setprecision (16) << eigenvalues [0] << endl; ศาล << "eigenvector:"; สำหรับ (int i = 0; i <n; i ++) { ศาล << eigenvectors [0] [i] << ""; - ศาล << endl; -
คุณสมบัตินี้ช่วยให้คุณได้
รวม Lambda Lanczos เข้ากับไลบรารีเมทริกซ์ที่มีอยู่ได้อย่างง่ายดาย (เช่น eigen; ดูรหัสตัวอย่าง)
ใช้เมทริกซ์ที่มีองค์ประกอบบางส่วนเช่นเมทริกซ์เบาบางที่มีองค์ประกอบที่ไม่ใช่ศูนย์ถูกเก็บไว้เป็นรายการของ {red-index, ดัชนีคอลัมน์, ค่า} tuples
Lambda Lanczos ให้สองอินเทอร์เฟซต่อไปนี้:
คลาส LambdaLanczos
คำนวณค่า eigenvalues สูงสุด (ขั้นต่ำ) และ eigenvectors ที่สอดคล้องกัน ค่าลักษณะเฉพาะที่ลดลงจะถูกนำมาพิจารณา ชั้นเรียนนี้ตั้งเป้าหมายที่ต้องใช้หนึ่งหรือไม่กี่ eigenpairs (เช่นการกระตุ้นพลังงานต่ำของระบบควอนตัม)
คลาส Exponentiator
คำนวณประเภทของการคูณเมทริกซ์-เวกเตอร์ต่อไปนี้:
ที่ไหน
ในฐานะแอปพลิเคชันคลาสนี้อาจใช้สำหรับวิวัฒนาการเวลาของระบบควอนตัมหลายระบบ:
และอัลกอริทึมที่ซับซ้อนมากขึ้นเช่น TDVP และเครือข่ายเทนเซอร์อื่น ๆ
ดูที่นี่
การอ้างอิง API
สภาพแวดล้อมที่เข้ากันได้ C ++ 11
Lambda Lanczos ไม่ได้ขึ้นอยู่กับห้องสมุดใด ๆ
ในการเรียกใช้การทดสอบจำเป็นต้องมีการทดสอบของ Google
Lambda Lanczos เป็นห้องสมุดเฉพาะส่วนหัว ดังนั้นขั้นตอนการติดตั้งมีดังนี้:
โคลนหรือดาวน์โหลดเวอร์ชันล่าสุดจาก GitHub
วางไดเรกทอรี include/lambda_lanczos
ทุกที่ที่โครงการของคุณสามารถหาได้
มิกซ์
MRCDR