مهندس کوانتومی

4. ماتریس‌ها

4.1بازنمایی ماتریسی

تبدیل خطی از ℂⁿ به ℂᵐ با جدولی m×n از اعداد بازنمایی می‌شود: ستون j، تصویر بردار پایهٔ j است — و همه‌چیز از آنجا ساخته می‌شود (خطی بودن یعنی تصویر هر ترکیب، ترکیب تصویرهاست). در محاسبات کوانتومی، دروازه‌ها ماتریس‌های 2ᵏ×2ᵏ هستند (k = تعداد کیوبیت‌های درگیر) و کل مدار، حاصل‌ضرب‌شان. ماتریس را به‌عنوان «جدول اثر روی پایه» بخوانید، نه مجموعه‌ای از اعداد: X ستون اولش (تصویر |0⟩) برابر |1⟩ است — یعنی X بیت را وارونه می‌کند. در numpy: np.array([[...],[...]], dtype=complex)؛ شکل را همیشه آگاهانه نگه دارید (قاعدهٔ 3.9).

4.2جمع ماتریسی

جمع، مؤلفه‌به‌مؤلفه است و فقط برای شکل‌های یکسان تعریف شده — به‌طوری که برآیند تبدیل‌های خطیِ هم‌شکل، تبدیل خطی هم‌شکل بدهد. جمع در محاسبات کوانتومی کمتر از ضرب ظاهر می‌شود اما ساختارهای مهمی رویش سوارند: تجزیهٔ هامیلتونی به جمع جمله‌های پائولی (47.2) و جمع حالت‌های آمیخته در ماتریس چگالی (فصل ۳۰). جمع با ضرب اسکالر کنار هم، فضای برداری ماتریس‌های m×n را می‌سازد — ماتریس‌ها خودشان بردارند، با ضرب داخلی فروبنیوس ⟨A, B⟩ = tr(A†B)؛ بعد این فضا mn است و همین نگاه، هامیلتونی‌ها را «بردار در فضای عملگرها» می‌کند (مفید در فصل‌های QEC و نویز).

4.3ضرب ماتریسی

ضرب AB، ترکیب تبدیل‌هاست: ابتدا B سپس A (ترتیب از راست به چپ — منبع ابدی اشتباه). تعریف: (AB)ᵢⱼ = Σₖ Aᵢₖ Bₖⱼ؛ شکل داخلی‌ها باید بخواند (m×n در n×p → m×p). نکتهٔ حیاتی: ضرب ماتریسی عموماً جابه‌جا نیست، AB ≠ BA — و این ناجابه‌جایی، سرچشمهٔ ساختاری عدم‌قطعیت (2.6)، فازبرگشت و عمق ماشینی الگوریتم‌هاست. هزینهٔ عددی: ضرب دو ماتریس n×n بر.brute O(n³) (الگوریتم‌های تندتر وجود دارند اما در عمل numpy با کرهٔ BLAS همین را به‌ینه اجرا می‌کند) — برای ماتریس‌های 2ⁿ×2ⁿ، حتی یک ضرب در n=30 غیرممکن است؛ فصل ۱۷ راه‌های دورزدن را می‌سازد. در numpy: A @ B — هرگز A * B نه (که ضرب مؤلفه‌ای است).

4.4ضرب ماتریس-بردار

حالت خاص سازگار: A (m×n) در v (n,) → (m,). معنای هندسی: تصویر v زیر تبدیل خطی A. در محاسبات کوانتومی، پرتکرارترین عمل کل کتاب است: «اعمال دروازه روی حالت» یعنی gate @ state. ستون‌های A تصویر پایه‌ها هستند، پس A·v ترکیب خطی ستون‌ها با ضرایب v است — دو خوانش (سطری/ستونی) هر دو مفیدند. هزینه: O(mn) — برای دروازهٔ تک‌کیوبیتی روی n کیوبیت، اگر کل ماتریس 2ⁿ×2ⁿ را بسازید O(4ⁿ) است؛ اما دروازه محلی است و فصل ۱۷ نشان می‌دهد چگونه O(2ⁿ) شود. باگ کلاسیک شکل: بردار (n,) در برابر (n,1) — numpy با این دو متفاوت رفتار می‌کند؛ یک قرار بگذارید و پیوسته‌اش کنید.

