Matlab-Routine über kubische Splines

Neue Frage »

Fletcher Auf diesen Beitrag antworten »
Matlab-Routine über kubische Splines
Guten Abend,

ich bin seit einer Stunde dabei eine Programmieraufgabe in Matlab zu lösen. Nun ist es so dass es darum geht aus gegebenen Vektoren x und y, welche eben die Datenpaare darstellen ein Interpolationspolynom zu erstellen und zwar nehme man zu den Interpolationsbedingungen noch die natürlichen Randbedingungen dazu. Das ganze habe ich im Heft schon stehen, wie man es von Hand lösen kann. Ich habe das jetzt auch so in Matlab implementiert und an Hand eines einfach Beispiels auch schon getestet. Die Koeffizienten für die einzelnen Interpolationspolynome habe ich in einer Matrix abgespeichert, zu n Stützstellen gibt es ja n-1 verschiedene Polynome.

Nun ist es so, dass ich diese Routine mit Hilfe der äuqidistanten Knoten und Tschebyscheff-Knoten auswerten soll und mit den exakten Werten der Runge-Funktion auf einem gegebenen Gitter vergleichen soll.

Das Gitter habe ich schon implementiert und die exakten Werte kann man sich auch leicht ausrechnen lassen, allerdings habe ich nun massive Probleme mit diesen Splines und diese auswerten zu können. Ich habe mir das so überlegt:

for i=1:101
p(i)=-1+2*(i-1)/100; Gitterstellen
f(i)=1/(1+25*p(i)*p(i)); Funktionsauswertung an diesen Stellen
end
for o=1:101
for i=1:17 es gibt 18 Stützstellen, daher 17 Interpolationssplines
if x(i)<=p(o)<=x(i+1)
chi(o)=polyval(B(i,: ),p(o)); B: Matrix bzgl. Tschebyscheff-Knoten
psi(o)=polyval(A(i,: ),p(o)); A: Matrix bzgl. äquidistanten Knoten
end
end
end
chi'
f'
psi'

Die Werte von chi und psi weichen deutlich von f ab. Ist das normal, oder ist es einfach mein Fehler. Also die Matrix mit den Werten müsste soweit noch stimmen, da ich sie ja mit anderen werten und einer bekannten funktion getestet habe.
tigerbine Auf diesen Beitrag antworten »

Hier gehen mir einige Begriffe durcheinander. Beim Spline ist das Gitter fest, also durch deine Eingabe [x], [y] festegelegt. Was willst Du dann mit äquidistanten oder Tschebyscheff-Knoten?

Die IP-Teilpolynome werden bei Splines nicht wie bei einer IP-Aufgabe berechnet. Gib doch mal deine Beispielaufgabe an.
Fletcher Auf diesen Beitrag antworten »

Oki, hier mal die Aufgabenstellung:

1) Schreibe Matlab-Routine, die zu gegebenen Stützstellen x_i und zugehörigen Werten y_i den kubischen Interpolationsspline berechnet. Zu den n+1 Interpolationsbedingungen nehme man noch die natürlichen Randbedingungen.

Diese Aufgabe habe ich meiner Meinung nach gelöst und zwar im großen und Ganzen habe ich das folgende Schema umgesetzt: Siehe http://www.arndt-bruenner.de/mathe/scripts/kubspline.htm

2) Bestimme damit für n=7, n= 12 und n = 17 das Interpolationspolynom zur Runge-Funktion

- mit den äquidistanten Stützstellen
- mit den Tschebyscheff-Knoten

Bestimme jeweils den maximalen Fehler auf einem feinen Gitter für m = 100 und vergleiche die Ergebnisse.


Ich hoffe, ich konnte damit etwas Klarheit schaffen, Ich glaube, dass ich das komplett falsch gemacht habe, viel zu viel Aufwand, denn ich komme ja nicht auf eine Interpolierende sondern auf ganz viele abschnittsweise definierte die ich in einer Matrix speichere.
tigerbine Auf diesen Beitrag antworten »

