Matlab-Code

Neue Frage »

RolandLee Auf diesen Beitrag antworten »
Matlab-Code
Guten Tag, liebes Forum!

Ich habe gestern folgenden Code geschrieben (für die Newtonsche Darstellung m.H.v. dividierter Differenzen):

function c = koeffizienten(f,s)
% Steigungsschema zur Berechnung der Koeffizienten c_i
c = f(s);
n = length(s);
for i=2:n
for k=n:-1:i
c(k) = (c(k)-c(k-1)) / (s(k)-s(k-i+1));
end
end
end

function y = polynom(x,s,c)
% Auswertung des Polynoms mit den Koeffizienten c_i durch modifiziertes
% Hornerschema
y = c(n);
for k=n-1:-1:1
y = c(k)+(x-s(k)).*y;
end
end

Heute wollte ich ich ihn nochmals in Matlab "laufen" lassen, doch es funktionierte nicht mehr.
Was habe ich vergessen bzw. falsch gemacht? Es ist richtig, den Code im Menü "Function-M-File" zu öffnen, oder?
kiste Auf diesen Beitrag antworten »
RE: Matlab-Code
Zitat:
Original von RolandLee
Heute wollte ich ich ihn nochmals in Matlab "laufen" lassen, doch es funktionierte nicht mehr.

Einen Cent für jede ungenaue Problembeschreibung im Matheboard und ich wäre heute reich.
Was funktionierte genau nicht? Wie hat sich das ausgedrückt?
RolandLee Auf diesen Beitrag antworten »
RE: Matlab-Code
Wenn ich auf "run" klicke, passiert folgendes:
File (...) is not found in the current directory or on tthe MATLAB path.
To run this file, you can either change the MATLAB current directory or add its directory to the MATLAB path.

Klicke ich auf "Change Directory", passiert nichts, genauso wie wenn ich auf "Add to Path" klicke..
kiste Auf diesen Beitrag antworten »

Links hat es ein Ordnerverzeichnis. Funktionen aus einer Datei werden nur gefunden falls dort das Verzeichnis geladen ist in dem deine .m-Datei ist.
RolandLee Auf diesen Beitrag antworten »

Ja, das ist bei mir alles so.
Meine Datei heisst 2a, und wenn ich auf "run" klicke, kommt folgende Fehlermeldung:

??? 2a
|
Error: Unexpected MATLAB expression.
kiste Auf diesen Beitrag antworten »

1. Ohne Dateiendung .m?
2. Ohne Inhalt der Datei kann ich nicht erraten was das für ein Fehler ist oder was du gemacht hast.
Meine Glaskugel funktioniert einfach nicht so gut gerade
 
 
RolandLee Auf diesen Beitrag antworten »

Doch, die Datei hat Endung .m (sie wird in der Fehlermeldung nicht angezeigt).

Der Inhalt von 2a.m ist folgender:

function c = koeffizienten(f,s)
% Steigungsschema zur Berechnung der Koeffizienten c_i
c = f(s);
n = length(s);
for i=2:n
for k=n:-1:i
c(k) = (c(k)-c(k-1)) / (s(k)-s(k-i+1));
end
end
end

function y = polynom(x,s,c)
% Auswertung des Polynoms mit den Koeffizienten c_i durch modifiziertes
% Hornerschema
y = c(n);
for k=n-1:-1:1
y = c(k)+(x-s(k)).*y;
end
end
kiste Auf diesen Beitrag antworten »

Das ist doch überhaupt keine Datei zum Ausführen. Da sind nur Funktionsdefinitionen. Du musst schon ein Skript schreiben oder die Funktionen in der Befehlseingabezeile testen
RolandLee Auf diesen Beitrag antworten »

Wie würde denn ein mögliches Skript für meine Datei aussehen?
kiste Auf diesen Beitrag antworten »

Denkt man sich sowas nicht beim Schreiben des Programms? geschockt
s = [1,2,3];
c = koeffizienten(inline('x^2+x+1'), s);
y= polynom(5,s,c)

Alles ohne Gewähr, sowas musst du eigentlich selbst und von alleine machen
RolandLee Auf diesen Beitrag antworten »

Achsoo - na alles klar smile
Gibt man den Code aber als Lösung einer Aufgabe ab, so muss man eh "nur" denjenigen angeben, den ich zu Beginn genannt habe, oder wie gibt man normalerweise eine solche Aufgabe ab?
(sorry, das ist mein "erstes Mal" :P )
kiste Auf diesen Beitrag antworten »

Woher soll ich das wissen was bei euch üblich ist. Bei uns immer mit Testprogramm damit es auch in der Übung vorführen kann.
RolandLee Auf diesen Beitrag antworten »

Also das heisst, du würdest die Aufgabe so abgeben:

s = [1,2,3];
c = koeffizienten(inline('x^2+x+1'), s);
y= polynom(5,s,c)

function c = koeffizienten(f,s)
% Steigungsschema zur Berechnung der Koeffizienten c_i
c = f(s);
n = length(s);
for i=2:n
for k=n:-1:i
c(k) = (c(k)-c(k-1)) / (s(k)-s(k-i+1));
end
end
end

function y = polynom(x,s,c)
% Auswertung des Polynoms mit den Koeffizienten c_i durch modifiziertes
% Hornerschema
y = c(n);
for k=n-1:-1:1
y = c(k)+(x-s(k)).*y;
end
end
kiste Auf diesen Beitrag antworten »

Ich würde es in 2 Dateien abgeben und wahrscheinlich mit 1-2 mehr Testbeispielen Augenzwinkern
pablosen Auf diesen Beitrag antworten »

Zitat:
Original von kiste
Ich würde es in 2 Dateien abgeben und wahrscheinlich mit 1-2 mehr Testbeispielen Augenzwinkern
??
RolandLee Auf diesen Beitrag antworten »

Bei dieser Aufgabe geht es aber um den Code, und nicht um die Graphen. Diese muss man - so wie ich die Aufgabe verstehe - gar nicht plotten..
pablosen Auf diesen Beitrag antworten »

Zitat:
Original von RolandLee
Bei dieser Aufgabe geht es aber um den Code, und nicht um die Graphen. Diese muss man - so wie ich die Aufgabe verstehe - gar nicht plotten..
Sry, stimmt, mein Fehler, du hast Recht. Ich schau mir die Aufgabe 2 gleich an.
pablosen Auf diesen Beitrag antworten »

Hallo

Also 1. Fehler, der mir gerade aufgefallen ist:

Eine Funktion namens koeffizienten(), sollte in ein m-file namens koeffizienzen.m gespeichert sein.

Die Datei koeffizienten.m muss sich in einem dem Matlab bekannten Ordner befinden oder du addest den Ordner mit dem Befehl addpath

Dann bei * oder potenzieren von Vektoren > . nach Variable nicht vergessen

Mal soweit
pablosen Auf diesen Beitrag antworten »

Ich krieg deine Geschichte nicht zum laufen.

Hab mal das hier gemacht für n=max. 2:

code:
1:
function [o] = serie2_2a_newton(x,y,z) b=size(x); b(2) o(1)=y(1); for i=2:1:b(2) o(i)=(y(i)-y(i-1))/(x(i)-x(i-1)); if i>2 for i=3:1:b(2)     o(i)=(o(i)-o(i-1))/(x(3)-x(1));     end end end


Geht zwar, aber die Aufgabe schreit nach Rekursion. Schau´s mir morgen nochmals an.

Gute Nacht
Neue Frage »
Antworten »



Verwandte Themen

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