package math.matrix;
import exception.IllegalDimensionException;
/**
* Diagonal matrix object dij∈ℝ, i≠j=0
* with m rows and n columns
* @author Daniel Weschke
*/
public class Diagonal extends Matrix{
/**
* UID
*/
private static final long serialVersionUID = 3206696282474150081L;
public Diagonal(int n){
this(n,n);
}
public Diagonal(int m, int n){
this.m = m;
this.n = n;
data = new double[m>n?m:n];
}
public Diagonal(double... d){
this(d.length);
int i;
for(i=0; in?m:n); i++)
set(i, d.get(i, i));
}
/**
* Generate an n-by-n identity matrix.
* An n-by-n matrix with ones on the diagonal and zeros elsewhere.
* @param n rows/columns
* @return n-by-n identity matrix
*/
public static Diagonal identity(int n){
int i;
Diagonal c = new Diagonal(n);
for(i=0; iC = s A
*/
public Diagonal times(double s){
int i;
Diagonal c = new Diagonal(m,n);
for(i=0; iD = s D
*/
public Diagonal timesEquals(double s){
int i;
for(i=0; iC = A • b = A b
* @throws IllegalDimensionException Illegal vector dimensions.
*/
public Vector times(Vector b) throws IllegalDimensionException{
int i;
if(n != b.n()) throw new IllegalDimensionException("Illegal vector dimensions.");
Vector c = new Vector(m);
for(i=0; i