হার্টিক দোলকের ক্ষেত্রে কেন সাইকপি ইগস () ভুল কাজকর্ম তৈরি করে?


15

আমি কম্পিউটেশনাল ফিজিক্সের প্রসঙ্গে বিশাল স্পার্স ম্যাট্রিক্সের ইগেনভ্যালু গণনা সম্পাদনের জন্য আরও কিছু বড় কোড বিকাশ করছি। আমি আমার রুটিনগুলি এক মাত্রায় সাধারণ সুরেলা দোলকের বিরুদ্ধে পরীক্ষা করি, যেহেতু ইগেনভ্যালুগুলি বিশ্লেষণাত্মকভাবে সুপরিচিত। এটি করা এবং আমার নিজস্ব রুটিনগুলি সায়পাইয়ের ইনবিল্ট সলভারগুলির সাথে তুলনা করে, আমি নীচের প্লটে প্রদর্শিত অদ্ভুততা জুড়ে এসেছি। এখানে আপনি প্রথম 100 টি সংখ্যার সাথে সংখ্যায়িত ইগেনভ্যালুগুলি দেখতে পাচ্ছেন এবং বিশ্লেষণাত্মক ইগন্যালিয়্যস λ একটি এন aλএনতোমার দর্শন লগ করামিλএকটিএনএকটি

৪০ নম্বর ইগ্যালভ্যালু প্রায়, সংখ্যার ফলাফলগুলি বিশ্লেষণাত্মকগুলির থেকে পৃথক হওয়া শুরু করে। এটি আমাকে অবাক করে না (আমি কেন এখানে যাব না, যদি না এটি আলোচনায় না আসে)। যাইহোক, আমার জন্য অবাক করা বিষয় হ'ল ইগশ () ইজেনভ্যালুগুলি অবনমিত (প্রায় ৮০ নম্বর ইগেনভ্যালু ) উত্পাদন করে । ইগশ () এত ছোট সংখ্যক ইগন্যাল্যুজের জন্যও কেন এমন আচরণ করে?

এখানে চিত্র বর্ণনা লিখুন

import numpy as np
from scipy.sparse.linalg import eigsh
import myFunctions as myFunc
import matplotlib.pyplot as plt

#discretize x-axis
N = 100
xmin = -10.
xmax = 10.
accuracy = 1e-5
#stepsize
h = (xmax - xmin) / (N + 1.)
#exclude first and last points since we force wave function to be zero there
x = np.linspace(-10. + h,10. - h,N)
#create potential
V = x**2

def fivePoint(N,h,V):
    C0 = (np.ones(N))*30. / (12. * h * h) + V
    C1 = (np.ones(N)) * (-16.) / (12. * h * h)
    C2 = (np.ones(N)) / (12. * h * h)
    H = sp.spdiags([C2, C1, C0, C1, C2],[-2, -1, 0, 1, 2],N,N)
    return H

H = myFunc.fivePoint(N,h,V)
eigval,eigvec = eigsh(H, k=N-1, which='SM', tol=accuracy)

#comparison analytical and numerical eigenvalues
xAxes = np.linspace(0,len(eigval)-1,len(eigval))
analyticalEigval = 2. * (xAxes + 0.5)
plt.figure()
plt.plot(xAxes,eigval, '+', label=r"$\lambda_{num}$")
plt.plot(xAxes,analyticalEigval, label=r"$\lambda_{ana}$")
plt.xlabel("Number of Eigenvalue")
plt.ylabel("Eigenvalue")
plt.legend(loc=4)
plt.title("eigsh()-method: Comparison of $\lambda_{num}$ and $\lambda_{ana}$")
plt.show()

এটি খুব কৌতূহলপূর্ণ আচরণ। আমি আজ এটি পরে পরীক্ষা করব।
রাফায়েল রিটার

