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
#Created by Christian Schirm
#Edited by Johannes Kalliauer
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]
y=[2.0,2.5,2.5,3.4,3.7,6.6]
for N in range(1,7):
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)