Erzeugungsskript, um die Grafik zu erstellen.
Nach der Installation von Python den Quelltext in eine Datei mdkq.py kopieren und starten durch Doppelklicken oder in der Konsole durch Eingabe von
#This source code is public domain import numpy, pylab from matplotlib.font_manager import FontProperties import matplotlib.pyplot as plt import matplotlib.patches as mpatches from numpy.random import randn x=[1,2,3,4,5,6,7] y=[2.0,2.5,2.5,3.4,3.7,6.6,3] for N in range(1,8): A=numpy.zeros((N,N)) for i in range(N): for j in range(N): A[i,j]=sum(xi**(i+j) for xi in x) b=numpy.zeros((N)) for i in range(N): b[i]=sum(xi**(i)*yi for xi,yi in zip(x,y)) c=numpy.linalg.solve(A, b) xr=numpy.asarray(x) yr=numpy.sum([c[i]*xr**i for i in range(len(c))],axis=0) residuen=[] for i in range(len(x)): residuen+=[[xr[i],xr[i]],[y[i],yr[i]],'g-'] xneu=numpy.linspace(0, 8, num=100) yneu=numpy.sum([c[i]*xneu**i for i in range(len(c))],axis=0) plt.clf() fig = plt.figure(figsize=(4.5, 3.5)) fig.subplotpars.bottom=0.13 y0=plt.plot(*residuen[:-3]) plt.setp(y0, color='#80d080', linewidth=1.5) #y0=plt.plot(*residuen[-3:], label="Residuen") y0,=plt.plot(*residuen[-3:]) plt.setp(y0, color='#80d080', linewidth=1.5) #y2=plt.plot(xneu,yneu,'r-', label="Modellfunktion") y2,=plt.plot(xneu,yneu,'r-') #y1=plt.plot(x,y,'o', label="Messpunkte") y1,=plt.plot(x,y,'o') plt.xlabel('x') plt.ylabel('y') font = FontProperties() font.set_size('medium') leg = plt.legend([y1,y2,y0],['Messpunkte','Modellfunktion','Residuen'],frameon=True,loc='lower right',labelspacing=0.3,prop=font) #leg = plt.legend(frameon=True,loc='lower right',labelspacing=0.3,prop=font) plt.grid(True) plt.axis([0, 8, 0, 8]) plt.text(1,7, "Polynomgrad "+str(N-1),bbox=dict(boxstyle="square,pad=0.5",color='white',ec='black',fill=True)) #plt.show() plt.savefig('MDKQ_anim%i.png'%N) plt.savefig('test.eps', format='eps', dpi=900) plt.savefig("MDKQ_anim%i.svg"%N)