আমি উত্তর খুঁজে পেয়েছি। সংক্ষেপে: আমার চিন্তাভাবনা ভুল ছিল। হারমোনিক দোলক (এইচএসজেড) এর বিশ্লেষণাত্মক সমাধানগুলি কোনও স্থানগত সীমাবদ্ধতা ছাড়াই বৈধ। তবে উপরের কোডটিতে, আমার বাক্সটি -10 থেকে 10 পর্যন্ত চলে, সুতরাং এটি সংখ্যার সমাধানগুলিতে একটি সীমানা শর্ত রাখে। ফলস্বরূপ, eigsh () সঠিকভাবে প্রদত্ত সিস্টেমটিকে সমাধান করে। প্রায় n = 50 (এন কোয়ান্টামের মূল কোয়ান্টাম নম্বর সহ) এর মধ্যে বিশ্লেষণাত্মক সমাধানগুলি আর -10, 10 বাক্সের মধ্যে ফিট করে না। এখন (কিছু চিন্তাভাবনার পরে), এটি সুস্পষ্ট বলে মনে হচ্ছে। যাইহোক, কোডটি তৈরি এবং পরীক্ষার সময় আমি তা দেখতে পাইনি।
SEB

এটি এখনও অবক্ষয়ের ব্যাখ্যা দেয় না, তাই না?
SEB

উত্তর:


12

কিছু ইগেনভ্যালুগুলির অবক্ষয় আমার কাছে ল্যাঙ্কজোস অ্যালগরিদমের ভাঙ্গনের বৈশিষ্ট হিসাবে দেখা যায় । ল্যানকসোস অ্যালগোরিদম হের্মিটিয়ান ম্যাট্রিকেসের ইগেনভ্যালু এবং ইগেনভেেক্টরগুলির আনুমানিক জন্য সবচেয়ে বেশি ব্যবহৃত একটি পদ্ধতি; এটি স্কিপি.ইগশ () ব্যবহার করে, আরপ্যাক লাইব্রেরিতে কল করার মাধ্যমে ।

সঠিক গাণিতিক ক্ষেত্রে, ল্যাঙ্কজোস অ্যালগোরিদম অর্থোথোনাল ভেক্টরগুলির একটি সেট তৈরি করে, তবে ভাসমান পয়েন্টের গাণিতিকগুলিতে এগুলি অরথোগোনাল হতে ব্যর্থ হতে পারে এবং এমনকি লিনিয়ার নির্ভরশীল হয়ে উঠতে পারে। সত্যই বিরক্তিকর বিষয় হ'ল অরথোগোনালটির এই ক্ষতিটি হুবহু ঘটে যখন আনুমানিক এজনভ্যালুগুলির মধ্যে একটি আসল ইগালভালুতে রূপান্তরিত হয় - অ্যালগরিদম নিজেই নাশকতা, তাই কথা বলার জন্য। ফলাফলটি হ'ল আপনি কাছের ইগেনভ্যালুগুলির কয়েকটি উত্সাহী জুড়ি পাবেন। এর জন্য বিভিন্ন সংশোধন রয়েছে, উদাহরণস্বরূপ, গ্রামে-শ্মিট ব্যবহার করে যে কোনও রূপান্তরিত আইজেনভেেক্টরকে প্রতিটি পদক্ষেপে অর্থেগোনাল হতে বাধ্য করা যায়।

তবুও, কোনও পদ্ধতি নিখুঁত নয়, বিশেষত যদি আপনি নিজের ম্যাট্রিক্সের পুরো বর্ণালীটি গণনা করার চেষ্টা করছেন । সুতরাং আপনি যদি 50 টি ক্ষুদ্রতম এগেনভ্যালুগুলি পাওয়ার চেষ্টা করছেন তবে আপনি 100 টি উপাদান সহ একটি ভেক্টর দ্বারা তরঙ্গ ফাংশনটি প্রায় কাছাকাছি নেওয়া এবং eigsh()50 পয়েন্ট সহ ভেক্টর ব্যবহার করে এবং প্রথমে জিজ্ঞাসা না করে কেবল প্রথম 50 শক্তির মাত্রা চেয়ে নেওয়া ভাল be ইগেনভ্যালুগুলির।

আপনি যদি আরও পড়তে চান তবে ইউসুফ সাদের দিকে তাকান বড় ইজেনভ্যালু সমস্যার জন্য সংখ্যাগত পদ্ধতিগুলি দেখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.