4.5ماتریس‌های یکانی

I با یک روی قطر و صفر بقیه: I·v = v برای هر v. عامل خنثی ضرب (AI = IA = A). در مدارها، «سیم بیکار» است — اما بیکاری کوانتومی هنوز دِکوهرانس است (15.2): یکانی فقط در جبر مدار خنثی است، در فیزیک نیست. ماتریس‌های یکانی به‌عنوان بلوک‌های ساختنی هم ظاهر می‌شوند: اعمال دروازهٔ تک‌کیوبیتی روی کیوبیت k از n کیوبیت، ماتریس I_{2^(k-1)} ⊗ U ⊗ I_{2^(n-k)} است — جایی که فصل ۱۷ همین ساخت را از ماتریس کامل به عمل موضعی ارزان فرو می‌کاهد. در numpy: np.eye(n, dtype=complex) — و dtype را فراموش نکنید، چون پیش‌فرض float با اولین ضرب مختلط، upcast و کپی می‌سازد.

4.6ماتریس‌های وارون

وارونِ A، A⁻¹ است با AA⁻¹ = A⁻¹A = I — تبدیلِ معکوس. موجودیت: فقط برای ماتریس‌های مربع با دترمینان ناصفر («غیرمنفرد»). در محاسبات کوانتومی، هر دروازهٔ یونیتی وارون دارد (U⁻¹ = U†) — محاسبات کوانتومی همیشه برگشت‌پذیر است (2.11) و «نامحاسبه» یعنی اعمال وارون‌ها به ترتیب معکوس. محاسبهٔ عددی وارون (np.linalg.inv) پرهزینه و ناپایدار است؛ در عمل مهندسی، هرگز وارون نکنید اگر ضرب در وارونِ ساختنی هست (برای یونیتی‌ها: مزدوج-ترانهاده بگیرید، ارزان و دقیق) و برای حل دستگاه‌ها از np.linalg.solve به‌جای inv بعد ضرب استفاده کنید — درس عددی کلاسیکی که در شبیه‌ساز شما تکرار می‌شود.

4.7ترانهاده

ترانهادهٔ A (Aᵀ)، سطر و ستون‌ها را جابه‌جا می‌کند: (Aᵀ)ᵢⱼ = Aⱼᵢ. در فضای حقیقی، ترانهاده با مزدوج-ترانهاده یکی است؛ در مختلط نه — و تمایزشان بار باربر است (بخش بعد). خاصیت‌های جبری: (AB)ᵀ = BᵀAᵀ (ترتیب برمی‌گردد — الگوی عمومی «عملگرهای ترکیبی»)، (Aᵀ)ᵀ = A. در محاسبات کوانتومی حالت‌های حقیقی (مدارهای کم‌فاز، بعضی آنساتزهای شیمی) ترانهاده کافی است اما به‌عنوان عادت، همیشه مزدوج-ترانهاده را به‌کار ببرید — کد شما باید برای مختلط درست باشد حتی وقتی داده فعلی حقیقی است. numpy: A.T (نما، بدون کپی — انتسابش بعد از تغییر A عوض می‌شود؛ A.T.copy() وقتی مالکیت می‌خواهید).

4.8مزدوج-ترانهاده

مزدوج-ترانهادهٔ A (A†، «A-دَگر»): ترانهادهٔ مزدوج — (A†)ᵢⱼ = (Aⱼᵢ)*. عملگر الحاقی است که براها و کت‌ها را به هم تبدیل می‌کند: (A|ψ⟩)† = ⟨ψ|A†. خواص: (AB)† = B†A†؛ (A†)† = A؛ و ⟨φ|A|ψ⟩ = ⟨A†φ|ψ⟩* — جابه‌جایی عملگر از کت به برا. این عمل، ستون فقرات جبر کوانتومی است: مشاهده‌پذیرها با A = A† تعریف می‌شوند (بخش بعد)، یونیتی‌ها با U†U = I، و مقدار انتظاری ⟨ψ|A|ψ⟩ = (⟨ψ|A†|ψ⟩)* برای هرمیتی‌ها. در numpy: A.conj().T (یا np.conj(A.T)) — دو خط که در هر شبیه‌ساز صدها بار اجرا می‌شوند. باگ کلاسیک: فراموش‌کردن مزدوج در فضای مختلط، نتایجی «تقریباً درست» می‌دهد که فقط در مقایسه با حقیقت مرجع (Statevector دقیق) آشکار می‌شود.

