📄 abstractiterationmonitor.java
字号:
/* * Copyright (C) 2003-2006 Bjørn-Ove Heimsund * * This file is part of MTJ. * * This library is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by the * Free Software Foundation; either version 2.1 of the License, or (at your * option) any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this library; if not, write to the Free Software Foundation, * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */package no.uib.cipr.matrix.sparse;import no.uib.cipr.matrix.Vector;import no.uib.cipr.matrix.Vector.Norm;/** * Partial implementation of an iteration reporter */public abstract class AbstractIterationMonitor implements IterationMonitor { /** * Iteration number */ protected int iter; /** * Vector-norm */ protected Norm normType; /** * Iteration reporter */ protected IterationReporter reporter; /** * Current residual */ protected double residual; /** * Constructor for AbstractIterationMonitor. Default norm is the 2-norm with * no iteration reporting. */ public AbstractIterationMonitor() { normType = Norm.Two; reporter = new NoIterationReporter(); } public void setFirst() { iter = 0; } public boolean isFirst() { return iter == 0; } public void next() { iter++; } public int iterations() { return iter; } public boolean converged(Vector r, Vector x) throws IterativeSolverNotConvergedException { return converged(r.norm(normType), x); } public boolean converged(double r, Vector x) throws IterativeSolverNotConvergedException { reporter.monitor(r, x, iter); this.residual = r; return convergedI(r, x); } public boolean converged(double r) throws IterativeSolverNotConvergedException { reporter.monitor(r, iter); this.residual = r; return convergedI(r); } protected abstract boolean convergedI(double r, Vector x) throws IterativeSolverNotConvergedException; protected abstract boolean convergedI(double r) throws IterativeSolverNotConvergedException; public boolean converged(Vector r) throws IterativeSolverNotConvergedException { return converged(r.norm(normType)); } public Norm getNormType() { return normType; } public void setNormType(Norm normType) { this.normType = normType; } public IterationReporter getIterationReporter() { return reporter; } public void setIterationReporter(IterationReporter monitor) { this.reporter = monitor; } public double residual() { return residual; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -