summaryrefslogtreecommitdiffstats
path: root/ext/bigdecimal/lib/nlsolve.rb
diff options
context:
space:
mode:
authorshigek <shigek@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-03-28 05:00:21 +0000
committershigek <shigek@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-03-28 05:00:21 +0000
commitd2d2fed4e484b5c2caea652838becd884a8225d5 (patch)
tree89e28877c7faa0402135f784553db6a1578eeb3a /ext/bigdecimal/lib/nlsolve.rb
parent785fba71f8447ac1b43fad35e7db97dc5b72e65f (diff)
downloadruby-d2d2fed4e484b5c2caea652838becd884a8225d5.tar.gz
ruby-d2d2fed4e484b5c2caea652838becd884a8225d5.tar.xz
ruby-d2d2fed4e484b5c2caea652838becd884a8225d5.zip
Copied from rough/bigdecimal,documents & some sample programs added.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@3625 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/bigdecimal/lib/nlsolve.rb')
-rw-r--r--ext/bigdecimal/lib/nlsolve.rb38
1 files changed, 38 insertions, 0 deletions
diff --git a/ext/bigdecimal/lib/nlsolve.rb b/ext/bigdecimal/lib/nlsolve.rb
new file mode 100644
index 000000000..08f17f9ec
--- /dev/null
+++ b/ext/bigdecimal/lib/nlsolve.rb
@@ -0,0 +1,38 @@
+#!/usr/local/bin/ruby
+
+#
+# nlsolve.rb
+# An example for solving nonlinear algebraic equation system.
+#
+
+require "bigdecimal"
+require "newton"
+include Newton
+
+class Function
+ def initialize()
+ @zero = BigDecimal::new("0.0")
+ @one = BigDecimal::new("1.0")
+ @two = BigDecimal::new("2.0")
+ @ten = BigDecimal::new("10.0")
+ @eps = BigDecimal::new("1.0e-16")
+ end
+ def zero;@zero;end
+ def one ;@one ;end
+ def two ;@two ;end
+ def ten ;@ten ;end
+ def eps ;@eps ;end
+ def values(x) # <= defines functions solved
+ f = []
+ f1 = x[0]*x[0] + x[1]*x[1] - @two # f1 = x**2 + y**2 - 2 => 0
+ f2 = x[0] - x[1] # f2 = x - y => 0
+ f <<= f1
+ f <<= f2
+ f
+ end
+end
+ f = BigDecimal::limit(100)
+ f = Function.new
+ x = [f.zero,f.zero] # Initial values
+ n = nlsolve(f,x)
+ p x