4.9ماتریس‌های هرمیتی

A هرمیتی است اگر A = A†. پیامدها: همهٔ مقدارهای ویژه حقیقی‌اند؛ بردارهای ویژهٔ مربوط به مقدارهای متمایز عمودند؛ و قابل قطری‌سازی با یونیتی‌اند (قضیهٔ طیفی، 4.18). در مکانیک کوانتومی، مشاهده‌پذیرها (انرژی، مؤلفه‌های اسپین،…) و هامیلتونی‌ها هرمیتی‌اند — حقیقی بودن طیف یعنی «نتایج اندازه‌گیری اعداد حقیقی‌اند» (3.3). مثال‌های اصلی: پائولی‌های X، Y، Z هرمیتی‌اند (و هم‌زمان یونیتی — ترکیب کمیاب و مهم)؛ ترکیب‌های حقیقی-ضریبی از آن‌ها هم هرمیتی. در شبیه‌سازی: پس از ساخت هامیلتونی (مثلاً از Qiskit Nature)، همیشه np.allclose(H, H.conj().T) را ادعا کنید — ارزان و باگ‌های نگاشت فرمیون‌به-کیوبیت را فوراً می‌گیرد.

4.10ماتریس‌های یونیتی

U یونیتی است اگر U†U = UU† = I — وارونش مزدوج-ترانهادهٔ خودش است. یونیتی‌ها، ایزومتری‌های فضای هیلبرت‌اند: ضرب داخلی، نرم و احتمال‌ها را حفظ می‌کنند (⟨Uφ|Uψ⟩ = ⟨φ|ψ⟩) — و به همین دلیل همهٔ دروازه‌های کوانتومی (به‌جز اندازه‌گیری) یونیتی‌اند: تحول باید حالتِ معتبر را به حالتِ معتبر ببرد. ستون‌های (و سطرهای) یک یونیتی، پایهٔ متعامد-نرمال می‌سازند — یونیتی «چرخش در فضای مختلط» است (شامل بازتاب‌ها؛ دترمینانِ |det| = 1). ساخت ترکیبی: حاصل‌ضرب یونیتی‌ها یونیتی است (بسته‌شدگی که معماری مدار به آن تکیه دارد)، حاصل‌ضرب تانسوری یونیتی‌ها هم یونیتی. در مهندسی عددی، یونیتی‌بودن ناوردایی است که باید پس از هر بازنویسی چک شود: np.allclose(U @ U.conj().T, np.eye(dim)) — یک خط که پروتکل آزمون 16.15 شما را می‌سازد.

4.11ماتریس‌های نرمال

A نرمال است اگر AA† = A†A — با مزدوج-ترانهاده‌اش جابه‌جاست. اهمیت: نرمال‌ها دقیقاً ماتریس‌هایی‌اند که با یونیتی قابل قطری‌سازی‌اند (تعمیم هم‌زمان هرمیتی و یونیتی). هرمیتی‌ها (A† = A)، پادهرمیتی‌ها (A† = −A)، یونیتی‌ها (A† = A⁻¹) و ماتریس‌های قطری همه نرمال‌اند؛ اما ماتریس عمومی نرمال نیست (مثال کلاسیک: [[0,1],[0,0]]). در محاسبات کوانتومی، عملگرهای اندازه‌گیری و تحول روی نرمال‌ها زندگی می‌کنند و هر انحراف از نرمال بودن (مثلاً کانال نویزی، فصل ۲۹) یعنی خروج از جهان «قابل قطری‌سازی ساده» — دنیای ماتریس چگالی. محاسبات عمومی A ≠ A†A حالت‌های آمیخته می‌سازند؛ مرزش را همین‌جا بشناسید تا فصل ۳۰ غافلگیرتان نکند.

