Cond.java
/*
* $Id: Cond.java,v 1.17 2008/07/16 15:40:00 koga Exp $
*
* Copyright (C) 2004 Koga Laboratory. All rights reserved.
*/
package org.mklab.tool.matrix;
import org.mklab.nfc.matrix.DoubleMatrix;
import org.mklab.nfc.scalar.DoubleNumber;
/**
* 2ノルムに関する条件数を求めるクラスです。
*
* <p>Condition number in 2-norm
*
* @author koga
* @version $Revision: 1.17 $
*/
public class Cond {
/**
* 2ノルムに関する条件数( <code>A</code> 最小特異値と 最大特異値の比を求める)を求めます。
*
* @param A 対象となる行列
* @return 条件数 (condition number)
*/
public static DoubleNumber cond(DoubleMatrix A) {
if (A.length() == 0) {
System.err.println(Messages.getString("Cond.0")); //$NON-NLS-1$
return new DoubleNumber(Double.NaN);
}
DoubleMatrix values = A.singularValue();
if (values.compareElementWise(".==", 0).anyTrue()) { //$NON-NLS-1$
System.err.println(Messages.getString("Cond.1")); //$NON-NLS-1$
return new DoubleNumber(Double.POSITIVE_INFINITY);
}
DoubleNumber c = values.max().divide(values.min());
return c;
}
}