zu 1, der Ansatz von Bruenner ist ok. Freude

zu 2, da ist ja nun was anderes zu tun^^. Da brauchst du ein Programm, was IPs berechnet und vorher die Stützstellen /Funktiontionswerte.

Der Fehler wird hier wohl einfach über das Maximum der Deltas (f-IP) ausgerechnet, odeR?
Fletcher Auf diesen Beitrag antworten »

Ja richtig, der Fehler wird über das Max der Deltas ausgerechnet.

Also die a) habe ich soweit dann ja richtig, bleibt jetzt noch b). In b) habe ich einfach nochmal ein gesondertes File geschrieben, in diesem File lasse ich die Tschebyscheff und äquidistanten Knoten berechnen, dazugehörige Funktionswerte der Rungefunktion berechnen und rufe mein Programm aus der a) auf. Das liefert mir eben eine Matrix zurück.

Das Gitter bekomme ich ja auch noch hin und die Funktionswerte an diesen Stellen des Gitters sind auch kein Problem. Ich hänge jetzt eben daran, meine Splineinterpolierende, welche sich als Matrix darstellt an den richtigen Stelle auszuwerten auf dem Gitter. Schließlich darf man ja den Spline der zwischen x_i und x_i+1 definiert ist nicht irgendwo auswerten sondern eben nur zwischen diesen beiden werten oder nicht?

or i=1:101
p(i)=-1+2*(i-1)/100; Gitterstellen
f(i)=1/(1+25*p(i)*p(i)); Funktionsauswertung an diesen Stellen
end
for o=1:101
for i=1:17 es gibt 18 Stützstellen, daher 17 Interpolationssplines
if x(i)<=p(o)<=x(i+1)
chi(o)=polyval(B(i,: ),p(o)); B: Matrix bzgl. Tschebyscheff-Knoten
psi(o)=polyval(A(i,: ),p(o)); A: Matrix bzgl. äquidistanten Knoten
end
end
end
chi'
f'
psi'

Das habe ich bisher so, die Werte von chi und psi weichen aber zu sehr von f ab. Deshalb wundere ich mich.
tigerbine Auf diesen Beitrag antworten »

Zitat:
Original von Fletcher
Ja richtig, der Fehler wird über das Max der Deltas ausgerechnet.

Also die a) habe ich soweit dann ja richtig, bleibt jetzt noch b). In b) habe ich einfach nochmal ein gesondertes File geschrieben, in diesem File lasse ich die Tschebyscheff und äquidistanten Knoten berechnen, dazugehörige Funktionswerte der Rungefunktion berechnen und rufe mein Programm aus der a) auf. Das liefert mir eben eine Matrix zurück.



Aber in a sollte doch ein Spline berechnet werden, in b ein Interpolationspolynom. Das sind 2 verschiedene Dinge.

Edit: Was bei b noch fehlt ist das Intervall....[-1,1] verwirrt

Edit2: So könnte das für n=17 aussehen
 
 
Fletcher Auf diesen Beitrag antworten »

Hi tigerbine,

also bei der a) steht: Schreibe eine Matlab-Routine usw. und bei der b) steht dann: Bestimme damit für n=7 .... das Interpolationspolynom.

Also habe ich mir gedacht man soll mit der a) diesis Polynom bestimmen, aber wie schaut das denn aus?
Nach Arndt-Brünner und meinen Algorithmus a) berechnet man doch aus gegebenen Werten x und dazugehörigen Werten y diese Splines. Aber wie komme ich dann auf ein Interpolationspolynom? Beim Arndt-Brünner werden da auch mehr als ein Polynom gebildet.

Danke für die Graphen, ich habe mir schon gedacht, dass es so aussehen soll leider, ist das aber bei mir nicht der Fall.
tigerbine Auf diesen Beitrag antworten »