4.12تصویرگرها

تصویرگر روی زیرفضای یک‌بعدیِ span{|φ⟩} (با ⟨φ|φ⟩=1): P = |φ⟩⟨φ|. اثر: P|ψ⟩ = |φ⟩·⟨φ|ψ⟩ — مؤلفهٔ ψ در جهت φ را نگه می‌دارد، بقیه را صفر می‌کند. خواص: هرمیتی (P = P†)، تصویرکنندهٔ دوبار برابر خودش (P² = P) و مقدارهای ویژه‌اش {0, 1}. مجموع تصویرگرهای پایهٔ متعامد-نرمال، یکانی است: Σᵢ |eᵢ⟩⟨eᵢ| = I — «تفکیک هویت» که در برهان‌ها همه‌جاست. در مکانیک کوانتومی، اندازه‌گیریِ مشاهده‌پذیر A با تجزیهٔ طیفی A = Σₐ a·Pₐ، حالت را به یکی از تصویرگرهای Pₐ فرومی‌ریزد با احتمال ⟨ψ|Pₐ|ψ⟩ — ماشین ریاضی postulate اندازه‌گیری (فصل ۱۱). در شبیه‌سازی، تصویرگرها برای حاشیه‌سازی زیرسیستم‌ها و بررسی احتمال زیرفضایی به‌کار می‌روند (پروژه‌های بخش ششم).

4.13ماتریس‌های قطری

قطری: ورودی‌های خارج از قطر صفرند، D = diag(d₁, …, dₙ). عمل: D·v مؤلفه‌به‌مؤلفه مقیاس می‌کند (D·v)ᵢ = dᵢvᵢ؛ ضرب قطری‌ها مؤلفه‌ای است؛ توان و توابع، روی قطر اعمال می‌شوند: f(D) = diag(f(d₁), …, f(dₙ)) — به‌ویژه e^D ارزان است، کلید بخش 4.20. در محاسبات کوانتومی، مشاهده‌پذیر Z قطری است (به همین دلیل پایهٔ محاسباتی «پایهٔ اندازه‌گیری» است)، هامیلتونی‌های قطری (QAOA، فصل ۴۹) بدون هیچ دروازه‌ای اعمال می‌شوند و «قطری‌سازی» هدف تجزیه‌های طیفی است. قطری‌بودن نسبت به پایه است: «A در پایهٔ B قطری است» یعنی تغییر پایه به B، A را قطری می‌کند — و قضیهٔ طیفی می‌گوید هر ماتریس نرمال، در پایهٔ بردارهای ویژه‌اش قطری است.

4.14تغییر پایه

ماتریس تغییر پایه از پایهٔ B به پایهٔ B′، ماتریسی است که ستون‌هایش مختصات اعضای B′ در پایهٔ B هستند؛ اعمالش روی مختصاتِ نسبت به B′، مختصات نسبت به B می‌دهد. اگر هر دو پایه متعامد-نرمال باشند، ماتریس تغییر پایه یونیتی است — «چرخش» بین دستگاه‌های مختصات معتبر. مثال محوری کتاب: H پایهٔ محاسباتی و پایهٔ هادامارد را تبدیل می‌کند؛ مشاهدهٔ X در پایهٔ هادامارد قطری است (X = H·Z·H) — اندازه‌گیری X یعنی «تغییر پایه با H، سپس اندازه‌گیری Z» (15.4). الگوی مهندسی که همه‌جا برمی‌گردد: حل مسئله در پایه‌ای که ساده است، بعد تبدیل. در numpy، تغییر پایه با U @ coords است؛ هویت تغییرپایه‌ها را چک کنید (U از B به B′، سپس V از B′ به B″ ⇒ VU از B به B″) و پایهٔ ضمنی هر آرایه را نام‌گذاری کنید (3.12).

