#!/usr/bin/env python import sys, math, string from math import sqrt, pi, sin, cos root2 = sqrt(2) def progression(a0=0.0,b0=0.0,x=1,y=1): a0 = float(a0) b0 = float(b0) sys.stdout.write("\n") for a in range(0,y): ak = {} bk = {} for b in range(0,x): ak[b] = a0 + float(a) bk[b] = b0 + float(b) sys.stdout.write("k".rjust(4)) sys.stdout.write("a_k".rjust(7)) sys.stdout.write("norm a".rjust(7)) sys.stdout.write("func a".rjust(7)) sys.stdout.write("b_k".rjust(7)) sys.stdout.write("norm b".rjust(7)) sys.stdout.write("func b".rjust(7)) sys.stdout.write( "\n") for k in range(0, 9): for b in range(0,x): sys.stdout.write(str("%d:" % k).rjust(4)) sys.stdout.write(str("%0.3f" % ak[b]).rjust(7)) sys.stdout.write(str("%0.3f" % \ norm(ak[b],k)).rjust(7)) sys.stdout.write(str("%0.3f" % \ sinFormula(k,a0 + float(a),b0 + float(b)) \ ).rjust(7)) sys.stdout.write(str("%0.3f" % bk[b]).rjust(7)) sys.stdout.write(str("%0.3f" % \ norm(bk[b],k)).rjust(7)) sys.stdout.write(str("%0.3f" % \ cosFormula(k,a0 + float(a),b0 + float(b)) \ ).rjust(7)) ak[b] = ak[b] - bk[b] bk[b] = ak[b] + 2*bk[b] sys.stdout.write( "\n") sys.stdout.write( "\n") def sinFormula(k,a,b): k = float(k) a = float(a) b = float(b) return pow(root2,k)*(a*cos(k*pi/4)-b*sin(k*pi/4)) def cosFormula(k,a,b): k = float(k) a = float(a) b = float(b) return pow(root2,k)*(b*cos(k*pi/4)+a*sin(k*pi/4)) def norm(n,k): return float(n) / pow(2,float(k)/2) if (__name__ == "__main__"): import re count = 15 if not len(sys.argv)>1: squareProgression(3,4) for arg in sys.argv[1:]: mo = re.match("^((?P\d+),(?P\d+),)?"+\ "(?P-?\d+(.\d+)?),(?P-?\d+(.\d+)?)$", arg) if not mo: print "arg " + arg + " generated no match" else: x = 1 y = 1 a = float(mo.group("a")) b = float(mo.group("b")) if mo.group("x"): x = int(mo.group("x")) y = int(mo.group("y")) progression(a, b, x, y)