Ich habe eure Aufgabenstellung nicht gemacht. Ich sage nur i.A. gilt IP Spline. Was Dir a) dann bei b helfen soll, weiß ich nicht.

Ich such mal den zug.(n=17) natSpline raus. Geduld bitte.
tigerbine Auf diesen Beitrag antworten »

So würde es mit spline aussehen.
Fletcher Auf diesen Beitrag antworten »

Vielen Dank tigerbine.

Es ist echt erstaunlich wie gut diese Splines interpolieren. Hut ab.
tigerbine Auf diesen Beitrag antworten »

Das sollten sie auch. Augenzwinkern Die Runge Funktion ist ein klassisches Beispiel, wie es wenn man eine Funktion "Approximieren" möchte mit dem Ansatz der Polynominterpolation in die Hose gehen kann. Schau dir den Bereich Nahe der Intervallränder an.

Es wird auch mit steigendem n nicht "wirklich" besser. http://de.wikipedia.org/wiki/Runges_Ph%C3%A4nomen

Dazu solltest Du mal einen Blick in die Formel zur Abschätzung des IP-Fehlers werfen und die Ableitungen der Runge-Funktion betrachten. Augenzwinkern

Bei der Spline-Interpolation stellt man "sicher", dass man mit steigendem n bessere Ergebnisse erhält. Man erhöht nicht den Polynomgrad, sonder die Anzahl der Teilintervalle.
Fletcher Auf diesen Beitrag antworten »

Das mit der Polynominterpolation und den Oszillationen am Rand sollte ich sschon programmieren. Das habe ich auch verstanden. Dafür führt man ja die Tschebyscheff Knoten ein, dann wird es ein bisschen besser.

So wie ich das übrigens programmiere sollte es rein theoretisch funktionieren, aber irgendwo ist ein Fehler drin den ich nicht finde. Leider
tigerbine Auf diesen Beitrag antworten »

Sagen wir so, wenn IP, dann mit Tscheby-Knoten.

Was klappt nun mit dem Programm nicht?
Fletcher Auf diesen Beitrag antworten »

Die Auswertung bzgl. des Gitters meiner Splines funktioniert einfach nicht. Ich bekomme Werte die sich teilweise ziemlich unterscheiden von den echten Werten der Runge-Funktion und dann kann ich diesen Fehler nicht bestimmen, der ja bestimmt werden soll.
Ob ich zur Splineinterpolation als Stützstellen äquidistante oder die Tschebyscheff Knoten hernehme sollte doch keine Rolle Spielen oder Augenzwinkern
tigerbine Auf diesen Beitrag antworten »

Schätzelein, sicher können da 2 verschiedene Splines raus kommen (imho^^). Wir haben natürliche Randbedingungen. Augenzwinkern

Mit Der Auswertung meinst du den Delta Teil?

Edit: Ich versuch mal was mein Programm ausspukt.
tigerbine Auf diesen Beitrag antworten »

äquidistant

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
Matrix der Restriktionen in Monom-Darstellung: 1,x,x²,x³
RM =
     -0.39814      -1.6484      -1.8177      -0.6059
         2.05        8.634       12.578       6.1119
      0.72258     -0.65827      -9.1043      -10.752
      0.75392  5.5511e-017      -4.4964   -2.72e-015
      0.72258      0.65827      -9.1043       10.752
         2.05       -8.634       12.578      -6.1119
     -0.39814       1.6484      -1.8177       0.6059 


Tschebyscheff

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
Matrix der Restriktionen in Monom-Darstellung: 1,x,x²,x³
RM =
     -0.90162      -3.1281      -3.3158      -1.1269
       2.0734       7.6062       9.5941       4.0486
      0.56439     -0.54253      -5.0732      -4.7515
      0.59967 -9.5417e-016      -2.2922  7.5678e-015
      0.56439      0.54253      -5.0732       4.7515
       2.0734      -7.6062       9.5941      -4.0486
     -0.90162       3.1281      -3.3158       1.1269
