following MATLABコードをPythonに変換するには? Here is my solutionですが、同じ結果は得られません。たとえば、f
はMATLABコードでは常に正のようですが、Pythonコードではf
も負の値を取得します。fはMATLABコードでは常に正のようですが、私のPythonコードではfも負の値をとります
どのようにプログラムを修正するためのアイデア?
主に、私はこれらの心配です:
MATLAB:
for k = 1 : nx
j = k+2;
のPython:
for k in range(1,nx+1):
j = k+2
MATLAB:
[V,D] = eig(A, B);
DD = diag(D);
keep_idxs = find(~isinf(DD));
D = diag(DD(keep_idxs));
V = V(:, keep_idxs);
[lambda, idx] = min(diag(D));
f = V(:,idx);
のPython:
w,vr = scipy.linalg.decomp.eig(A,B)
w = w.real
vr = vr.real
w = w[2:-1-2]
lambda_ = w.min()
idx = w.argmin()
f = vr[:,idx]
MATLAB:
f = f(3:end-2);
[nf, nf_idx] = max(abs(f)); % L_infty norm
n2 = f(nf_idx); % normalize sign away, too
f = f ./ n2;
のPython:
f = f[2:-1-1]
nf = max(np.absolute(f))
nf_idx = np.absolute(f).argmax()
nf_idx = np.ma.argmax(f)
n2 = f[nf_idx]
f = f/n2
MATLAB:
xx = -kappa:h:kappa;
のPython:
xx = np.arange(-kappa, kappa+h, h)
それらは互いに同等ですか?彼らがそうであれば、なぜ彼らは全く同じ結果を生み出すのではないでしょうか?
コードを正しく書式設定し、問題の詳細を特定する必要があります。あなたは何について話していますか? – Falmarri
構文は全く異なります。 MATLABのインデックスは1から始まり、Pythonでは0から始まります。異なる結果を生成するエラーが発生したかどうかを知りたいと思います。 – user569474
私は固有値問題を数値的に解こうとします。コードはMATLABにあり、Pythonに変換しようとしています。 – user569474