WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Hilfestellung zu mathematischen Themen der Analysis, MatLab

 

MatthiasLab
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 19.06.24
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2024, 21:51     Titel: Hilfestellung zu mathematischen Themen der Analysis, MatLab
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.06.2024, 08:24     Titel:
  Antworten mit Zitat      
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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.