aboutsummaryrefslogtreecommitdiffstats
path: root/buch/chapters/070-orthogonalitaet/images/legendre.m
diff options
context:
space:
mode:
Diffstat (limited to 'buch/chapters/070-orthogonalitaet/images/legendre.m')
-rw-r--r--buch/chapters/070-orthogonalitaet/images/legendre.m64
1 files changed, 64 insertions, 0 deletions
diff --git a/buch/chapters/070-orthogonalitaet/images/legendre.m b/buch/chapters/070-orthogonalitaet/images/legendre.m
new file mode 100644
index 0000000..8e8317d
--- /dev/null
+++ b/buch/chapters/070-orthogonalitaet/images/legendre.m
@@ -0,0 +1,64 @@
+#
+# legendre.m
+#
+# (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+#
+pkg load miscellaneous
+global N;
+N = 30;
+
+function retval = legendrepath(fn, n, name)
+ global N;
+ m = n * N;
+ c = legendrepoly(n)
+ x = (-m:m)/m;
+ v = polyval(c, x);
+ fprintf(fn, "\\def\\legendre%s{\n", name)
+ fprintf(fn, "\t ({%.5f*\\dx},{%.5f*\\dy})", x(1), v(1));
+ for i = (2:length(v))
+ fprintf(fn, "\n\t-- ({%.5f*\\dx},{%.5f*\\dy})", x(i), v(i));
+
+ endfor
+ fprintf(fn, "\n}\n");
+ ci = polyint(conv(c, c))
+polyval(ci, 1)
+ normalization = sqrt(polyval(ci, 1) - polyval(ci, -1))
+ fprintf(fn, "\\def\\normalization%s{%.5f}\n", name, normalization);
+endfunction
+
+function retval = legendreprodukt(fn, a, b, name)
+ global N;
+ n = max(a, b);
+ m = n * N;
+ pa = legendrepoly(a);
+ pb = legendrepoly(b);
+ p = conv(pa, pb);
+ x = (-m:m)/m;
+ v = polyval(p, x);
+ fprintf(fn, "\\def\\produkt%s{\n", name)
+ fprintf(fn, "\t ({%.5f*\\dx},{%.5f*\\dy})", x(1), v(1));
+ for i = (2:length(v))
+ fprintf(fn, "\n\t-- ({%.5f*\\dx},{%.5f*\\dy})", x(i), v(i));
+ endfor
+ fprintf(fn, "\n}\n");
+endfunction
+
+fn = fopen("legendrepaths.tex", "w");
+legendrepath(fn, 1, "one");
+legendrepath(fn, 2, "two");
+legendrepath(fn, 3, "three");
+legendrepath(fn, 4, "four");
+legendrepath(fn, 5, "five");
+legendrepath(fn, 6, "six");
+legendrepath(fn, 7, "seven");
+legendrepath(fn, 8, "eight");
+legendrepath(fn, 9, "nine");
+legendrepath(fn, 10, "ten");
+
+legendreprodukt(fn, 4, 7, "ortho");
+legendreprodukt(fn, 4, 4, "vier");
+legendreprodukt(fn, 7, 7, "sieben");
+
+fclose(fn);
+
+