Fr 26. Sep 10:59:59 CEST 2025/langrageinterpolationintegrationsuebung20250904.sh

# (C) David Vajda
# 2025-09-02
# Integrationsuebungsprogramm mit Langrage Interpolation

# zunaechst erzeugen wir zum beispiel 5 Stellen x4, x3, x2, x1, x0
# sie sind unsere Stuetzstellen
# wir muessen unterscheiden
# -- stuetzpunkt
# -- Stuetzstelle
# -- Stuetzwert


# bei einer Funktion, einer Abbildung von |R->|R
# gibt eine Stelle (x_i) und einen entsprechenden Wert
# y_i, wenn die funktion an der stelle x_i definiert ist
# geometrisch dargestellt oder als zahlenpaar bilden
# (x_i,y_i) den Stuetzpunkt

# fuer die interpolation eines polynoms vom grad n
# mit n+1 gegebenen stuetzpunkten brauche ich nicht lediglich
# die angabe der Wert (y5, y4, ...) sondern auch die stellen

# beispielsweise koennten die Stuetzpunkte, bei
#((8,y4),(4,y3),(3,y2),(2,y1),(1,y0))

# liegen auch die stelle selbst spielt eine rolle

# um langrage zu verwenden kann ich nun trivialerweise
# ein mal eine rechnung fuer die stellen 0, 1, 2, 3, 4, 5, 6
# tun, oder auch zufaellige zahlen erzeugen, in einem kleineren bereich
# und die formel implementieren

# ich verwende diesen weg
# die Zahlen werden in einem Feld Array gespeichert

if [ -z "$1" ]
then
    echo "filename required"
    exit
fi

x=(1)
y=(2)
i=1
n=5
while [ $i -lt $n ]
do
    x+=($((${x[$(($i-1))]}+1+$RANDOM%2)))
    y+=($((1+$RANDOM%5)))
    i=$(($i+1))
done

s="load(interpol);"
s="${s}p:["
i=0
while [ $i -lt $(($n-1)) ]
do
    s="$s[${x[$i]},${y[$i]}],"
    i=$(($i+1))
done
s="$s [${x[$i]},${y[$i]}]];${NL}"
s="$s f(x):=lagrange(p);"
s="$s expnd1f1: expand(f(x));"
s="$s int1f1: integrate(f(x),x,${x[0]},${x[$n-1]});"
s="$s plot2d(f(x),[x,${x[0]},${x[$(($n-1))]}],[png_file,\"$(pwd)/$1.png\"]);"
s="$s tex (int1f1,\"$(pwd)/$1.tex\");"
s="$s tex (expnd1f1,\"$(pwd)/$1.tex\");"
t="\\documentclass[a4paper]{article} \\usepackage{graphicx,german,amsmath,amsfonts} \\author{(C) David Vajda} \\title{Integral,rechenaufgabe} \\begin{document}\maketitle $\\displaystyle\\int_{${x[0]}}^{${x[$(($n-1))]}}f(x)dx = $ ";
echo "$t" > "$(pwd)/$1.tex"

echo "$s" > "$1.mc"
maxima -b "$1.mc"
echo -n "\\includegraphics[width=\\textwidth]{$(pwd)/$1.png} \$\$\\left(\\begin{array}{" >> "$(pwd)/$1.tex"
i=0
while [ $i -lt $n ]
do
    echo -n "c" >> "$(pwd)/$1.tex"
    i=$(($i+1))
done
echo "}" >> "$(pwd)/$1.tex"
i=0
while [ $i -lt $(($n-1)) ]
do
    echo -n "${x[$i]} & " >> "$(pwd)/$1.tex"
    i=$(($i+1))
done
echo "${x[$i]}\\\\" >> "$(pwd)/$1.tex"
i=0
while [ $i -lt $(($n-1)) ]
do
    echo -n "${y[$i]} & " >> "$(pwd)/$1.tex"
    i=$(($i+1))
done
echo "${y[$i]}" >> "$(pwd)/$1.tex"
echo "\\end{array}\\right)\$\$ \\end{document}" >> "$(pwd)/$1.tex"
pdflatex "$(pwd)/$1.tex"
pdftoppm -jpeg "$(pwd)/$1.pdf" "$(pwd)/$1"