diff options
| author | shigek <shigek@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-04-24 13:37:32 +0000 |
|---|---|---|
| committer | shigek <shigek@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-04-24 13:37:32 +0000 |
| commit | dcab445f53955957a7659a140f5e68ea93bb9823 (patch) | |
| tree | 1196b15571b715ea69fee1ea90ce8bb2e958e787 /ext/bigdecimal/sample/linear.rb | |
| parent | 42afa18dad9272dc8bfc96d87c0a8f10d154907c (diff) | |
| download | ruby-dcab445f53955957a7659a140f5e68ea93bb9823.tar.gz ruby-dcab445f53955957a7659a140f5e68ea93bb9823.tar.xz ruby-dcab445f53955957a7659a140f5e68ea93bb9823.zip | |
Dir. rearrangement according to the suggestions from Minero Aoki.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@3722 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/bigdecimal/sample/linear.rb')
| -rw-r--r-- | ext/bigdecimal/sample/linear.rb | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/ext/bigdecimal/sample/linear.rb b/ext/bigdecimal/sample/linear.rb new file mode 100644 index 000000000..f93404fb6 --- /dev/null +++ b/ext/bigdecimal/sample/linear.rb @@ -0,0 +1,46 @@ +#!/usr/local/bin/ruby + +# +# linear.rb +# +# Solves linear equation system(A*x = b) by LU decomposition method. +# where A is a coefficient matrix,x is an answer vector,b is a constant vector. +# +require "bigdecimal" +require "ludcmp" + +include LUSolve + +def rd_order + printf("Number of equations ?") + n = gets().chomp.to_i +end + +zero = BigDecimal::new("0.0") +one = BigDecimal::new("1.0") + +while (n=rd_order())>0 + a = [] + as= [] + b = [] + printf("\nEnter coefficient matrix element A[i,j]\n"); + for i in 0...n do + for j in 0...n do + printf("A[%d,%d]? ",i,j); s = gets + a <<=BigDecimal::new(s); + as<<=BigDecimal::new(s); + end + printf("Contatant vector element b[%d] ? ",i);b<<=BigDecimal::new(gets); + end + printf "ANS=" + x = lusolve(a,b,ludecomp(a,n,zero,one),zero) + p x + printf "A*x-b\n" + for i in 0...n do + s = zero + for j in 0...n do + s = s + as[i*n+j]*x[j] + end + p s-b[i] + end +end |