4.15مقدارهای ویژه

برای مربع A، عدد λ مقدار ویژه است اگر بردار ناصفر v موجود باشد با Av = λv — جهت‌هایی که A فقط مقیاس می‌کند. محاسبهٔ عددی: حل مشخصه det(A − λI) = 0 (در تئوری) یا np.linalg.eigvals (در عمل؛ برای هرمیتی‌ها np.linalg.eigvalsh — سریع‌تر، مرتب و پایدارتر). خواص مهم: مجموع مقدارهای ویژه = رد (tr A)، حاصل‌ضرب = دترمینان؛ برای هرمیتی‌ها همه حقیقی؛ برای یونیتی‌ها همه روی دایرهٔ واحد (|λ| = 1 — «دروازه فاز را برمی‌گرداند، طول را نه»). در مکانیک کوانتومی، مقدارهای ویژهٔ مشاهده‌پذیر، نتایج اندازه‌گیری‌اند (طیف انرژی هامیلتونی، مقادیر ±1 پائولی‌ها) و در الگوریتم‌ها، فازهای ویژه هدف استخراج‌اند (برآورد فاز، فصل ۲۴؛ شور از راه تناوب). مقدار ویژه، واحد پول طیفی است؛ بخش بعد بردارهایش را می‌دهد.

4.16بردارهای ویژه

بردار ناصفر v با Av = λv — محورهای نامتغیر تبدیل. برای مقدار ویژهٔ λ، مجموعهٔ همهٔ v های سازگار (به‌اضافهٔ صفر) زیرفضای ویژه است؛ بُعدش همیشه < بُعد کل برای مقدارهای ویژهٔ تکراری می‌شود (افتگان). برای ماتریس نرمال، زیرفضاهای ویژهٔ متفاوت عمودند — پایهٔ ویژهٔ متعامد-نرمال (طیفی). در مکانیک کوانتومی، بردار ویژهٔ هامیلتونی همان «حالت پایه/برانگیخته» است؛ اندازه‌گیری در حالتِ ویژه، همان نتیجه را قطعی برمی‌گرداند (فصل ۱۱). عددی: np.linalg.eigh(H) زوج مرتب‌شده (λᵢ, vᵢ) می‌دهد — ستون‌های خروجی بردارهای ویژه‌اند؛ عادت سازنده: همیشه یک‌بار H @ v - λ*v را چک کنید (باقیماندهٔ ویژه، آزمون درستی رایگان). تلهٔ رایج: بردار ویژه تا ثابت تعریف شده است (و برای مختلط، تا فاز) — مقایسهٔ مستقیم دو بردار ویژه از دو کتابخانه ممکن است «متفاوت» به‌نظر برسد و هم‌ارز باشد؛ ناوردایی‌ها (تصویرگر، مقدار انتظاری) را مقایسه کنید.

4.17تجزیهٔ ویژه

وقتی A قطری‌پذیر است: A = V·D·V⁻¹ با ستون‌های V بردارهای ویژه و D قطریِ مقدارها — بازنویسی A به‌عنوان «تغییر پایه، مقیاس قطری، بازگشت». این تجزیه، جبر توان‌ها را ساده می‌کند (Aᵏ = V·Dᵏ·V⁻¹) و توابع ماتریسی را (4.19). برای ماتریس نرمال، V یونیتی انتخاب می‌شود و تجزیه به طیفی ارتقا می‌یابد (بخش بعد). محاسبه: np.linalg.eig (عمومی؛ V وارون‌پذیر اگر شرط قطری‌پذیری) یا eigh (هرمیتی؛ همیشه اوکی). هشدار عددی: ماتریس‌های نزدیک به معیوب (بردارهای ویژه تقریباً موازی) به‌شدت حساس‌اند (شرط‌NUMBER 7.3) — تجزیهٔ ویژه روی نویز، طیف را به هم می‌ریزد؛ در شبیه‌سازی همیشه با eigvalsh روی هامیلتونی هرمیتی کار کنید و از eig عمومی روی ورودی‌های نامتقارن پرهیز کنید.