Fletcher Auf diesen Beitrag antworten »

Richtig der delta teil stimmt nicht, aber hier sind mal meine Koeffizienten, vielleicht können wir diese vergleichen:

Interpolationspolynome für äquidistante-Knoten n=8


A =

-0.14682907864274 -0.33036542694617 0.04756671916147 0.22595211596970
12.30354539111984 18.34519627769770 9.38534757148341 1.78224892469002
-37.76038578904130 -19.20275210742316 -0.00163952479681 1.00000000000000
37.81285058253906 -19.20275210742316 -0.00163952479680 1.00000000000000
-12.56586935860862 18.58128784843760 -9.44764951376199 1.78716749908043
1.14366015510014 -1.98300642212554 0.83449762151958 0.07347630986684
-0.78697190246637 2.36091570739910 -2.42344397562390 0.88796170915271




ans =

Interpolationspolynome für Tschebyscheff-Knoten n=8


B =

-2.07515209803061 6.13087762446027 -6.10125632500929 2.08416849071405
2.96693190718195 -6.96884088512753 5.24343268671896 -1.19076113668290
-9.84967319556307 17.74622398974180 -10.64310478744604 2.21312867972182
20.47190598828576 -13.36554858521998 -0.00225187224200 1.00000000000000
-20.43340513330247 -13.36554858521997 -0.00225187224200 1.00000000000000
9.61875542581562 17.46978419980675 10.54405306638752 2.20234957555543
-1.61063860103452 -4.18456183443517 -3.37509226028803 -0.78000180891569

Offensichtlich sind meine Werte verkehrt. Ich mache wohl morgen früh noch was, denn da ist Abgabe. Aber Danke Freude
Danke schön
Fletcher Auf diesen Beitrag antworten »

Ich verstehe das jetzt gar nicht mehr. erinnierst du dich an die andere Aufgabe mit dem Funktion Betrag von x^3? Genau diese habe ich mit meinem Programm getestet und mir Arndt Brünner vergleichen und da hat immer alles gestimmt. Deshalb frage ich mich natürlich wo der Fehler liegt. Aber Fehlersuche nimmt ja bekanntlich die meiste Zeit in Anspruch. Wo machst du denn so schöne Plots?
tigerbine Auf diesen Beitrag antworten »

[matlab] habe mir da ein paar keine Programme zu dem Thema geschrieben. Also nur weil es mit einer Funktion geklappt hat, die auch noch ein "Polynom" war, kann man Implementierungsfehler nicht ausschließen.

Ich habe mit n=7 gerechnet... Sind deine Koeffizienten von den Monomen, wie geordnet? siehe meine erste Zeile im Output.
Fletcher Auf diesen Beitrag antworten »

meine sind genau andersherum sprich zuerst x^3... usw.
Die weichen viel zu sehr voneinander ab. Leider.
Bei n=18 habe ich festgestellt, dass die tatsächlichen Werte für höhere Stützstellen wieder eher übereinstimmen. Also ich nehme mal an das ich noch Implementierungsfehler habe.
tigerbine Auf diesen Beitrag antworten »

kann ich Dir jetzt nicht sagen, wo es hakt. Aber viel Erfolg. Augenzwinkern

Hast du es mal mit dem Programm von Brünner gegengecheckt?
Fletcher Auf diesen Beitrag antworten »

Is mir schon klar, dass du mir da gerade nicht helfen kannst smile
Beim Brünner könnte ich das noch gegenchecken gute Idee. Das werde ich noch versuchen, aber dann wars das. Vielleicht kann mir in der Uni noch jemand helfen. Ist vielleicht nur ein kleiner Fehler, aber wenn es bei diesem x^3 funktioniert sollte es auch für größere Sachen funktionieren. So sehe ich das smile
tigerbine Auf diesen Beitrag antworten »

