0 Daumen
2,4k Aufrufe

kann mir bitte einer mit Matlab folgende Aufgabe lösen?

Bild Mathematik

Avatar von

Vom Duplikat:

Titel: Erzeugen Sie mit Hilfe von MatLab eine gemeinsame Darstellung der Funktion f(x) = 1/(1 - x)

Stichworte: taylorpolynom,entwicklungspunkt

kann mir bitte einer diese Aufgabe mit MatLab programmieren?

Ich brauche den Quellcode. Die Zeichnung werde ich dann selber erzeugen lassen.


Bild Mathematik

2 Antworten

+2 Daumen

% Berechnung der Taylorreihe für die Funktion 1/(1-x)
x = -2:0.1:2;
y = 1./(1-x);
N = 30;
z = 0;
for k=0:N
    z = z + x.^k;
end
plot(x,y,'r',x,z,'b','LineWidth',2);
axis([-2 2 -10 10])
grid;

Avatar von 39 k
Ich war auch auf der Suche nach dieser Lösung :)
Ich habe aber da noch eine Frage. Was ist mit p5(x), p10(x), p25(x) und p50(x) ?
Wie wird der Entwicklungspunkt x0=0 in Matlab angegeben?

Also die Taylorreihe habe ich nicht in Matlab ausgerechnet sondern auf dem Papier und da kam raus

$$  T_n(x) = \sum_{k=0}^n x^k $$ Wenn Du in dem Skript den Wert für \( N \) z.B auf \( N = 5 \) änderst hast Du einTaylorpolynom der Ordnung \( 5 \)

Geht aber auch so

syms x;
f = 1./(1-x);
taylor(f)

ans =1+x+x^2+x^3+x^4+x^5

In taylor kannst Die Ordnung und den Entwicklungspunkt angeben. Standardmäßig wird \( x_0 = 0 \) und \( n = 5 \) gewählt.


Z.B. so


>> taylor(f,7,x,0.5)

Ich muss diese Aufgabe auch machen. Wir sollen das mit der Matlab-Funktion taylor() machen.

In der Aufgabenstellung steht ja, dass man eine gemeinsame Darstellung verwenden soll. Wie mache ich das? Was bedeuten die Parameter in den Klammern von taylor(f,7,x,0.5)?

Bei mir kommt foldenge Fehlermeldung, wenn ich es ausführe:

Error using sym/taylor (line 99)
The value of 'x' is invalid. It must satisfy the function: @(x)isvector(x)&&isAllVars(x).

Error in Untitled2 (line 3)
taylor(f,7,x,0.5);

Bei mir klappt dieser Code

% Berechnung der Taylorreihe für die Funktion 1/(1-x)
syms x;
f = 1./(1-x);
t10 = taylor(f,10,x);
t3 = taylor(f,3,x);
xd = -2:0.001:2;
yd = subs(f,x,xd);
ezplot(t10, [-2,2]); hold on;
ezplot(t3,  [-2,2]); hold on;
plot(xd, yd, 'r-');
ylim([-10.0 10.0]);
ylim([-2.0 2.0]);
grid;
title('Taylor approximation vs. actual function');
legend('Taylor','T10','T3');

Wenn ich diesen Code so ausführe, bekomme ich diese Fehlermeldung:
Error using sym/taylor (line 99)
The value of 'x' is invalid. It must satisfy the function: @(x)isvector(x)&&isAllVars(x).

Error in Untitled2 (line 3)
t10 = taylor(f,10,x);

Wofür steht denn T3 und T10?

Ich benutze die Version MATLAB R2015a. Kann es sein, dass sich dort die Taylor-Funktion geändert hat?

T3 und t10 sind die Rückgabewerte  der jeweiligen Taylor Funktion.

In der Hilfe zu Matlab ist die Syntax erklärt. Ich habe 2008 als Version, also schon ziemlich alt.

Hier ist ein Link mit Beispiel für die Taylor Funktion, allerdings 2017

Ok, ich habe das korrigert. Habe es so gemacht:

t10 = taylor(f, x, 10);
t3 = taylor(f, x, 3);

Das x muss an zweiter Stelle stehen.

Ich bekomme jetzt aber diese Fehlermeldungen:

Error using symengine (line 59)
Division by zero.

Error in sym/subs>mupadsubs (line 139)
G = mupadmex('symobj::fullsubs',F.s,X2,Y2);

Error in sym/subs (line 124)
    G = mupadsubs(F,X,Y);

Error in Untitled2 (line 6)
yd = subs(f, x, xd);


Irgendwie scheint er mit der Zeile xd = -2:0.001:2; nicht klar zu kommen. Bin mir aber nicht sicher. Was soll ich tun :(

T3 und T10 sind die Rückgabewerte das ist mir schon klar. Aber warum die Zahlen 3 und 10?

Was ist mit p5(x), p10(x), p25(x) und p50(x)?

Das war nur ein Beispiel für das Taylorpolynom 3'ter und 10'ter Ordnung. Die anderen musst Du noch selber hinzufügen.

Lad doch mal Deinen Code hoch.

Hier ist der Code:

syms x;
f = 1./(1-x);
t5 = taylor(f, x, 5);
t10 = taylor(f, x, 10);
t25 = taylor(f, x, 25);
t50 = taylor(f, x, 50);
xd = -2:0.001:2;
yd = subs(f, x, xd);
ezplot(t5, [-2,2]); hold on;
ezplot(t10, [-2,2]); hold on;
ezplot(t25, [-2,2]); hold on;
ezplot(t50,  [-2,2]); hold on;
plot(xd, yd, 'r-');
ylim([-10.0 10.0]);
ylim([-2.0 2.0]);
grid;
title('Taylor approximation vs. actual function');
legend('Taylor','T5','T10','T25','T50');

Bei mir läuft das fehlerfrei und als Ergebnis kommt das raus.Bild Mathematik

Wenn ich einfach eine 2 hinschreibe: yd = subs(f, x, 2); statt xd dann kommt diese grafik raus:

Bild Mathematik

Ist zwar nicht richtig, aber es liegt an xd. Wie mache ich das jetzt, damit das korrekt angezeigt wird?

Melde mich morgen wieder. Hab im Augenblick noch andere Termine.

Ok danke dir bis hierhin. Ich werde das aber irgendwie fertig machen müssen, weil morgen zu spät ist. Muss heute bis 23:59 Uhr hochladen.

0 Daumen

Hi,

die Reihenentwicklung ist $$  fx) = \frac{1}{1-x} = \sum_{k=1}^{n-1} x^k $$ Und dein paar Potenzen zu addieren ist auch in Matlab nicht schwierig. Übrigens ist das die geometrische Reihe.

Avatar von 39 k

Da ich wenig Ahnung von Matlab  habe, fällt mir das im Moment sehr schwer.

Na gut, dass musst Du Dir erarbeiten. Mach mal Vorschläge dann kommentiere ich sie.

Einarbeiten werde ich auf jeden Fall, weil das auch in der Klausur drankommen wird.

Das Problem ist, ich muss das heute hochladen bis 23:59 Uhr :(

Ich denke dann hast Du noch ca. 2 Stunden Zeit.

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Mathelounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community