4.18تجزیهٔ طیفی

فرم کامل برای نرمال‌ها: A = Σₐ aₐ·|vₐ⟩⟨vₐ| — A به‌صورت جمع وزن‌دار تصویرگرهای ویژه. برای مشاهده‌پذیر هرمیتی، این «تنها» بازنمایی است: اندازه‌گیریِ A روی |ψ⟩ نتیجهٔ aₐ را با احتمال |⟨vₐ|ψ⟩|² برمی‌گرداند و حالت را روی |vₐ⟩ فرو می‌ریزد — postulate اندازه‌گیری، از راه جبر خطی، اثبات‌شده. کاربردهای محاسباتی: مقدار انتظاری ⟨ψ|A|ψ⟩ = Σₐ aₐ·|⟨vₐ|ψ⟩|² (محاسبه با طیف، ارزان از ضرب ماتریسی)؛ تحول یونیتیِ تولیدشده توسط هرمیتی (بخش بعد)؛ و در تصحیح خطا، تجزیهٔ عملگر خطا به اجزای طیفی. numpy مسیر طیفی هرمیتی: w, V = np.linalg.eigh(A)؛ تصویرگرها V[:, [i]] @ V[:, [i]].conj().T. طیفی، پل میان فصل‌های ریاضی و فیزیک کتاب است — از این‌جا به بعد هر مشاهده‌پذیری که می‌بینید، جمع تصویرگرهاست.

4.19توابع ماتریسی

تابع f روی ماتریس‌ها چگونه تعریف می‌شود؟ برای قطری‌ها، مؤلفه‌ای: f(diag(dᵢ)) = diag(f(dᵢ)). برای قطری‌پذیرها، از راه تجزیه: f(A) = V·f(D)·V⁻¹. برای نرمال‌ها با طیفی: f(A) = Σₐ f(aₐ)·Pₐ — «تابع را روی طیف اعمال کن، تصویرگرها را نگه دار». تعریف معادل و محاسباتی‌تر: سری تیلور ماتریسی (e^A = I + A + A²/2! + … که همیشه همگراست برای e). در محاسبات کوانتومی، تابع ماتریسی پرکاربرد، نمایی است (بخش بعد) اما ریشه‌ها و لگاریتم‌ها هم ظاهر می‌شوند (تجزیهٔ قطبی، ریشهٔ مربعی هرمیتی مثبت در شرایط کامل‌شدن ماتریس چگالی). محاسبهٔ عددی در numpy: scipy.linalg.expm (برای e^A — هرگز سری دستی ننویسید)، scipy.linalg.sqrtm؛ برای هرمیتی‌ها، سریع‌ترین و دقیق‌ترین مسیر طیفی است: V @ np.diag(f(w)) @ V.conj().T.

4.20نمایی ماتریس‌ها

مهم‌ترین تابع ماتریسی کتاب: U = e^{iH} با H هرمیتی — همیشه یونیتی است (طیف حقیقی iH موهومی-خالص ⇒ e^{} روی دایرهٔ واحد). این فرمول، پل میان هامیلتونی (انرژی) و تحول (دروازه) است: فیزیک می‌گوید حالت‌ها با e^{−iHt/ℏ} پیش می‌روند (ℏ=1 در واحدهای کتاب)؛ محاسبات کوانتومی می‌گوید هر یونیتی، به‌ازای H و t مناسب، قابل نوشتن به همین شکل است. نتیجهٔ عملی: پیاده‌سازی «تحول زیر هامیلتونی» = ساخت e^{−iHt} به‌صورت مدار — کاری که تروتری‌سازی (47.4) با تجزیهٔ H به جمله‌های پائولی انجام می‌دهد. عددی: scipy.linalg.expm(-1j*H*t) مرجع شبیه‌سازی شماست؛ محاسبهٔ مداریِ همان کمیت، کل «شبیه‌سازی کوانتومی» به‌عنوان الگوریتم است (فصل ۴۷). نمایی ماتریسی جایی است که این فصل به فیزیک می‌رسد — بدون ترک ریاضیات.