code:
1:
2:
3:
4:
5:
Matrix der Restriktionen in Monom-Darstellung: 1,x,x²,x³
RM =
            0            0            0           -1
            0  1.1102e-016  3.3307e-016            1
  4.4409e-016            0            0            1

Das kommt bei mir für den Fall f(x)=|x³| bei vollst. Spline raus.
Fletcher Auf diesen Beitrag antworten »

Hi,

und das sagt Arndt-Brünner.
x aus [-1; 0]
S0(x) = 0,1333333(x+1)^3 - 1,1333333(x+1) + 1
= 0,1333333x^3 + 0,4x^2 - 0,7333333x
x aus [0; 1]
S1(x) = 1,3333333x^3 + 0,4x^2 - 0,7333333x
= 1,3333333x^3 + 0,4x^2 - 0,7333333x
x aus [1; 2]
S2(x) = -1,4666667(x-1)^3 + 4,4(x-1)^2 + 4,0666667(x-1) + 1
= -1,4666667x^3 + 8,8x^2 - 9,1333333x + 2,8


Jetzt haben wir ein Problem!
tigerbine Auf diesen Beitrag antworten »

Ich habe wohl den vollständigen Spline ausgegeben lassen, ging mir um das reproduzieren der Funktion. hier der natürliche.

code:
1:
2:
3:
4:
5:
6:
Matrix der Restriktionen in Monom-Darstellung: 1,x,x²,x³
RM =
            0     -0.73333          0.4      0.13333
            0     -0.73333          0.4       1.3333
          2.8      -9.1333          8.8      -1.4667
 


Und Bruenner sagt

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
x aus [-1; 0]
S0(x) = 0,13333x^3 + 0,4x^2 - 0,73333x

x aus [0; 1]
S1(x) = 1,33333x^3 + 0,4x^2 - 0,73333x

x aus [1; 2]
S2(x) = -1,46667x^3 + 8,8x^2 - 9,13333x + 2,8


Somit habe ich zumindest kein Problem. Sorry für die Verwirrung.
Fletcher Auf diesen Beitrag antworten »

Kein Problem. Ich habe bisher keine Zeit weiter zu machen. Muss jetzt erstmal für die Klausur das alte Zeug wiederholen. Das wird schon mal einiges in Anspruch nehmen. Leider.
Fletcher Auf diesen Beitrag antworten »

Hallo bine Augenzwinkern

Also ich habe jetzt mal das Ganze überprüft, mein Programm aus Teilaufgabe a) war definitiv richtig. Mein Fehler ist jedoch weiterhin die Auswertung. Bei mir stehen ja die Koeffizienten der Spline-Interpolierenden in einer Matrix, jetzt habe ich das mit verschiedenen Funktionen getestet und mit Arndt-Brünner verglichen und es passt soweit alles! Allerdings habe ich weiterhin ein Problem mit der Auswertung.

Es ist jetzt in einer neuen Aufgabe verlangt, Polynome auszuwerten an einer bestimmten Stelle, eigentlich wie das letzte mal auch. Es geht mir nur darum wie ich so eine Auswertung schaffe:

for j=1:31
for i=1:12
if t(i) <= d(j) <= t(i+1)
Val_Phi_1(j)=polyval(Phi_1(i,: ),d(j));
Val_Phi_2(j)=polyval(Phi_2(i,: ),d(j));
end
end
end


Das ist der code zur Auswertung, kurz zur Erklärung:
d(j) sind die Punkte, an denen ich die Splines auswerten soll. t(i) bilden die Stützstellen. In den Matrizen Phi_1 und Phi_2 stehen jeweils die Koeffizienten drin.
Es kommt nicht das heraus was rauskommen soll! Wo liegt hier der fehler?

Wäre super wenn du kurz darüber schauen könntest, vielleicht fällt dir was auf.
tigerbine Auf diesen Beitrag antworten »

Zitat:
Also ich habe jetzt mal das Ganze überprüft, mein Programm aus Teilaufgabe a) war definitiv richtig.

