awk — Sequences & Series
Arithmetic sequence — first n terms
awk 'BEGIN{
a1=5; d=3; n=10
printf "a(n) = %d + (n-1)×%d\n", a1, d
for(i=1;i<=n;i++) printf "a(%d) = %d\n", i, a1+(i-1)*d
}'
Arithmetic series — sum of first n terms
awk 'BEGIN{
a1=1; d=2; n=100
an=a1+(n-1)*d
S=n*(a1+an)/2
printf "sum of first %d odd numbers = %.0f\n", n, S
printf "formula: n(a₁+aₙ)/2 = %d×(%d+%d)/2\n", n, a1, an
}'
Geometric sequence — first n terms
awk 'BEGIN{
a1=2; r=3; n=8
printf "a(n) = %d × %d^(n-1)\n", a1, r
for(i=1;i<=n;i++) printf "a(%d) = %.0f\n", i, a1*r^(i-1)
}'
Geometric series — sum and convergence
awk 'BEGIN{
a1=1; r=0.5; n=20
# Finite sum: a₁(1-rⁿ)/(1-r)
S_finite=a1*(1-r^n)/(1-r)
# Infinite sum (|r|<1): a₁/(1-r)
S_inf=a1/(1-r)
printf "finite sum (n=%d): %.10f\n", n, S_finite
printf "infinite sum: %.10f\n", S_inf
printf "difference: %.10f\n", S_inf-S_finite
}'
Harmonic series — partial sums (diverges slowly)
awk 'BEGIN{
sum=0
for(n=1;n<=1000000;n++){
sum+=1/n
if(n==10||n==100||n==1000||n==10000||n==100000||n==1000000)
printf "H(%7d) = %.6f\n", n, sum
}
}'
Fibonacci — iterative generation
awk 'BEGIN{
a=0; b=1; n=20
for(i=1;i<=n;i++){
printf "F(%2d) = %d\n", i, b
temp=a+b; a=b; b=temp
}
}'
Collatz conjecture — sequence for a starting number
echo "27" | awk '{
n=$1; steps=0
printf "%d", n
while(n!=1){
n=(n%2==0)?n/2:3*n+1
printf " → %d", n
steps++
}
printf "\n(%d steps)\n", steps
}'
Taylor series — approximate e^x
awk 'BEGIN{
x=1 # compute e^1 = e
sum=1; term=1
for(n=1;n<=20;n++){
term*=x/n
sum+=term
if(n<=5||n==10||n==15||n==20)
printf "n=%2d: e^%.0f ≈ %.10f\n", n, x, sum
}
printf "actual: %.10f\n", exp(x)
}'
Depreciation schedule — straight line and declining balance
awk 'BEGIN{
cost=50000; salvage=5000; life=5
sl_dep=(cost-salvage)/life
printf "%-6s %12s %12s %12s\n", "Year", "Straight", "Declining", "Book Value"
bv_sl=cost; bv_db=cost
rate=2.0/life # double declining
for(y=1;y<=life;y++){
db_dep=bv_db*rate
if(bv_db-db_dep<salvage) db_dep=bv_db-salvage
bv_sl-=sl_dep; bv_db-=db_dep
printf "%-6d %12.2f %12.2f %12.2f\n", y, sl_dep, db_dep, bv_db
}
}'
SLA compound uptime over N months from heredoc
cat <<'EOF' | awk '{uptime*=$1/100} BEGIN{uptime=1} END{
printf "compound uptime: %.6f%%\n", uptime*100
printf "annual downtime: %.2f minutes\n", (1-uptime)*525960
}'
99.95
99.90
99.99
99.95
99.85
99.99
99.95
99.90
99.99
99.95
99.99
99.90
EOF
Growth projection — compound annual growth rate (CAGR)
awk 'BEGIN{
start=1000; finish=2500; years=5
cagr=exp(log(finish/start)/years)-1
printf "CAGR: %.2f%%\n", cagr*100
printf "\nProjection:\n"
val=start
for(y=0;y<=years;y++){
printf "Year %d: $%.2f\n", y, val
val*=(1+cagr)
}
}'
Recurrence relation — Tower of Hanoi moves
awk 'BEGIN{
printf "%5s %12s\n", "Disks", "Moves"
for(n=1;n<=20;n++) printf "%5d %12.0f\n", n, 2^n-1
}'