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: Extrema, Integrale, Ober- und Untersummen

 

MatthiasLabi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2024, 14:32     Titel: Hilfestellung: Extrema, Integrale, Ober- und Untersummen
  Antworten mit Zitat      
Hallo liebe Matlab-User,
im folgenden stelle ich einige hilfreiche Codes zur Verfügung um Extrema, Unter- und Obersummen, Bestimmte und Unbestimmte Integrale zu berechnen:
Viel Spaß beim ausprobieren!



----------------------------------------------------------------------
Globale und Lokale Extrema

syms x;

% Beispiel-Funktion: f(x) =
f = x^4 + 2*x^3 - 2*x^2 +5

% Ableitungen
f_prime = diff(f, x); % erste Ableitung
f_double_prime = diff(f_prime, x) % zweite Ableitung
% Ausgabe Ableitungen
disp('Ableitung eins: ');
disp(f_prime);
disp('Ableitung zwei: ');
disp(f_double_prime);

% Nullstellen der ersten Ableitung
nullstellen = solve(f_prime == 0, x);

% Ausgabe der Nullstellen
disp('Nullstellen der ersten Ableitung:');
disp(nullstellen);

% Einsetzen von Nullstellen in zweite Ableitung
nullstelleninzweiteableitung = subs(f_double_prime, x, nullstellen);

% Ausgabe der Werte der zweiten Ableitung an den Nullstellen der ersten Ableitung
disp('Werte der zweiten Ableitung an den Nullstellen der ersten Ableitung:');
disp(nullstelleninzweiteableitung);

%% Global oder Lokal?

% Bestimmung der Art der kritischen Punkte
ergebnisse = struct('x', [], 'typ', {});

for i = 1:length(nullstellen)
x_kritisch = nullstellen(i);
wert_zweite_ableitung = double(subs(f_double_prime, x, x_kritisch));

if wert_zweite_ableitung > 0
typ = 'lokales Minimum';
elseif wert_zweite_ableitung < 0
typ = 'lokales Maximum';
else
typ = 'Wendepunkt';
end

ergebnisse(i).x = x_kritisch;
ergebnisse(i).typ = typ;
end

% Ausgabe der Ergebnisse
disp('Art der kritischen Punkte:');
for i = 1:length(ergebnisse)
fprintf('x = %.4f, %s\n', ergebnisse(i).x, ergebnisse(i).typ);
end
----------------------------------------------------------------------
Unbestimmtes Integral:

% Symbolische Variablen und Funktionen definieren
syms x

% Funktion für das unbestimmte Integral
f1 = x^3 + 2*x^2 - 5*x + 3;

% Unbestimmtes Integral berechnen
F1 = int(f1, x);
disp('Das unbestimmte Integral von f1(x) ist:')
disp(F1)

% Funktions-Handles für das unbestimmte Integral
f1_handle = matlabFunction(f1);
F1_handle = matlabFunction(F1);

% Wertebereich festlegen
x_values1 = linspace(-3, 3, 100);

% Funktionswerte berechnen
f1_values = f1_handle(x_values1);
F1_values = F1_handle(x_values1);

% Plot erstellen
figure;
plot(x_values1, f1_values, 'b', 'DisplayName', 'f1(x)');
hold on;
plot(x_values1, F1_values, 'r', 'DisplayName', 'Unbestimmtes Integral F1(x)');
legend show;
xlabel('x');
ylabel('y');
title('Unbestimmtes Integral von f1(x)');
grid on;
hold off;
----------------------------------------------------------------------
Bestimmtes Integral:


% Funktion für das bestimmte Integral
f2 = @(x) exp(-x.^2);

% Wertebereich und Funktionswerte berechnen
x_values2 = linspace(0, 1, 100);
f2_values = f2(x_values2);

% Bestimmtes Integral berechnen
a = 0;
b = 1;
I2 = integral(f2, a, b);
disp('Das bestimmte Integral von f2(x) von 0 bis 1 ist:')
disp(I2)

% Plot erstellen
figure;
area(x_values2, f2_values, 'FaceColor', 'blue', 'EdgeColor', 'blue', 'DisplayName', 'f2(x)');
hold on;
fill([a a b b], [0 f2(a) f2(b) 0], 'r', 'FaceAlpha', 0.3, 'EdgeColor', 'none', 'DisplayName', 'Bestimmtes Integral');
legend show;
xlabel('x');
ylabel('f2(x)');
title('Bestimmtes Integral von f2(x) von 0 bis 1');
grid on;
hold off;
----------------------------------------------------------------------
Fläche zwischen zwei Funktionen:

% Symbolische Variablen und Funktionen definieren
syms x

% Funktionen für die Flächenberechnung
f3 = x^2;
g3 = x;