Unterscheiden sich unsere Programm im Ergebnis nun, oder nicht? verwirrt

Zitat:
Mein Fehler ist jedoch weiterhin die Auswertung.

Was willst du Auswerten?

Schreib mir doch mal für ein klein dimensioniertes Beispiel die Rechnung /Werte auf. Dann schaue ich morgen mal drüber.

Wie seid ihr denn nun bei 2) vorgegangen. Ein Spline ist wie gesagt nicht das Interpolationspolynom. Daher nützt dir 1) dazu nicht.
Fletcher Auf diesen Beitrag antworten »

Die 2) habe ich nicht weiter verfolgt. In der jetzigen Aufgaben geht es darum kubische Splines auszuwerten, also im folgenden Sinn:

Man habe einen Stützstellen-Vektor x=(-2,-1,0,1,2) und dazugehörige Daten y=(-5,-2,1,4,7)

Daraus kann man ja solche kubischen Splines generieren und bekommt insgesamt 4 abschnittsweise definierte Splines zwischen den Stützstellen. Nunja und wir interessieren uns jetzt für den Wert an der Stelle x=1,2452. Und genau an diesem Punkt stimmt es nciht mehr mit Arndt Brünner überein!
tigerbine Auf diesen Beitrag antworten »

Ok. Dann poste mir mal den spline von Bruenner, seinen Wert an der Stelle und deine Werte.
Fletcher Auf diesen Beitrag antworten »

Brünner:

x aus [-2; -1]
S0(x) = 3(x+2) - 5
= 3x + 1
x aus [-1; 0]
S1(x) = 3(x+1) - 2
= 3x + 1
x aus [0; 1]
S2(x) = 3x + 1
= 3x + 1
x aus [1; 2]
S3(x) = 3(x-1) + 4
= 3x + 1


x= 1.2452 S(x)= 4,7356

Bei mir:
Matrix

0 0 3 1
0 0 3 1
0 0 3 1
0 0 3 1

Wert für x: S(x) =

4.73560000000000

Jetzt kann mir echt keiner mehr helfen, bei diesem Programm kommt das richtige heraus und im komplizierteren Fall nicht. Aber die komplizierten Fälle kann und will ich hier nicht posten, weil das eben zu aufwendig ist. Ich glaub die if-Abfrage macht Probleme, wegen dem Vorzeichen, dass könnte ich noch ausprobieren, aber das komsiche ist, dass alle Datenpunkt in der vorliegenden Aufgabe positiv sind, deshalb kanns daran auch net liegen.
tigerbine Auf diesen Beitrag antworten »

Mein nat. kubischer Spline:

code:
1:
2:
3:
4:
5:
6:
Matrix der Restriktionen in Monom-Darstellung: 1,x,x²,x³
RM =
     1     3     0     0
     1     3     0     0
     1     3     0     0
     1     3     0     0


Auswertung mit Hornerschema an der Stelle x=1.2452

code:
1:
2:
3:
4:
Auswertung der Funktion und ihrer Ableitungen
---------------------------------------------
p^(0)_1(1.2452)=   4.7356 
p^(1)_1(1.2452)=        3 



Wenn Du das in die Spline-Funktion einbauen willst, musst du eben das richtige Intervall auswählen und die Koeffizienten an Horner übergeben. Das habe ich nun manuell gemacht. Hier sind nun alle splines gleich, so dass wir nicht testen können, ob du im richtigen Intervall landest.

Sollst du an mehreren Stellen auswerten? Warum 2 Phi_1 und Phi_2? Kannst du zu deinem Programm mal für einfachen Fall sagen, was Phi_1, Phi_2 sind?

Zitat:
Aber die komplizierten Fälle kann und will ich hier nicht posten, weil das eben zu aufwendig ist.


Naja, aber Du musst doch den Datenvektor haben. Stell in doch als [code] ein.... verwirrt

Den [matlab] Befehl polyval müsste ich mir nun erst anschauen, um da nach Fehlern zu suchen.


