+1 Daumen
2,1k Aufrufe

Situation:

Es gibt zwei Wege die zahl e zu approximieren, einmal als Folge und ein mal als Reihe. 

Folge:

$$\mathrm { e } = \lim _ { n \rightarrow \infty } \left( 1 + \frac { 1 } { n } \right) ^ { n } \quad \Longrightarrow \quad \mathrm { e } _ { L } ( n ) = \left( 1 + \frac { 1 } { n } \right) ^ { n }$$


Reihe: 
$$ \mathrm { e } = \sum _ { k = 0 } ^ { \infty } \frac { 1 } { k ! } \Longrightarrow \mathrm { e } _ { S } ( n ) = \sum _ { k = 0 } ^ { n - 1 } \frac { 1 } { k ! } $$

Aufgabe:
Schreibe Folgende "MATLAB-functions":

(i) calcEulerLimit(n) das e_(L)(n) berechnet. 
(ii) calcEulerSum(n) das e_(S)(n) mit der MATLAB-Funktion f a c t o r i a l berechnet. 
(iii) calcEulerSum2(n) das e_(S)(n) ohne MATLAB-Funktion f a c t o r i a l berechnet. 

Danach sollte ich mit "tic" "toc" die Laufzeiten der drei Funktionen schreiben. 


Frage
Ich habe einen Code geschrieben der mir (i) liefert aber ich weiss nicht was gemeint ist mit schreibe Matlab-Funktion.
Heisst das, dass ich ein Skript schreiben muss?

Ich habe es lediglich im command window eingegeben und so 
bin ich auf e_(L)(n) gekommen. 

Mein Code (nur für command window):

%First I have to define a function.
%With its independent variable n.

eL=inline('(1+1/n)^n','n')

eL =

    Inline function:
    eL(n) = (1+1/n)^n

>> pretty(eL(n))
/ 1    \n
| - + 1 |
\ n    /

>> %Now lets try to take its limit when n approaches 1.
>> limit(eL(n),n,1)

ans =

2

>> %The function works and the output is as it was expected.
%Now, in the second step, lets take the limit and see what happens when n approaches infinity.

limit(el(n),n,Inf)
Undefined function or variable 'el'.

Did you mean:
>> limit(eL(n),n,Inf)

ans =

exp(1)

>> %Well the output is the exponential function itself
Avatar von

1 Antwort

0 Daumen

Antwort mit KI erzeugt

MATLAB-Funktionen

In MATLAB können Sie Funktionen auf zwei Hauptweisen definieren: in einer separaten Datei für jede Funktion oder als anonyme Funktionen (wie das inline-Beispiel, das Sie verwendet haben). Für Ihre Aufgabe müssen Sie separate Funktionendateien erstellen, da dies zu einer besseren Organisierung und Einsatzmöglichkeit in größeren Projekten führt. Anonyme oder inline Funktionen sind für kleinere, schnelle Berechnungen oder Funktionen, die selten wiederverwendet werden, praktisch.

Teil (i): calcEulerLimit(n)

1. Öffnen Sie MATLAB.
2. Erstellen Sie eine neue Funktion, indem Sie im Editor auf "New" und dann auf "Function" klicken.
3. Ersetzen Sie den automatisch generierten Code durch den folgenden Code:

matlab
function eL = calcEulerLimit(n)
%CALCEULERLIMIT Berechnet die Approximation der Eulerschen Zahl
%   mittels der Grenzwertdefinition
    eL = (1 + 1/n)^n;
end


4. Speichern Sie die Funktion mit dem Namen calcEulerLimit.m.

Teil (ii): calcEulerSum(n)

1. Folgen Sie dem gleichen Verfahren wie oben und erstellen Sie eine neue Funktion.
2. Ersetzen Sie den generierten Code durch:

matlab
function eS = calcEulerSum(n)
%CALCEULERSUM Berechnet die Approximation der Eulerschen Zahl
%   mittels der Summenformel und der MATLAB-Funktion factorial
    eS = sum(arrayfun(@(k) 1/factorial(k), 0:n-1));
end


3. Speichern Sie die Funktion mit dem Namen calcEulerSum.m.

Teil (iii): calcEulerSum2(n)

1. Wiederholen Sie die Schritte für eine neue Funktion.
2. Ersetzen Sie den Code durch:

matlab
function eS = calcEulerSum2(n)
%CALCEULERSUM2 Berechnet die Approximation der Eulerschen Zahl
%   mittels der Summenformel ohne die MATLAB-Funktion factorial
    eS = 0;
    for k = 0:n-1
        eS = eS + 1/prod(1:k); % prod(1:k) ist gleich k!
    end
end


3. Speichern Sie diese Funktion als calcEulerSum2.m.

Laufzeiten messen

Um die Laufzeiten dieser Funktionen zu messen, können Sie den folgenden MATLAB-Code verwenden:

matlab
n = 1000; % Beispiel für n

tic;
calcEulerLimit(n);
t1 = toc;
fprintf('Laufzeit calcEulerLimit: %f Sekunden.\n', t1);

tic;
calcEulerSum(n);
t2 = toc;
fprintf('Laufzeit calcEulerSum: %f Sekunden.\n', t2);

tic;
calcEulerSum2(n);
t3 = toc;
fprintf('Laufzeit calcEulerSum2: %f Sekunden.\n', t3);


Ändern Sie den Wert von n wie gewünscht, um mit verschiedenen Größen zu experimentieren. Beachten Sie, dass die Laufzeiten je nach Leistungsfähigkeit Ihres Computers variieren können.

Zusammenfassend, um Funktionen in MATLAB zu schreiben, sollten Sie separate Dateien für jede Funktion erstellen. Dies unterstützt die Wiederverwendbarkeit und übersichtliche Organisation Ihres Codes.
Avatar von 2,9 k

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community