Einführung
In diesem Labor lernen wir, wie man die Ableitung einer Funktion an einem bestimmten Punkt mit der C-Programmiersprache approximiert. Wir beginnen mit der Definition einer einfachen quadratischen Funktion und verwenden dann einen kleinen Wert h, um die numerische Ableitung mithilfe der Differenzenmethode zu berechnen. Schließlich geben wir die approximierte Ableitung aus. Dieses Labor zielt darauf ab, ein praktisches Verständnis der Ableitungsapproximation zu vermitteln, einem grundlegenden Konzept in der Analysis und der analytischen Geometrie.
Definition der Funktion f(x)
In diesem Schritt definieren wir eine mathematische Funktion f(x) in C, die zur Demonstration der Ableitungsapproximation verwendet wird. Wir erstellen eine einfache quadratische Funktion, um das Konzept zu veranschaulichen.
Erstellen Sie zunächst eine neue C-Datei im Verzeichnis ~/project:
cd ~/project
nano derivative_approximation.c
Schreiben Sie nun den Anfangscode für unsere Funktion:
#include <stdio.h>
#include <math.h>
// Definition einer quadratischen Funktion f(x) = x^2 + 2x + 1
double f(double x) {
return x * x + 2 * x + 1;
}
int main() {
double x = 2.0; // Punkt, an dem wir die Ableitung approximieren
printf("Funktion f(x) = x^2 + 2x + 1\n");
printf("An der Stelle x = %.2f: f(x) = %.2f\n", x, f(x));
return 0;
}
Kompilieren und führen Sie den Code aus, um unsere Funktion zu überprüfen:
gcc derivative_approximation.c -o derivative_approximation -lm
./derivative_approximation
Beispielausgabe:
Funktion f(x) = x^2 + 2x + 1
An der Stelle x = 2.00: f(x) = 9.00
Codeerklärung
- Wir definieren eine quadratische Funktion
f(x) = x^2 + 2x + 1 - Die Funktion nimmt einen
double-Eingabewertxentgegen und gibt einendouble-Wert zurück. - In der Funktion
main()zeigen wir die Auswertung der Funktion an der Stelle x = 2. - Wir verwenden
printf(), um die Funktionsdetails und ihren Wert anzuzeigen.
Verwendung eines kleinen h und Berechnung von (f(x+h)-f(x))/h
In diesem Schritt modifizieren wir unseren vorherigen Code, um die Ableitung mithilfe der Differenzenmethode zu approximieren. Wir führen einen kleinen Wert h ein, um die numerische Ableitung zu berechnen.
Aktualisieren Sie die Datei derivative_approximation.c:
nano ~/project/derivative_approximation.c
Ersetzen Sie die vorherige main()-Funktion durch folgenden Code:
#include <stdio.h>
#include <math.h>
// Quadratische Funktion f(x) = x^2 + 2x + 1
double f(double x) {
return x * x + 2 * x + 1;
}
// Näherung der Ableitung mit der Differenzenmethode
double approximate_derivative(double x, double h) {
return (f(x + h) - f(x)) / h;
}
int main() {
double x = 2.0; // Punkt der Ableitungsapproximation
double h = 0.0001; // Kleiner Wert für die Differenzenmethode
double approx_derivative = approximate_derivative(x, h);
printf("Funktion: f(x) = x^2 + 2x + 1\n");
printf("Approximation der Ableitung an der Stelle x = %.2f\n", x);
printf("Schrittweite h = %.6f\n", h);
printf("Approximierte Ableitung: %.4f\n", approx_derivative);
return 0;
}
Kompilieren und ausführen des aktualisierten Codes:
gcc derivative_approximation.c -o derivative_approximation -lm
./derivative_approximation
Beispielausgabe:
Funktion: f(x) = x^2 + 2x + 1
Approximation der Ableitung an der Stelle x = 2.00
Schrittweite h = 0.000100
Approximierte Ableitung: 5.0001
Codeerklärung
- Wir führen eine neue Funktion
approximate_derivative()ein, die die Ableitung mit der Differenzenmethode berechnet. hist ein kleiner Wert (0.0001), der hilft, die momentane Änderungsrate zu approximieren.- Die Formel
(f(x+h) - f(x)) / happroximiert die Ableitung an der Stelle x. - Wir geben den approximierten Ableitungswert aus.
Ausgabe der Näherungsableitung
In diesem Schritt erweitern wir unser Programm zur Ableitungsapproximation, um die numerische Näherung mit der analytischen Ableitung zu vergleichen und die Ergebnisse informativer darzustellen.
Aktualisieren Sie die Datei derivative_approximation.c:
nano ~/project/derivative_approximation.c
Ersetzen Sie den vorherigen Code durch folgenden:
#include <stdio.h>
#include <math.h>
// Quadratische Funktion f(x) = x^2 + 2x + 1
double f(double x) {
return x * x + 2 * x + 1;
}
// Analytische Ableitung von f(x)
double analytical_derivative(double x) {
return 2 * x + 2;
}
// Näherung der Ableitung mit der Differenzenmethode
double approximate_derivative(double x, double h) {
return (f(x + h) - f(x)) / h;
}
int main() {
double x = 2.0; // Punkt der Ableitungsapproximation
double h_values[] = {1e-1, 1e-2, 1e-3, 1e-4, 1e-5};
int num_h = sizeof(h_values) / sizeof(h_values[0]);
double true_derivative = analytical_derivative(x);
printf("Funktion: f(x) = x^2 + 2x + 1\n");
printf("Ableitungspunkt: x = %.2f\n", x);
printf("Analytische Ableitung: %.4f\n\n", true_derivative);
printf("Ergebnisse der Ableitungsapproximation:\n");
printf("-----------------------------------\n");
printf("Schrittweite (h) Näherungsableitung Fehler\n");
printf("-----------------------------------\n");
for (int i = 0; i < num_h; i++) {
double h = h_values[i];
double approx_derivative = approximate_derivative(x, h);
double error = fabs(true_derivative - approx_derivative);
printf("%.1e %.4f %.6f\n",
h, approx_derivative, error);
}
return 0;
}
Kompilieren und ausführen des aktualisierten Codes:
gcc derivative_approximation.c -o derivative_approximation -lm
./derivative_approximation
Beispielausgabe:
Funktion: f(x) = x^2 + 2x + 1
Ableitungspunkt: x = 2.00
Analytische Ableitung: 6.0000
Ergebnisse der Ableitungsapproximation:
-----------------------------------
Schrittweite (h) Näherungsableitung Fehler
-----------------------------------
1.0e-01 6.2000 0.200000
1.0e-02 6.0200 0.020000
1.0e-03 6.0020 0.002000
1.0e-04 6.0002 0.000200
1.0e-05 6.0000 0.000020
Codeerklärung
- Hinzugefügte Funktion
analytical_derivative()zur Berechnung der exakten Ableitung. - Erstellte ein Array mit verschiedenen Schrittweiten
h, um die Konvergenz zu demonstrieren. - Verwendung einer Schleife zum Drucken der Näherungen mit verschiedenen Schrittweiten.
- Berechnung und Anzeige des Fehlers zwischen analytischer und numerischer Ableitung.
- Demonstriert, wie kleinere
h-Werte zu genaueren Näherungen führen.
Zusammenfassung
In diesem Labor haben wir zunächst eine quadratische Funktion f(x) = x^2 + 2x + 1 in der C-Programmierung definiert. Anschließend haben wir einen kleinen Wert h eingeführt, um die Ableitung der Funktion mithilfe der Differenzenmethode, (f(x+h)-f(x))/h, zu approximieren. Schließlich haben wir den approximierten Ableitungswert ausgegeben.



