|
|
Hilfestellung: Extrema, Integrale, Ober- und Untersummen |
|
MatthiasLabi |
Gast
|
![](templates/vSpiralFull/images/spacer.gif) |
Beiträge: ---
|
![](templates/vSpiralFull/images/spacer.gif) |
|
![](templates/vSpiralFull/images/spacer.gif) |
Anmeldedatum: ---
|
![](templates/vSpiralFull/images/spacer.gif) |
|
![](templates/vSpiralFull/images/spacer.gif) |
Wohnort: ---
|
![](templates/vSpiralFull/images/spacer.gif) |
|
![](templates/vSpiralFull/images/spacer.gif) |
Version: ---
|
![](templates/vSpiralFull/images/spacer.gif) |
|
|
![](templates/vSpiralFull/images/_postbit_left_divide.gif) |
|
Verfasst am: 02.07.2024, 14:32
Titel: Hilfestellung: Extrema, Integrale, Ober- und Untersummen
|
![](templates/vSpiralFull/images/_postbit_header_right_right.gif) |
|
![](templates/vSpiralFull/images/_postbit_subheader_divide.gif) |
|
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](images/rankst5.gif)
Ehrenmitglied
|
![](templates/vSpiralFull/images/spacer.gif) |
Beiträge: 2.027
|
![](templates/vSpiralFull/images/spacer.gif) |
|
![](templates/vSpiralFull/images/spacer.gif) |
Anmeldedatum: 03.09.07
|
![](templates/vSpiralFull/images/spacer.gif) |
|
![](templates/vSpiralFull/images/spacer.gif) |
Wohnort: Wien
|
![](templates/vSpiralFull/images/spacer.gif) |
|
![](templates/vSpiralFull/images/spacer.gif) |
Version: R2024a
|
![](templates/vSpiralFull/images/spacer.gif) |
|
|
![](templates/vSpiralFull/images/_postbit_left_divide.gif) |
|
Verfasst am: 06.07.2024, 07:39
Titel:
|
![](templates/vSpiralFull/images/_postbit_header_right_right.gif) |
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!
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?
|
|
|
|
|
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.
|
|