annotate examples/maths/QuadraticForm.java @ 2:74cc9e431818
Revert change to MidiSynth
author |
samer |
date |
Fri, 05 Apr 2019 16:43:56 +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 }
|