From fcbf63e62c627deae76c1b8cb8c0876c536ed811 Mon Sep 17 00:00:00 2001 From: Jari Vetoniemi Date: Mon, 16 Mar 2020 18:49:26 +0900 Subject: Fresh start --- jni/ruby/ext/bigdecimal/sample/nlsolve.rb | 39 +++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 jni/ruby/ext/bigdecimal/sample/nlsolve.rb (limited to 'jni/ruby/ext/bigdecimal/sample/nlsolve.rb') diff --git a/jni/ruby/ext/bigdecimal/sample/nlsolve.rb b/jni/ruby/ext/bigdecimal/sample/nlsolve.rb new file mode 100644 index 0000000..7fa921c --- /dev/null +++ b/jni/ruby/ext/bigdecimal/sample/nlsolve.rb @@ -0,0 +1,39 @@ +#!/usr/local/bin/ruby + +# +# nlsolve.rb +# An example for solving nonlinear algebraic equation system. +# + +require "bigdecimal" +require "bigdecimal/newton" +include Newton + +class Function # :nodoc: all + 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 -- cgit v1.2.3