annotate examples/maths/QuadraticForm.java @ 8:5e3cbbf173aa tip

Reorganise some more
author samer
date Fri, 05 Apr 2019 22:41:58 +0100
parents 5df24c91468d
children
rev   line source
samer@1 1 package eg.maths;
samer@1 2 import samer.core.*;
samer@1 3 import samer.maths.*;
samer@1 4 import samer.maths.ops.*;
samer@1 5
samer@1 6 public class QuadraticForm extends FunctionOfVector
samer@1 7 {
samer@1 8 VVector x, yy;
samer@1 9 Matrix A;
samer@1 10 MatrixTimesVector Ax;
samer@1 11 double [] y;
samer@1 12
samer@1 13 public QuadraticForm() { this(Shell.getInt("dimensions",2)); }
samer@1 14 public QuadraticForm(int n)
samer@1 15 {
samer@1 16 x = new VVector("x",n);
samer@1 17 yy = new VVector("y",n);
samer@1 18 A = new Matrix("A",n,n);
samer@1 19 Ax = new MatrixTimesVector(yy.array(),A);
samer@1 20 y = yy.array();
samer@1 21
samer@1 22 Shell.put("functionOfVector",this);
samer@1 23 Shell.put("vector",x);
samer@1 24 }
samer@1 25
samer@1 26 public double apply(double [] x)
samer@1 27 {
samer@1 28 Ax.run(x);
samer@1 29 return -0.5*Mathx.dot(x,y);
samer@1 30 }
samer@1 31
samer@1 32 public VectorFunctionOfVector derivative()
samer@1 33 {
samer@1 34 return new VectorFunctionOfVector() {
samer@1 35
samer@1 36 public void apply(double [] x) {
samer@1 37 Ax.run(x);
samer@1 38 Mathx.copy(y,x);
samer@1 39 }
samer@1 40
samer@1 41 public void apply(double [] x, double [] v) {
samer@1 42 Ax.run(x);
samer@1 43 Mathx.copy(y,v);
samer@1 44 }
samer@1 45 };
samer@1 46 }
samer@1 47 }