#
# step1.rb
# $Id: step1.rb,v 1.1 2000/11/18 18:57:43 keiko Exp $
#
require "narray"
require "numru/dcl"
include NumRu
include NMath
nmax = 201
imax = 5
len_2 = 5
ix = 0
iy0 = 1
iy1 = 2
iy2 = 3
iy3 = 4
z1 = NArray.sfloat(nmax, len_2)
a = []
#-- data ----
for m in 1..imax
tm = (2*m - 1)*PI
a[m-1] = (-1.0)**m * 2/tm
end
idx = NArray.sfloat(nmax).indgen!
z1[true,ix] = 1.0*idx/(nmax-1)
tn = 2*PI*z1[true,ix]
z1[ ( (tn>=(PI/2)) & (tn<(PI*3/2)) ).where, iy0] = 1.0
z1[true,iy1] = 0.5 + a[0]*cos(tn)
z1[true,iy2] = 0.5
z1[true,iy3] = 0.5
for k in 1..imax
tk = 2*k - 1
tc = a[k-1]*cos(tk*tn)
z1[true,iy2] = z1[true,iy2] +
if (k <= 3) then tc else 0 end
z1[true,iy3] = z1[true,iy3] + tc
end
#-- graph ----
iws = (ARGV[0] || (puts ' WORKSTATION ID (I) ? ;'; DCL::sgpwsn; gets)).to_i
DCL::gropn iws
DCL::grfrm
x = z1[true,ix]
y0 = z1[true,iy0]
y1 = z1[true,iy1]
y2 = z1[true,iy2]
y3 = z1[true,iy3]
DCL::usspnt(x, y0)
DCL::usspnt(x, y1)
DCL::usspnt(x, y2)
DCL::usspnt(x, y3)
DCL::uspfit
DCL::grstrf
DCL::ussttl('FREQUENCY', '/DAY', 'RESPONSE', '')
DCL::usdaxs
DCL::uulin(x, y0)
DCL::uuslnt(2)
DCL::uuslni(3)
DCL::uulin(x, y1)
DCL::uuslnt(3)
DCL::uulin(x, y2)
DCL::uuslnt(4)
DCL::uulin(x, y3)
DCL::grcls
syntax highlighted by Code2HTML, v. 0.9.1