% Funktions-Handles für die Flächenberechnung
f3_handle = matlabFunction(f3);
g3_handle = matlabFunction(g3);

% Wertebereich festlegen
x_values3 = linspace(0, 1, 100);

% Funktionswerte berechnen
f3_values = f3_handle(x_values3);
g3_values = g3_handle(x_values3);

% Plot erstellen
figure;
plot(x_values3, f3_values, 'b', 'DisplayName', 'f3(x) = x^2');
hold on;
plot(x_values3, g3_values, 'r', 'DisplayName', 'g3(x) = x');
fill([x_values3 fliplr(x_values3)], [f3_values fliplr(g3_values)], 'g', 'FaceAlpha', 0.3, 'EdgeColor', 'none', 'DisplayName', 'Fläche zwischen f3 und g3');
legend show;
xlabel('x');
ylabel('y');
title('Fläche zwischen f3(x) und g3(x) im Intervall [0, 1]');
grid on;
hold off;

----------------------------------------------------------------------
Untersumme mit Manueller Eingabe:

% Manuelle Eingabe von x- und y-Werten
x = [0, 0.25, 0.5, 0.75, 1]; % Beispiel x-Werte
y = [1, 0.94, 0.75, 0.44, 0]; % Beispiel y-Werte
% Erstellen einer Funktion aus den manuell eingegebenen Datenpunkten
f = @(xi) interp1(x, y, xi, 'linear');
disp(f); % Zeigt den Funktionsgriff an
% Beispiel: Werte der erstellten Funktion berechnen
xi = linspace(min(x), max(x), 100); % Neue x-Werte für die Evaluation
yi = f(xi); % Evaluiere die Funktion an den neuen x-Werten

% Beispiel: Plot der Funktion
plot(x, y, 'o', xi, yi, '-');
xlabel('x');
ylabel('y');
title('Funktion aus manuell eingegebenen Datenpunkten');
legend('Datenpunkte', 'Erstellte Funktion', 'Location', 'best');
grid on;
% functions(f)

% Anzahl der Elemente in x und y (Annahme: x und y haben die gleiche Länge)
n = length(x);

% Initialisierung einer Variable für die summierten Ergebnisse
sum_results = x(2)*y(2)+ x(2)*y(3)+ x(2)*y(4)+ x(2)*y(5)
disp('Untersumme: ');
disp(sum_results);
----------------------------------------------------------------------

Obersumme mit manueller Eingabe:
% Manuelle Eingabe von x- und y-Werten
x = [0, 0.25, 0.5, 0.75, 1]; % Beispiel x-Werte
y = [1, 0.94, 0.75, 0.44, 0]; % Beispiel y-Werte
% Erstellen einer Funktion aus den manuell eingegebenen Datenpunkten
f = @(xi) interp1(x, y, xi, 'linear');
disp(f); % Zeigt den Funktionsgriff an
% Beispiel: Werte der erstellten Funktion berechnen
xi = linspace(min(x), max(x), 100); % Neue x-Werte für die Evaluation
yi = f(xi); % Evaluiere die Funktion an den neuen x-Werten

% Beispiel: Plot der Funktion
plot(x, y, 'o', xi, yi, '-');
xlabel('x');
ylabel('y');
title('Funktion aus manuell eingegebenen Datenpunkten');
legend('Datenpunkte', 'Erstellte Funktion', 'Location', 'best');
grid on;
% functions(f)

% Anzahl der Elemente in x und y (Annahme: x und y haben die gleiche Länge)
n = length(x);

% Initialisierung einer Variable für die summierten Ergebnisse
% sum_results = x(2)*y(1)+ x(2)*y(2)+ x(2)*y(3)+ x(2)*y(4)
disp('Obersumme: ');
% disp(sum_results);

sum_result=0;

for i = 1:length(y)-1
if y(i) > y(i+1)
sum_result = sum_result + y(i) * x(2);
else
sum_result = sum_result + y(i+1) * x(2);
end
end

disp(['Ergebnis der Summe: ', num2str(sum_result)]);
----------------------------------------------------------------------

Mit freundlichen Grüßen
Matthias


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.027
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 06.07.2024, 07:39     Titel:
  Antworten mit Zitat      
Hallo Matthias,

noch besser wäre es, diese Scripte (evtl. mit ein paar Zusatzinfos) und Verwendung der Code-Umgebung in der Script-Ecke einzustellen. Um die Auffindbarkeit zu erhöhen, spricht auch nichts dagegen für jedes Script einen eigenen Beitrag zu verfassen. So können die Scripte auch einzeln diskutiert werden.

Besten Dank für deinen Beitrag - ich glaube, es ist sehr selten bis gar nicht vorgekommen, dass der erste Beitrag keine Frage war! Very Happy

Gruß
Steve
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
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.