diff src/samer/maths/Linear.java @ 0:bf79fb79ee13

Initial Mercurial check in.
author samer
date Tue, 17 Jan 2012 17:50:20 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/samer/maths/Linear.java	Tue Jan 17 17:50:20 2012 +0000
@@ -0,0 +1,42 @@
+/*
+ *	Copyright (c) 2000, Samer Abdallah, King's College London.
+ *	All rights reserved.
+ *
+ *	This software is provided AS iS and WITHOUT ANY WARRANTY; 
+ *	without even the implied warranty of MERCHANTABILITY or 
+ *	FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+package samer.maths;
+import  samer.core.*;
+
+
+public class Linear extends Function
+{	
+	private double	a, b;
+
+	public Linear() { this( Shell.getDouble("a",1), Shell.getDouble("b",0)); }
+	public Linear(double a, double b) { this.a = a; this.b = b; }
+
+	public double apply(double t) { return a*t+b; }
+	public void apply(double [] x) {
+		for (int i=0; i<x.length; i++) { x[i]*=a;  x[i]+=b; }
+	}
+	public void apply(double [] x, double [] y) {
+		for (int i=0; i<x.length; i++) y[i]=a*x[i]+b;
+	}
+	public String format(String arg) { 
+		StringBuffer buf=new StringBuffer();
+		if (b!=0) {
+			buf.append(X.string(b));
+			if (a!=0) buf.append(" + ").append(X.string(a)).append(arg);
+		} else {
+			if (a!=0) buf.append(X.string(a)).append(arg);
+			else return "0";
+		}
+		return buf.toString();
+	}
+
+	public Function derivative() { return new Constant(a); }
+	public Function inverse() { return new Linear(-a/b,1/b); }
+}