From 7e8f10448d910fdc938383ce4ce7904a60be51c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=BCller?= Date: Tue, 30 Nov 2021 17:25:41 +0100 Subject: add new bessel images --- buch/chapters/090-pde/bessel/besselnodes.m | 106 +++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 buch/chapters/090-pde/bessel/besselnodes.m (limited to 'buch/chapters/090-pde/bessel/besselnodes.m') diff --git a/buch/chapters/090-pde/bessel/besselnodes.m b/buch/chapters/090-pde/bessel/besselnodes.m new file mode 100644 index 0000000..0dcba3e --- /dev/null +++ b/buch/chapters/090-pde/bessel/besselnodes.m @@ -0,0 +1,106 @@ +# +# besselnodes.m +# +# (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +# +global maxmu; +maxmu = 3; +global maxk; +maxk = 4; +global mu; + +nachkommastellen = 4; + +function retval = f(x) + global mu; + retval = besselj(mu, x); +endfunction + +global kzeros; +kzeros = zeros(maxk+1, maxmu+1); +for mu = (0:maxmu) + k = 0; + x = 0.0001; + while (k <= maxk) + bracket = [ x, x+1 ]; + if (f(bracket(1)) * f(bracket(2)) < 0) + kzeros(k+1,mu+1) = fzero("f", bracket); + k = k + 1; + endif + x = x + 1; + endwhile +endfor + +xshift = 4; +yshift = 4; +global r; +r = 1.8; + +function retval = anderefarbe(f) + if (1 == strcmp("red", f)) + retval = "blue"; + else + retval = "red"; + endif +endfunction + +function sektor(fn, mu, k, w0, w1, startfarbe) + global kzeros; + global r; + fprintf(fn, "\\begin{scope}\n"); + fprintf(fn, "\\clip (0,0)--(%.4f:%.4f) arc (%.4f:%.4f:%.4f)--cycle;\n", + w0, r, w0, w1, r); + faktor = kzeros(k+1,mu+1); + + K = k + 1; + farbe = startfarbe; + while (K > 0) + R = r * kzeros(K, mu+1) / faktor; + fprintf(fn, "\\fill[color=%s!20] ", farbe); + fprintf(fn, "(0,0) circle[radius=%.4f];\n", R); + farbe = anderefarbe(farbe); + K = K-1; + end + fprintf(fn, "\\end{scope}\n"); +endfunction + +fn = fopen("besselnodes.tex", "w"); + +#fprintf(fn, "\\begin{tikzpicture}[>=latex,thick]\n"); + +for mu = (0:maxmu) + if (mu > 0) + winkel = 180 / mu; + else + winkel = 360; + endif + for k = (0:maxk) + fprintf(fn, "\\begin{scope}[xshift=%.3fcm,yshift=-%.3fcm]\n", + mu * xshift, k * yshift); + for w0 = (0:2*winkel:360) + sektor(fn, mu, k, w0, w0 + winkel, "red"); + if (winkel < 270) + sektor(fn, mu, k, w0 + winkel, w0 + 2 * winkel, "blue"); + endif + endfor + + fprintf(fn, "\\draw (0,0) circle[radius=%.4f];\n", r); + + fprintf(fn, "\\end{scope}\n\n"); + endfor +endfor + +for mu = (0:maxmu) + fprintf(fn, "\\node at (%.4f,%.4f) [above] {$\\mu=%d$};\n", + mu * xshift, 0.5 * yshift, mu); +endfor + +for k = (0:maxk) + fprintf(fn, "\\node at (%.4f,%.4f) [above,rotate=90] {$k=%d$};\n", + -0.5 * xshift, -k * yshift, k); +endfor + +#fprintf(fn, "\\end{tikzpicture}\n"); + +fclose(fn); + -- cgit v1.2.1