gsl-shell.git - gsl-shell

index : gsl-shell.git
gsl-shell
summary refs log tree commit diff
path: root/examples/bspline.lua
diff options
context:
space:
mode:
Diffstat (limited to 'examples/bspline.lua')
-rw-r--r--examples/bspline.lua 45
1 files changed, 26 insertions, 19 deletions
diff --git a/examples/bspline.lua b/examples/bspline.lua
index 6c6bb64f..0479e269 100644
--- a/examples/bspline.lua
+++ b/examples/bspline.lua
@@ -1,26 +1,33 @@
-n, br = 200, 10
+function demo1()
+ local n, br = 200, 10
-f = |x| cos(x) * exp(-0.1 * x)
-xsmp = |i| 15 * (i-1) / (n-1)
+ local f = |x| cos(x) * exp(-0.1 * x)
+ local xsmp = |i| 15 * (i-1) / (n-1)
-x, y = new(n, 1, |i| xsmp(i)), new(n, 1, |i| f(xsmp(i)))
+ local x, y = new(n, 1, |i| xsmp(i)), new(n, 1, |i| f(xsmp(i)))
-r = rng()
-w = new(n, 1)
-for i=1,n do
- local yi = y:get(i,1)
- local sigma = 0.1 * yi
- y:set(i,1, yi + rnd.gaussian(r, sigma))
- w:set(i,1, 1/sigma^2)
-end
+ local r = rng()
+ local w = new(n, 1)
+ for i=1,n do
+ local yi = y:get(i,1)
+ local sigma = 0.1 * yi
+ y:set(i,1, yi + rnd.gaussian(r, sigma))
+ w:set(i,1, 1/sigma^2)
+ end
+
+ local b = bspline(0, 15, br)
+ local X = b:model(x)
-b = bspline(0, 15, br)
-X = b:model(x)
+ local c, cov = mlinear(X, y, w)
-c, cov = mlinear(X, y, w)
+ local p = plot('B-splines curve approximation')
+ p:addline(xyline(x, mul(X, c)))
+ p:addline(xyline(x, y), 'blue', {{'marker', size=5}})
+ p:show()
+
+ return p
+end
-p = plot('B-splines curve approximation')
-p:addline(xyline(x, mul(X, c)))
-p:addline(xyline(x, y), 'blue', {{'marker', size=5}})
-p:show()
+print([[
+demo1() - B-Spline approximation of noisy data]])
generated by cgit v1.2.3 (git 2.39.1) at 2025年09月21日 04:54:11 +0000

AltStyle によって変換されたページ (->オリジナル) /