diff options
| author | shigek <shigek@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-03-28 05:00:21 +0000 |
|---|---|---|
| committer | shigek <shigek@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-03-28 05:00:21 +0000 |
| commit | d2d2fed4e484b5c2caea652838becd884a8225d5 (patch) | |
| tree | 89e28877c7faa0402135f784553db6a1578eeb3a /ext/bigdecimal/lib/nlsolve.rb | |
| parent | 785fba71f8447ac1b43fad35e7db97dc5b72e65f (diff) | |
| download | ruby-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.rb | 38 |
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 |
