如何将following MATLAB代码转换为Python?Here is my solution,但结果并不完全相同。例如,f在MATLAB代码中似乎总是正的,但是在我的Python代码中,f也会得到负值。
有什么办法修理这个程序吗?
我最关心的是这些:
MATLAB软件:for k = 1 : nx
j = k+2;
Python:
^{pr2}$
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)
它们是等价的吗?如果是,为什么它们不能产生完全相同的结果呢?