]> gitweb.michael.orlitzky.com - octave.git/commitdiff
Add the partition function.
authorMichael Orlitzky <michael@orlitzky.com>
Fri, 14 Sep 2012 14:28:47 +0000 (10:28 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Fri, 14 Sep 2012 14:28:47 +0000 (10:28 -0400)
Remove shebang lines from non-executable files.
Begin the solve_poisson function.

bisect.m [changed mode: 0755->0644]
divided_difference.m [changed mode: 0755->0644]
has_root.m [changed mode: 0755->0644]
partition.m [new file with mode: 0644]
solve_poisson.m [new file with mode: 0644]

old mode 100755 (executable)
new mode 100644 (file)
index 56e099e..3e8faa5
--- a/bisect.m
+++ b/bisect.m
@@ -1,5 +1,3 @@
-#!/usr/bin/octave --silent
-
 function root = bisect(f, a, b, epsilon)
   ## Find a root of the function `f` on the closed interval [a,b].
   ##
old mode 100755 (executable)
new mode 100644 (file)
index 139fa47..7b8020e
@@ -1,5 +1,3 @@
-#!/usr/bin/octave --silent
-
 function dd = divided_difference(f, xs)
   ## Compute divided difference of `f` at points `xs`. The argument `xs`
   ## is assumed to be a vector containing at least one element. If it
old mode 100755 (executable)
new mode 100644 (file)
index 5c835d8..da518e9
@@ -1,5 +1,3 @@
-#!/usr/bin/octave --silent
-
 function has_root = has_root(fa, fb)
   ## Use the intermediate value theorem to determine whether or not some
   ## function has an odd number of roots on an interval. If the function
diff --git a/partition.m b/partition.m
new file mode 100644 (file)
index 0000000..ac616cf
--- /dev/null
@@ -0,0 +1,28 @@
+function [p,delta] = partition(integerN, a, b)
+  ## Partition the interval [a,b] into integerN subintervals. We do not
+  ## requite that a<b.
+  ##
+  ## INPUTS:
+  ##
+  ##   * integerN - The number of subintervals.
+  ##
+  ##   * a - The "left" endpoint of the interval to partition.
+  ##
+  ##   * b - The "right" endpoint of the interval to partition.
+  ##
+  ##
+  ## OUTPUTS:
+  ##
+  ##   * p - The resulting partition, as a vector of length integerN+1.
+  ##
+  ##   * delta - The distance between x_i and x_{i+1} in the partition.
+  ##
+  ##
+
+  ## We don't use abs() here because `b` might be less than `a`. In that
+  ## case, we want delta negative so that when we add it to `a`, we move
+  ## towards `b`.
+  delta = (b - a)/integerN
+
+  p = [a : delta : b]
+end
diff --git a/solve_poisson.m b/solve_poisson.m
new file mode 100644 (file)
index 0000000..be1b1ec
--- /dev/null
@@ -0,0 +1,17 @@
+function u = solve_poisson(integerN, f)
+  ##
+  ## Numerically solve the poisson equation,
+  ##
+  ##   -u_xx(x) = f(x)
+  ##
+  ## in one dimension, subject to the boundary conditions,
+  ##
+  ##   u(0) = 0
+  ##   u(1) = 1
+  ##
+  ## over the interval [0,1]. It is assumed that the function `f` is at
+  ## least continuous on [0,1].
+  ##
+
+  [xs,h] = partition(integerN, a, b);
+end