Sorry wenn ich Dich nicht auf Anhieb verstehe, bin schon was müde. Schläfer
Fletcher Auf diesen Beitrag antworten »

Kein Problem wenn du mich nicht auf Anhieb verstehst, manchmal drücke ich mich auch nicht korrekt aus. Ich werde das heute Abend machen, wie kann man so schön Code hier reinstellen wie du?

Muss jetzt erstmal in die Uni.
tigerbine Auf diesen Beitrag antworten »

Nutze die Code-tags."[code"] "[/code"]

edit: Der Fehler sollte in der if Anweisung liegen. Mit den Intervallgrenzen haben wir 2 Bedingungen, die mit & verbunden werden müssen. Ich habe mein Programm mal erweitert, da klappt das.
Fletcher Auf diesen Beitrag antworten »

Es könnte tatsächlich an der if-Abweisung gelegen haben:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
a=[3.75,3.75,2.25,1.25,0.25,0.75,4.00,5.50,6.25,9.00,12.50,12.75,12.25]';
b=[0.25,1.50,3.25,4.25,4.65,4.83,2.50,3.25,3.65,3.00,1.25,2.15,2.15,3.50]';
t=diag(zeros(12));
t(1)=0;
for i=2:13
    t(i)=t(i-1)+sqrt((a(i)-a(i-1))^2+(b(i)-b(i-1))^2);
end
x=t';
y=a;
Phi_1=kubsplines(x,y);
y=b;
Phi_2=kubsplines(x,y);

for j=1:31
    d(j)=(t(13)/30)*j;
end


for j=1:31
    for i=1:12
        if (t(i) <= d(j)) & (d(j)<= t(i+1))
            Val_Phi_1(j)=polyval(Phi_1(i,:),d(j));
            Val_Phi_2(j)=polyval(Phi_2(i,:),d(j));
        end
    end
end
Val_Phi_1'
Val_Phi_2'
plot(Val_Phi_1,Val_Phi_2)


Das ist mein bisheriger Code, es geht darum durch die Stützstellen t_i zusammen einmal mit den a_i und einmal mit den b_i eine kubische Splineinterpolation durchzuführen und dann diese Splines an den Stellen d_j auszuwerten um sich dann eine Kurve plotten zu lassen. Man soll damit die Umrisse eines Sauriers rekonsturieren können, ist eigentlich ganz witzig.

kubsplines ist die eigens von mir verfasste Funktion zu der Splineinterpolation, mit der soweit alles richtig sein müsste. Ich komme als Plot das Bild im Anhang, bei lust und zeit kannst du ja mal überprüfen ob du das auch bekommst Augenzwinkern

Schönen Abend noch und vielen Dank für die Fehlerfindung, kannst mir auch noch sagen warum man das unbedingt mit & verknüpfen muss, meine Variante ist doch mathematisch auch korrekt oder?
tigerbine Auf diesen Beitrag antworten »

Zitat:
Schönen Abend noch und vielen Dank für die Fehlerfindung, kannst mir auch noch sagen warum man das unbedingt mit & verknüpfen muss, meine Variante ist doch mathematisch auch korrekt oder?


Aber wir sind hier nicht in der theoretischen Mathe. Augenzwinkern Da gelten eben andere Spielregeln und hier werden 2 Dinge abgefragt, da braucht matlab eben ein "&". Wie immer gilt: "Wie sag ich's bloß meinem Rechner".
Fletcher Auf diesen Beitrag antworten »

Na gut Augenzwinkern Bin damit einverstanden, dann war dies auch schon das letzte Mal mein Fehler. Aber mein Dinosaurier lässt sich doch ganz gut erkennen oder Big Laugh
tigerbine Auf diesen Beitrag antworten »

Hihi, ja, ich hab zu erst das bild gesehen und gedacht "Was dann den für ein Viech". Big Laugh Mit deinem Text war es dann klar.
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »