zrhqr.cpp

来自「可以用于科学计算的库」· C++ 代码 · 共 28 行

CPP
28
字号
#include <complex>
#include "nr.h"
using namespace std;

void NR::zrhqr(Vec_I_DP &a, Vec_O_CPLX_DP &rt)
{
	int j,k;
	complex<DP> x;

	int m=a.size()-1;
	Mat_DP hess(m,m);
	for (k=0;k<m;k++) {
		hess[0][k] = -a[m-k-1]/a[m];
		for (j=1;j<m;j++) hess[j][k]=0.0;
		if (k != m-1) hess[k+1][k]=1.0;
	}
	balanc(hess);
	hqr(hess,rt);
	for (j=1;j<m;j++) {
		x=rt[j];
		for (k=j-1;k>=0;k--) {
			if (real(rt[k]) <= real(x)) break;
			rt[k+1]=rt[k];
		}
		rt[k+1]=x;
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?