当前位置: 首页>>代码示例>>C++>>正文


C++ matrix::Frobenius方法代码示例

本文整理汇总了C++中matrix::Frobenius方法的典型用法代码示例。如果您正苦于以下问题:C++ matrix::Frobenius方法的具体用法?C++ matrix::Frobenius怎么用?C++ matrix::Frobenius使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在matrix的用法示例。


在下文中一共展示了matrix::Frobenius方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: normal_base

void unipoly::normal_base(INT p, matrix& F, matrix& N, INT verbose_level)
// compare Lueneburg~\cite{Lueneburg87a} p. 106.
{
	INT f_v = (verbose_level >= 1);
	domain d(p);
	with ww(&d);
	INT i, f;
	Vector v, V;
	unipoly x, mue;
	
	f = degree();
	F.Frobenius(*this, p, FALSE);
	if (f_v) {
		cout << "unipoly::normal_base(): Frobenius:\n" << F << endl;
		}
	F.KX_cyclic_module_generator(v, mue, verbose_level - 1);
	V.m_l(f);
	V[0] = v;
	x.x();
	if (f_v) {
		cout << "unipoly::normal_base(): V[0]=" << v << endl;
		}
	for (i = 1; i < f; i++) {
		F.KX_module_apply(x, v);
		V[i] = v;
		if (f_v) {
			cout << "unipoly::normal_base(): V["<<i<<"]=" << v << endl;
			}
		}
	N.from_vector_of_columns(V);
	if (f_v) {
		cout << "unipoly::normal_base(): N=\n" << N << endl;
		}
	
#if 0
	matrix T, P, Pv, Q, Qv;
	integer a1;
	Vector v, vv, b, bb;

	T = F;
	T.elements_to_unipoly();
	T.minus_X_times_id();
	if (f_v) {
		cout << "F - x * Id=\n" << T << endl;
		}
	T.smith_normal_form(P, Pv, Q, Qv, f_vv, FALSE);
	
	if (f_v) {
		cout << "Q=\n" << Q << endl;
		}
	a1.m_i_i(1);
	Q.evaluate_at(a1);
	if (f_v) {
		cout << "Q(1)=\n" << Q << endl;
		cout << "F=\n" << F << endl;
		}
	Q.to_vector_of_columns(v);
	b = v.s_i(d - 1);
	vv.m_l(d);
	vv[1] = b;
	if (f_v) {
		cout << "N[0]=" << b << endl;
		}
	for (i = 1; i < d; i++) {
		bb.mult(F, b);
		b = bb;
		vv[i] = b;
		if (f_v) {
			cout << "N[" << i << "]=" << b << endl;
			}
		}
	N.from_vector_of_columns(vv);
	if (f_v) {
		cout << "N=" << N << endl;
		}
#endif

}
开发者ID:SALAM2016,项目名称:orbiter,代码行数:78,代码来源:unipoly.C


注:本文中的matrix::Frobenius方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。