|
Groovy example source code file (spectralnorm.groovy)
The Groovy spectralnorm.groovy source code/* The Computer Language Shootout http://shootout.alioth.debian.org/ contributed by Jochen Hinrichsen */ def approximate(n) { // create unit vector def u = [1.0D] * n // 20 steps of the power method def v = [0.0D] * n for (i in 1..10) { MultiplyAtAv(n,u,v) MultiplyAtAv(n,v,u) } // B=AtA A multiplied by A transposed // v.Bv /(v.v) eigenvalue of v double vBv = vv = 0.0D for (i in 0..<n) { vBv += u[i]*v[i] vv += v[i]*v[i] } return Math.sqrt(vBv/vv) } /* return element i,j of infinite matrix A */ def A(i, j) { return (1.0D) / ((i+j)*(i+j+(1.0D))/(2.0D) +i+(1.0D)) } /* multiply vector v by matrix A */ def MultiplyAv(n, v, Av){ for (i in 0..<n) { Av[i] = 0.0D for (j in 0..<n) Av[i] += A(i,j)*v[j] } } /* multiply vector v by matrix A transposed */ def MultiplyAtv(n, v, Atv){ for (i in 0..<n) { Atv[i] = 0.0D for (j in 0..<n) Atv[i] += A(j,i)*v[j] } } /* multiply vector v by matrix A and then by matrix A transposed */ def MultiplyAtAv(n, v, AtAv){ double[] u = new double[n] MultiplyAv(n, v, u) MultiplyAtv(n, u, AtAv) } def n = (args.length == 0 ? 100 : args[0].toInteger()) def nf = java.text.NumberFormat.getInstance() nf.setMaximumFractionDigits(9) nf.setMinimumFractionDigits(9) nf.setGroupingUsed(false) println(nf.format(approximate(n))) // EOF Other Groovy examples (source code examples)Here is a short list of links related to this Groovy spectralnorm.groovy source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.