|
|
Hilfestellung zu mathematischen Themen der Analysis, MatLab |
|
MatthiasLab |
Forum-Newbie
|
|
Beiträge: 1
|
|
|
|
Anmeldedatum: 19.06.24
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.06.2024, 21:51
Titel: Hilfestellung zu mathematischen Themen der Analysis, MatLab
|
|
|
|
|
In den letzten Tagen gab es vermehrt Anfragen zu einigen wichtigen mathematischen Konzepten der Analysis in Matlab. Hier sind einige grundlegende Skripte, die häufige Fragen zu diesen Themen beantworten sollten und eine gute Grundlage bieten:
%%
%Master Theorem, Laufzeit von Algorithmen
% Funktion zur Berechnung der Rekurrenz
function T = rekurrenz(n)
if n == 1
T = 1; % Basisfall
else
T = 8 * rekurrenz(floor(n/2)) + n^2 + 7 * n + 5;
end
end
% Laufzeit berechnen, Beispiel
n = 16; % Beispielwert für n
result = rekurrenz(n);
fprintf('T(%d) = %d\n', n, result);
------------------------------------------------------------------------------------------
%%
%Maily Aufgabe
function calculate_limits(f, x0)
% Symbolische Variable definieren
syms x
% Linkseitiger Grenzwert
limit_left = limit(f, x, x0, 'left');
% Rechtseitiger Grenzwert
limit_right = limit(f, x, x0, 'right');
% Überprüfen, ob der zweiseitige Grenzwert existiert
if isequal(limit_left, limit_right)
both_exists = true;
else
both_exists = false;
end
% Ergebnisse ausgeben
disp('Linkseitiger Grenzwert bei: ' + string(limit_left));
disp('Rechtseitiger Grenzwert bei: ' + string(limit_right));
if both_exists
disp('Zweiseitiger Grenzwert existiert, beide Grenzwerte sind gleich!');
else
disp('Zweiseitiger Grenzwert existiert nicht.');
end
end
% Beispielaufruf der Funktion
syms x
f = piecewise(x <= 1, x^2 + 1, x > 1, -x*(x - 3));
x0 = 1;
calculate_limits(f, x0);
-----------------------------------------------------------------------------------------
%%
%Differenzierbarkeit und Stetigkeitsprüfung
function check_properties(f, x0)
% Symbolische Variable definieren
syms x
% Berechne Grenzwerte und Funktionswert
limit_left = limit(f, x, x0, 'left');
limit_right = limit(f, x, x0, 'right');
limit_both = limit(f, x, x0);
f_value = subs(f, x, x0);
% Überprüfung der Stetigkeit
is_continuous = isequal(limit_both, f_value);
% Berechne die Ableitung und deren Grenzwerte
f_prime = diff(f, x);
limit_left_prime = limit(f_prime, x, x0, 'left');
limit_right_prime = limit(f_prime, x, x0, 'right');
% Überprüfung der Differenzierbarkeit
is_differentiable = isequal(limit_left_prime, limit_right_prime);
% Ergebnisse ausgeben
disp('Linkseitiger Grenzwert: ' + string(limit_left));
disp('Rechtseitiger Grenzwert: ' + string(limit_right));
disp('Funktionswert mit x = ' + string(x0) + ': ' + string(f_value));
if is_continuous
disp('Die Funktion ist stetig bei x = ' + string(x0));
else
disp('Die Funktion ist nicht stetig bei x = ' + string(x0));
end
if is_differentiable
disp('Die Funktion ist differenzierbar bei x = ' + string(x0));
else
disp('Die Funktion ist nicht differenzierbar bei x = ' + string(x0));
end
end
% Aufruf der Funktion mit Übungsaufgabe
syms x
f = piecewise(x <= 1, x^2 + 1, x > 1, -x*(x - 3));
x0 = 1;
check_properties(f, x0);
------------------------------------------------------------------------------------------
%%
% Stetigkeit
syms x;
f = piecewise(x <= 1, x^2 + 1, x > 1, -x*(x-3));
x0 = 1;
% Stetigkeit überprüfen
stetigkeit = limit(f, x, x0) == subs(f, x, x0);
% Ausgabe
if stetigkeit
disp("Funktion f ist an x0 = 1 stetig.");
else
disp("Funktion f ist an x0 = 1 unstetig.");
end
------------------------------------------------------------------------------------------
%%
%Differenzierbarkeit
syms x;
f = piecewise(x <= 1, x^2 + 1, x > 1, -x*(x-3));
x0 = 1;
% Ableitung der Funktion
f_ableitung = diff(f, x);
% Grenzwerte der Ableitung überprüfen
limit_left_ableitung = limit(f_ableitung, x, x0, 'left');
limit_right_ableitung = limit(f_ableitung, x, x0, 'right');
% Differenzierbarkeit überprüfen
differenzierbarkeit = limit_left_ableitung == limit_right_ableitung;
% Ausgabe
if differenzierbarkeit
disp("Funktion f ist an x0 = 1 differenzierbar.");
else
disp("Funktion f ist an x0 = 1 nicht differenzierbar.");
end
------------------------------------------------------------------------------------------
%%
%Konvergenz von Folgen
% Grenzwert bestimmen
syms n;
limit_value = limit(2 + (n^2 + n - 4)/(n^2 + 7), n, inf);
% Ausgabe des Grenzwerts
disp("Der Grenzwert der Folge ist: " + char(limit_value));
------------------------------------------------------------------------------------------
%%
%Graphische Darstellung der Konvergenz
%Konvergenz von Folgen
% Grenzwert bestimmen
syms n;
limit_value = limit(2 + (n^2 + n - 4)/(n^2 + 7), n, inf);
disp("Der Grenzwert der Folge ist: " + char(limit_value));
% Numerische Werte für n
n_values = 1:100;
% Definition der Folge
a_n = 2 + (n_values.^2 + n_values - 4) ./ (n_values.^2 + 7);
% Plotten der Folge
plot(n_values, a_n, 'o-');
xlabel('n');
ylabel('a_n');
title('Folge a_n = 2 + (n^2 + n - 4)/(n^2 + 7)');
grid on;
------------------------------------------------------------------------------------------
%%
% Stetigkeit bei zwei Variablen
syms x a;
% Definition der Funktion
f = piecewise(x < 2, 8*a + 16*x, x >= 2, a^2 * (x + 2));
x0 = 2;
% Stetigkeit überprüfen
stetigkeit = limit(f, x, x0, 'left') == limit(f, x, x0, 'right');
% Ausgabe
if stetigkeit
disp("Funktion f ist an x0 = 2 stetig.");
else
disp("Funktion f ist an x0 = 2 unstetig.");
end
% Lösungswert für a finden
a_solutions = solve(limit(f, x, x0, 'left') == limit(f, x, x0, 'right'), a);
disp('Die Werte von a, die die Funktion an x0 = 2 stetig machen, sind:');
disp(a_solutions);
-------------------------------------------------------------------------------------------
%%
%Stetigkeit als Funktion mit zwei Variablen
function find_stetigkeit(f, x0)
% Symbolische Variable definieren
syms x a;
% Grenzwerte berechnen und gleichsetzen
left_limit = limit(f, x, x0, 'left');
right_limit = limit(f, x, x0, 'right');
a_solutions = solve(left_limit == right_limit, a);
% Ausgabe
disp('Die Werte von a, die die Funktion an x0 stetig machen, sind:');
disp(a_solutions);
end
%Aufruf der Funktion
syms x a;
x0 = 2;
f = piecewise(x < 2, 8*a + 16*x, x >= 2, a^2 * (x + 2));
find_stetigkeit(f, x0);
------------------------------------------------------------------------------------------
%%
%Master Theorem
% Symbolische Variable definieren
syms n
% Rekurrenzgleichung definieren: T(n) = 8*T(n/2) + n^2 + 7*n + 5
a = 8; % Anzahl der Teilprobleme
b = 2; % Faktor der Problemgröße bei der Teilung
f = n^2 + 7*n + 5; % Funktion für die Kombination der Teilprobleme
% Bestimmung von log_b(a)
logb_a = log(a) / log(b);
% Bestimmung der asymptotischen Laufzeit
if limit(f / n^(logb_a - 1), n, inf) == 0
disp('Gemäß dem Master-Theorem: T(n) = Theta(n^log_b(a))');
elseif limit(f / n^logb_a, n, inf) == 1
disp('Gemäß dem Master-Theorem: T(n) = Theta(n^log_b(a) * log(n))');
elseif limit(f / n^(logb_a + 1), n, inf) == 0
disp('Gemäß dem Master-Theorem: T(n) = Theta(f(n))');
else
disp('Das Master-Theorem ist nicht anwendbar.');
end
-------------------------------------------------------------------------------------------
Bei weiteren Fragen stehe ich gern zur Verfügung.
_________________
MatthiasLab
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 20.06.2024, 08:24
Titel:
|
|
Hallo,
danke fürs Posten!
Falls noch möglich, bitte editieren und die Code-Umgebung verwenden. Dann wird der Code innerhalb des Forum besser dargestellt und dadurch leichter lesbar.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|