Forum / Numerische Methoden der Ingenieurwissenschaften / 1.Test
1.Test
Hi,
wie bereitet man sich am besten auf den ersten Test vor?
Gibt es irgendwo gute Unterlagen?
Soll ich aus dem VO-Skript lernen?
Danke
Die Formelsammlung ist in einem thread vom letzten Jahr im PDV 1 kolloquium. Es kam gauss/-seidel, splineinterpolation ausgleichsrechnung, händlisch und pseudocode soweit ich weiß.
FRAGE: zu Gauß Seidel, warum schreibe ich in Python:
for j in range(0, i) :
sum += A[i,j]*x[j]
for j in range(i+1, n) :
sum += A[i,j]*x[j]
Obwohl wenn man nch den indizes in der Formel geht j von 1 bis i-1 gehen sollte. dachte erst das ist wieder wegen der anderen zählweise bei python, aber die zweite summe geht hat tatsächlich, so wie in der formel von i+1 bis n
Danke
[MENTION=3017]Falk[/MENTION] wie ist denn die Splineinterpolation gekommen? Ich find da keine Rechenbeispiele dazu, hast du da was? Danke
keine ahnung, auf facebook hat jemand geschrieben: Bei mir war gauss seidel zu programmieren dann einen iterationsschritt händisch durchführen interpolationspolynom anschreiben ... Interpolation mit linearen splines und dann noch ne ausgleichsrechnung die man mit gaussverfahren auflösen musste
ok danke! Ich hab die Theorie für lineare Splines eh vor mir, aber ich hätte gerne ein Rechenbsp wo das angewendet wird..
die ue 4 in python ist ganz gut. Hab mir selbst ein kleines linears bsp ausgedacht: xData: 1,2,3 yData: 2, 2.5, 3 dann musst eben (in 3 schritten, wenn du effizient bist) ein lgs für die eingesetzten werte in p=a+bx+cx² lösen, und rauskommen sollte 1.5 + 0.5x So stell ich mir das vor. Der code dazu ist ja nicht sooo schwer.
Frage: haben wir den code für die berechnung von splines irgendwo? in UE4 wird der nur aufgerufen, aber nicht selbst geschrieben, oder müssen wir das eh nciht selbst programmieren können, sondern nur anwenden? DANKE
hm das mit den codes hab ich mich auch schon gefragt, denke die müssen dann nicht selbst geschrieben werden
Frage: haben wir den code für die berechnung von splines irgendwo? in UE4 wird der nur aufgerufen, aber nicht selbst geschrieben, oder müssen wir das eh nciht selbst programmieren können, sondern nur anwenden? DANKE
# @param xData x-Koordinaten der Stuetzpunkte, Spaltenvektor! xData[i,0]=xi
# @param yData y-Koordinaten der Stuetzpunkte, Splatenvektor! yData[i,0]=yi
# @param typ Art der Randbedingungen (natural oder slope),String!
# @param BC1 Randbedingung am linken Rand, Skalar!
# @param BC2 Randbedingung am rechten Rand, Skalar!
def splineCoeffs(xData,yData,typ='natural',BC1 = 0.0, BC2 = 0.0):
if len(xData)!= len(yData):
return 'ERROR INPUT_DIMENSIONS'
m = len(xData) # Anzahl der Datenpunkte
n = m - 1 # Anzahl der kubischen Polynome
coeffMatrix = numpy.zeros((n,4)) ## Koeffizienten aller kubischen Polynome
## coeffMatrix[i,0] = ai
## coeffMatrix[i,1] = bi
## coeffMatrix[i,2] = ci
## coeffMatrix[i,3] = di
# Get ai -> ai = yData(xi) siehe Eq. (3.27)
for i in range(0,n,1):
coeffMatrix[i,0] = yData[i,0]
# Berechne ci (i=2,...,n) laut Eq. (3.31)
matrix = numpy.zeros((n-1,n-1)) # Matrix laut Eq. (3.31)
vector = numpy.zeros((n-1,1)) # Vektor laut Eq. (3.31)
for i in range(0,n-1,1): # Achtung auf Indizes - > vgl. mit Skriptum ntw.
hi = (xData[i+2,0]-xData[i+1,0])
him1 = (xData[i+1,0]-xData[i,0])
matrix[i,i] = 2*(hi + him1)
vector[i,0] = 3*((yData[i+2,0]-yData[i+1,0])/hi\
-(yData[i+1,0]-yData[i,0])/him1)
if i == 0:
matrix[i,i+1] = (xData[i+2,0]-xData[i+1,0])
elif i == n-2:
matrix[i,i-1] = (xData[i+1,0]-xData[i,0])
else:
matrix[i,i+1] = (xData[i+2,0]-xData[i+1,0])
matrix[i,i-1] = (xData[i+1,0]-xData[i,0])
ci = numpy.linalg.solve(matrix,vector)
# Kopiere ci in die Koeffizientenmatrix
for i in range(0,n-1,1):
coeffMatrix[i+1,2] = ci[i,0]
# SPLINE NATURAL
if typ =='natural':
# Berechne c0 aus RB ddP0(x0) = dd0 -> dd0 vorgegeben
coeffMatrix[0,2] = BC1/2.0
# Berechne di und bi (i=1,...,n-2)
for i in range(0,n-1,1):
him1 = (xData[i+1,0]-xData[i,0])
coeffMatrix[i,1] = (yData[i+1,0]-yData[i,0])/him1 -\
him1/3*(coeffMatrix[i+1,2]+2*coeffMatrix[i,2])
coeffMatrix[i,3] = (coeffMatrix[i+1,2]-coeffMatrix[i,2])/(3*(him1))
# Berechne dn-1 aus ddPn-1 = ddn -> ddn vorgegeben
hnm1=(xData[n,0]-xData[n-1,0])
coeffMatrix[n-1,3] = (BC2-2*coeffMatrix[n-1,2])/(6*hnm1)
# Berechne bn-1 aus Pn-1(xn)=yn
coeffMatrix[n-1,1] = (yData[n,0]-yData[n-1,0])/hnm1 -\
coeffMatrix[n-1,2]*hnm1 - coeffMatrix[n-1,3]*hnm1**2
# SPLINE SLOPE
elif typ == 'slope':
# Berechne b0 aus dP0(0)= BC1
coeffMatrix[0,1]= BC1
# Berechne c0 aus Eq. (3.30)
h1m1 = xData[1,0]-xData[0,0]
#print yData[1,0]-yData[0,0]
coeffMatrix[0,2] =-1.0/2.0*(3*coeffMatrix[0,1]/h1m1-\
3*(yData[1,0]-yData[0,0])/h1m1**2+coeffMatrix[1,2])
# Berechne di und bi (i=1,...,n-2)
for i in range(0,n-1,1):
him1 = (xData[i+1,0]-xData[i,0])
coeffMatrix[i,1] = (yData[i+1,0]-yData[i,0])/him1 -\
him1/3*(coeffMatrix[i+1,2]+2*coeffMatrix[i,2])
coeffMatrix[i,3] = (coeffMatrix[i+1,2]-coeffMatrix[i,2])/(3*(him1))
# Berechne dn-1 und bn-1 aus dPn-1(xn)=BC2 und Pn-1(xn)=yn
hnm1=(xData[n,0]-xData[n-1,0])
#dn-1
coeffMatrix[n-1,3]=(-coeffMatrix[n-1,2]/hnm1+BC2/hnm1**2-\
(yData[n,0]-yData[n-1])/hnm1**3)*0.5
#bn-1
coeffMatrix[n-1,1]=BC2-2*coeffMatrix[n-1,2]*hnm1-\
3*coeffMatrix[n-1,3]*hnm1**2
return coeffMatrix\n~~~
Bitteschön.
Danke! Haben wir den code dieses Jahr schon in der Übung durchgesprochen -> also müssen wir den inhalt wiedergeben können, oder nur anwenden? (anwenden im sinne von die schnittstellen wissen)
Franz @Franz
Wirtschaftsingenieur... · Technische Universit...
Anschlussfrage: Könnte jemand der Kollegen, die gestern den Test geschrieben haben posten, was gekommen ist?
Vor allem, was man bezüglich Python wissen musste und wie die Formelsammlung aussieht wäre hilfreich zu wissen!
Wenn jemand Fotos hat möge er die bitte posten!
Danke