Files
maing01_06/Band2/Band2.typ
2026-03-28 12:25:05 +01:00

624 lines
20 KiB
Typst

#import "@preview/marge:0.1.0": sidenote
#import "@preview/itemize:0.2.0" as el
#import "@preview/eqalc:0.1.3": *
#import "deckblatt.typ": deckblatt
#import "abhaengigkeit.typ": abhaengigkeit
#let einruecken(abstand, inhalt) = pad(left: abstand, inhalt)
#let def-counter = counter("definition")
// Zähler bei jedem neuen Kapi#import "@preview/fletcher:0.5.8" as fletcher: diagram, node, edge
#import "@preview/marge:0.1.0": sidenote
#import "@preview/itemize:0.2.0" as el
#import "@preview/eqalc:0.1.3": *
#import "grafiken.typ": *
#import "deckblatt.typ": deckblatt
#import "abhaengigkeit.typ": abhaengigkeit
#let einruecken(abstand, inhalt) = pad(left: abstand, inhalt)
#let def-counter = counter("definition")
#let bsp-counter = counter("besipiel")
// Zähler bei jedem neuen Kapitel (Ebene 1) zurücksetzen
#let hrule = line(length: 100%)
// Zähler bei jedem neuen Kapitel zurücksetzen
#show heading.where(level: 1): it => {
it
def-counter.update(1)
bsp-counter.update(1)
}
#let definition(title: none, body, label: none) = context {
def-counter.step()
let h1-num = counter(heading).at(here()).first()
let d-num = def-counter.at(here()).first()
let full-num = [#h1-num.#d-num]
// Die Figure wird erstellt und das Label direkt angehängt
[
#figure(
block(width: 100%, align(left)[
*Definition #full-num*: #if title != none [(#title)] #body
]),
kind: "definition",
supplement: [D.],
numbering: _ => full-num,
) #label
]
}
#let beispiel(title: none, body, label: none) = context {
bsp-counter.step()
let h1-num = counter(heading).at(here()).first()
let b-num = bsp-counter.at(here()).first()
let full-num = [#h1-num.#b-num]
// Die Figure wird erstellt und das Label direkt angehängt
[
#figure(
block(width: 100%, align(left)[
#hrule
*Beispiel #full-num*: #if title != none [(#title)] #body
#hrule]),
kind: "beispiel",
supplement: [B.],
numbering: _ => full-num,
) #label
]
}
// Zähler bei jedem neuen Kapitel (Ebene 1) zurücksetzen
#show heading.where(level: 1): it => {
it
def-counter.update(1)
}
#show figure.caption: it => {
it.supplement // "Abbildung"
[ ] // Ein Leerzeichen statt des Doppelpunkts
context it.counter.display(it.numbering)
[ ] // Noch ein Leerzeichen vor dem Text
it.body // Der eigentliche Text der Caption
}
#let sn-base = sidenote
#let snr(it) = sn-base(side: right, padding: 1em)[
#set text(size: 1.3em, weight: "bold")
#it
]
#let snl(it) = sn-base(side: left, padding: 1em)[
#set text(size: 1.3em, weight: "bold")
#it
]
#set text(
font: "Lato", //Serifenlose Schrift
size: 8.5pt,
lang: "de", //Deutsche Spracheinstellungen
)
#set page(
width:162mm,
height: 230mm,
margin: 20mm,
)
#set par(
justify: true, //Blocksatz
leading: 0.55em,
)
#let tt = "PFORR \u{2219} SCHIROTZEK"
#let meinContent = [*Band 7* #sym.dot.c _Grundlagen_]
// Einfach die Funktion aufrufen
#deckblatt(bandnr: "2", autor: tt, titel: "Differential- und Integralrechnung\nfür Funktionen\nmit einer Variablen")
#pagebreak()
#set page(
width:162mm,
height: 230mm,
margin: 20mm,
)
#set par(
justify: true, //Blocksatz
leading: 0.55em,
)
#set page(
//background: grid(columns: (1mm,) * 162, rows: (1mm,) * 230, stroke: 0.1mm),
margin: (
top: 2mm,
bottom: 2mm,
x: 10mm,
),
width:162mm,
height: 230mm,
)
#heading(outlined: false)[Abhängigkeitsgraph]
/* #let mynode(pos, text1, text2, name) = {
node(pos, [#text( size:1.7em, text2) \ #text1], name:name, stroke: 1pt, corner-radius: 0mm,
height: 3.5em, width:10em)
/* Dashed separator from east to west */
//edge(label(str(name)+".west"), label(str(name)+".east"),"-", stroke: 0.2mm, dash:(1mm, 0.8mm))
} */
#abhaengigkeit
#show heading: it => {
set block(below: if it.level == 1 { 2em } else { 1em })
it
}
#counter(page).update(1)
#pagebreak()
#set text(font: "Atkinson Hyperlegible Next")
#set text(
font: "Atkinson Hyperlegible Next", //Serifenlose Schrift
size: 9pt,
lang: "de", //Deutsche Spracheinstellungen
)
#set par(
justify: true,
leading: 0.55em,
)
#set page(
//background: grid(columns: (1mm,) * 162, rows: (1mm,) * 230, stroke: 0.1mm),
margin: (
top: 18mm,
bottom: 20mm,
x: 15mm,
),
width:162mm,
height: 230mm,
)
//#set heading(numbering: "1.1.")
#set outline(indent: auto)
#show figure.where(kind: image): set figure(supplement: [Bild]) //Abbildung zu Bild
#set page(
header: context {
// 1. Kapitelstart-Check (wie zuvor)
let h1_on_page = query(heading.where(level: 1))
.any(it => it.location().page() == here().page())
if h1_on_page { return none }
let page_num = here().page()
// 2. Aktuelle Überschriften finden
let h1_current = query(heading.where(level: 1))
.filter(it => it.location().page() <= page_num).at(-1, default: none)
let h2_current = query(heading.where(level: 2))
.filter(it => it.location().page() <= page_num).at(-1, default: none)
// Hilfsfunktion: Nummer + Text zusammenfügen
let format-head(h) = {
if h != none {
// Falls die Überschrift eine Nummerierung hat, diese anzeigen
if h.numbering != none {
numbering(h.numbering, ..counter(heading).at(h.location()))
[ ] // Kleiner Abstand
}
h.body
}
}
// 3. Layout (Zahlen außen, Text innen oder wie gewünscht)
set text(size: 9pt, style: "italic") // Header dezent formatieren
if calc.even(page_num) {
// Gerade Seite: [Seite] [Kapitelnummer Text]
grid(
columns: (20pt, 1fr),
align(left)[#page_num],
align(right)[#format-head(h1_current)]
)
} else {
// Ungerade Seite: [Unterkapitelnummer Text] [Seite]
grid(
columns: (1fr, 20pt),
align(left)[#format-head(h2_current)],
align(right)[#page_num]
)
}
}
)
#show selector(<nonumber>): set heading(numbering: none)
= Vorwort <nonumber>
Dem vorliegenden Band 2 dieser Lehrbuchreihe kommt ebenso wie dem Band 1 insofern eine besondere Bedeutung innerhalb des gesamten Lehrwerkes zu, als nahezu alle anderen Bände darauf aufbauen.
Ein Teil der in diesem Buch behandelten Gegenstände ist auch im Lehrplan unserer Oberschulen enthalten. Ein Weglassen des dort bereits Dargebotenen hätte aber zu einer unzusammenhängenden Darstellung des Gebietes geführt; außerdem wäre nicht gewährleistet, daß alle Leser mit den gleichen Voraussetzungen die weiteren Bände studieren können.
Eine korrekte Anwendung mathematischer Methoden setzt die genaue Kenntnis der zugrunde liegenden Begriffe voraus. Es muß dem Leser daher dringend nahegelegt werden, sich um ein volles Verständnis der eingeführten Begriffe zu bemühen. Anhand von vielen Beispielen wird gezeigt, wie mathematische Begriffe in den Anwendungen zu interpretieren sind. Ein gründliches Studium des Textes und das selbständige Lösen der über 100 Übungsaufgaben sollte den Leser in die Lage versetzen, die spezifische Anwendbarkeit der behandelten Begriffe und Methoden in seinem Fachgebiet selbst zu erkennen.
Im Interesse einer straffen Darstellung mußte auf eine Reihe von Beweisen verzichtet werden. Alle Aussagen werden aber erläutert und - soweit möglich - geometrisch interpretiert.
Für wertvolle Hinweise danken wir vor allem dem Herausgeber, Herrn Prof. Dr. O. Greuel (Mittweida), den Gutachtern, Herrn Prof. Dr. W. Dück (Berlin) und Herrn Prof. Dr. H. Goering (Magdeburg), sowie Herrn Prof. Dr. G. Opitz (Dresden). Besonderer Dank gebührt Frau I. Kamenz für das sorgfältige Schreiben des Manuskripts. Dem Verlag sei für die gute Zusammenarbeit herzlich gedankt.
Dresden, Januar 1973 #h(1fr) E. A. Pforr
#h(1fr) W. Schirotzek
= Vorwort zur 6. Auflage <nonumber>
In dieser Auflage wurden gegenüber der vorangegangenen an zwei Stellen inhaltliche Veränderungen größeren Umfangs vorgenommen. Im Hinblick auf den Einsatz von elektronischen Rechnern, insbesondere auch von Taschenrechnern, war die Darstellung der Näherungsverfahren (Abschnitt 7.7.) zu überarbeiten. Der algorithmische Aspekt wurde stärker herausgearbeitet, auf die Formulierung von Algorithmen in einer Programmiersprache jedoch verzichtet. Außerdem wurde der Abschnitt über elliptische Integrale (9.3.5.) erweitert.
Für die wertvolle Unterstützung bei der Überarbeitung von Abschnitt 7.7. sei Herrn Dr. sc. nat. S. Dietze (Dresden) herzlich gedankt.
Dresden, Juli 1985 #h(1fr) E. A. Pforr
#h(1fr)W. Schirotzek
#pagebreak()
#outline()
#pagebreak()
#set heading(numbering: "1.1.1.")
TEIL 1: DIFFERENTIALRECHNUNG
= Problemstellung und Historisches
Zur mathematischen Beschreibung von Naturvorgängen, aber auch von technischen und ökonomischen Prozessen ist die Differentialrechnung ein unentbehrliches Hilfsmittel. Es ist daher nicht verwunderlich, daß gerade von Naturforschern entscheidende Anstöße zu ihrer Entwicklung ausgingen. Wichtige Vorarbeiten wurden im 16. und 17. Jahrhundert geleistet. Die eigentlichen Urheber dieser Disziplin sind aber Isaac Newton (1643-1727) und Gottfried Wilhelm Leibniz (1646-1716), die die Differential- (und Integral-) Rechnung etwa gleichzeitig und voneinander unabhängig zu einem Kalkül entwickelten. Newton schuf seine "Fluxionsrechnung“ bei der Ableitung des Gravitationsgesetzes aus den Keplerschen Gesetzen der Planetenbewegung. Leibniz, der auch das Symbol ${d y}/{d x}$ einführte, ging von dem Problem aus, an eine Kurve in einem vorgegebenen Kurvenpunkt die Tangente zu legen ("Tangentenproblem“). Die Arbeiten dieser genialen Forscher lösten eine außerordentlich rasche Entwicklung der Mathematik aus, die ihrerseits in hohem Maße befruchtend auf andere Wissenschaften wirkte. Entscheidenden Anteil an dieser Entwicklung hatten die Brüder Jakob und Johann Bernoulli (1654-1705 bzw. 1667-1748), auf deren Vorlesungen auch das erste, 1696 erschienene Lehrbuch der Differential- und Integralrechnung des Marquis de l'Hospital (1661-1704) basiert.
Wie wir noch sehen werden, beruht die Differentialrechnung, ebenso wie die Integralrechnung, auf dem Begriff des _Grenzwertes_. Zeitlich ging jedoch die kalkülmäßige Entwicklung der Differential- und Integralrechnung der strengen Begriffsdefinition voran. Daraus entstanden immer häufiger Schwierigkeiten und Unstimmigkeiten, die sich zunächst nicht überwinden ließen. Schließlich führte Jean le Rond d'Alembert (1717-1783) den Grenzwertbegriff in die Mathematik ein. Doch erst Bernard Bolzano (1781-1848) und Augustin Louis Cauchy (1789-1857) wendeten diesen Begriff konsequent an und stellten damit die Infinitesimalrechnung (zu der man neben der Differential- und Integralrechnung auch die Theorie der unendlichen Reihen zählt) auf ein solides Fundament.
Vor einem Aufbau der Differentialrechnung ist also der Grenzwertbegriff für Funktionen zu behandeln. Zwangsläufig wird man damit zum Begriff der _Stetigkeit_ geführt. Die eigentliche Differentialrechnung beginnt mit der Definition der _Ableitung_ einer Funktion.
Alle drei Begriffe werden zur exakten Beschreibung bestimmter Sachverhalte in den unterschiedlichsten Gebieten herangezogen. So kann man mit dem Grenzwertbegriff z. B. das Verhalten einer zeitabhängigen Größe, "nach sehr langer Zeit“ charakterisieren, mit dem Begriff der Stetigkeit bzw. Unstetigkeit den "kontinuierlichen“ bzw. "sprunghaften“ Ablauf eines Vorgangs erfassen und mit der Ableitung die "Änderungsgeschwindigkeit" eines Prożesses beschreiben.
Die mathematischen Möglichkeiten reichen jedoch über die unmittelbare Anwendbarkeit dieser Begriffe weit hinaus. So werden wir unter Verwendung der Differentialrechnung u.a. Näherungsformeln für (nichtrationale) Funktionen herleiten, Methoden zur Ermittlung von Extremwerten angeben und Verfahren zur numerischen Lösung von Gleichungen behandeln. Dem "Praktiker“ werden damit Hilfsmittel zur Verfügung gestellt, auf die er fortlaufend zurückgreifen muß.
#pagebreak()
#set math.equation(
numbering: n => numbering("(2.1)", n),
supplement: none,
)
#let numbered_eq(label_name, content) = [
#math.equation(
block: true,
content
)
#label(label_name)
]
#show figure: set figure(numbering: n => {
let chap = counter(heading).get().at(0)
[#chap.#n]
})
= Grenzwerte *$x arrow.r x_0$*
== Grenzwert einer Funktion für *$x arrow.r x_0$*
Im folgenden bedeutet "Funktion" stets "reellwertige Funktion einer reellen Variablen".
Als Vorbereitung auf den Grenzwertbegriff für Funktionen behandeln wir das
#beispiel[An die Parabel $y=x^2$ werde die Sekante durch den festen Kurvenpunkt $P_0(1/2, 1/4)$ und den variablen Kurvenpunkt $P(x, x^2)$ gelegt (s. @abb1). Der Anstieg der Sekante ist eine Funktion $f$ von $x$:
#table(
columns: (1fr, 1fr),
column-gutter: 1em,
stroke: none,
align: bottom + center,
[
#figure(
scale(x: 50%, y: 50%, reflow: true, b2_1),
caption: [],
) <abb1>
],
[
#figure(
scale(x: 50%, y: 50%, reflow: true, b2_2),
caption: [],
) <abb2>
]
)
#numbered_eq("eq21", $ f(x)=(x^2 - 1/4)/(x - 1/2) $)
Auf Grund der Anschauung wird man vermuten, daß bei "Annäherung" von $x$ an die Stelle $ 1/2$ die Sekante in eine gewisse "Grenzlage" übergeht, also auch ihr Anstieg ( @eq21 ) einen gewissen "Grenzwert“ annimmt. Betrachten wir also die Funktion $f$. An der Stelle $x=1/2$ ist $f$ nicht definiert. Für $x eq.not 1/2$ gilt
#numbered_eq("eq22", $ f(x) = ((x - 1/2) (x + 1/2)) / (x - 1/2) = x + 1/2 quad quad (x eq.not 1/2)$)
Die Bildkurve von $f$ ist in @abb2 dargestellt #footnote[In @abb2 soll der kleine Kreis um den Punkt $(1)/2, 1)$ andeuten, daß dieser Punkt nicht zur Bildkurve von $f$ gehört. Analog wird in den folgenden Beispielen verfahren.]. Die Anschauung legt jetzt etwa die folgende Formulierung nahe: „Für $x$ gegen $1/2$ strebt $f(x)$ gegen $1$."
]
Unsere Aufgabe wird es nun sein, einer solchen Formulierung einen von der Anschauung unabhängigen, wohldefinierten Sinn zu geben.
Soll allgemein das Verhalten einer Funktion $f$ bei "Annäherung" der unabhängigen Variablen $x$ an eine reelle Zahl $x_0$ untersucht werden, so ist es naheliegend, die Variable $x$ Zahlenfolgen $(x_n)$ mit folgenden Eigenschaften durchlaufen zu lassen:
// #align ohne Nummerierung
#align(left,[
#set math.equation(numbering: none)
$
& ("E 1") &quad& x_n in D(f) ^#footnote[$D(f)$ bezeichnet den Definitionsbereich von $f$.] &quad& " für alle" n &quad& (n=1,2,3,dots) \
& ("E 2") && x_n eq.not x_0 && " für alle" n \
& ("E 3") && lim_(x->n)x_n = x_0
$])
Die Eigenschaft (E 2) bedeutet, daß das Verhalten von $f$ an der Stelle $x_0$ selbst nicht in Betracht gezogen wird. Daher braucht $f$ auch nur in einer sog. _punktierten Umgebung_ von $x_0$ definiert zu sein. Das ist, mit einem $c>0$, die Menge aller $x$ mit
#v(3mm)
#figure(
{
set math.equation(numbering: none)
scale(x: 70%, y: 70%, reflow: true, b2_3)
},
caption: [],
) <abb3>
Das Verhalten von $f$ in einer punktierten Umgebung von $x_0$ wird nun durch das Verhalten der Folge der Funktionswerte $f(x_n)$ charakterisiert.
#definition(label: <D.21>)[Die #snl([@D.21]) Funktion $f$ sei (mindestens) in einer punktierten Umgebung von $x_0$ definiert. Eine Zahl $g$ heißt *Grenzwert von $f$ für $x$ gegen $x_0$*, in Zeichen
#math.equation(
block: true,
numbering: none,
$ lim_(x->x_0)f(x) = g " oder " f(x)->g " für " x->x_0 $
)
wenn für je de Folge ( $x_n$ ) mit den Eigenschaften $(E" "1)$, $(E" "2)$, $(E" "3)$ die Folge ( $f(x_n)$ ) gegen $g$ konvergiert.]
Damit ist der Begriff des Grenzwertes einer Funktion auf den Grenzwertbegriff für Zahlenfolgen zurückgeführt.
In @abb4 haben wir die ersten drei Glieder einer Folge ( $x_n$ ) und der zugehörigen Folge $f\(x_n))$ eingezeichnet.
#figure(
{
set math.equation(numbering: none)
scale(x: 70%, y: 70%, reflow: true, b2_4)
},
caption: [],
) <abb4>
#beispiel[Gesucht ist der Grenzwert der Funktion
#math.equation(
block: true,
numbering: none,
$ f(x)=(x^2-1/4)/(x-1/2) " für " x -> 1/2. $
)
Es sei $(x_n)$ eine beliebige Folge mit
#numbered_eq("eq23", $ x_n eq.not 1/2 " für alle " n " und " lim_(n->infinity)x_n = 1/2 $ )
Unter Verwendung von @eq22 und bekannten Grenzwertsätzen für Zahlenfolgen folgt dann
#numbered_eq("eq24", $ lim_(n->infinity) f(x_n)=lim_(n->infinity}(x_n+1/2)=lim_(n->infinity) x_n + lim_(n->infinity) 1/2 = 1/2 + 1/2 =1 $)
Die Gültigkeit von @eq24 wurde für eine beliebige und damit für jede Folge $\(x_n)$ mit den Eigenschaften @eq23 bewiesen. Daher gilt
/* $$
\lim _{x \rightarrow \frac{1}{2}} \frac{x^2-\frac{1}{4}}{x-\frac{1}{2}}=1,
$$
was in Einklang mit der Anschauung steht (Bild 2.2). */
]
//{n \rightarrow \infty} x_n+\lim _{n \rightarrow \infty} \frac{1}{2}=\frac{1}{2}+\frac{1}{2}=1$
/*
$$
\lim _{x \rightarrow x_0} f(x)=g \quad \text { oder } \quad f(x) \rightarrow g \quad f \ddot{u} r \quad x \rightarrow x_0,
$$
*/
/*
#import "@preview/cetz-plot:0.1.3": plot
#let intersection(plotA, plotB, style: (stroke: red + 2pt)) = {
let dataA = plotA.first().data
let dataB = plotB.first().data
let points = dataA.filter(x => x in dataB)
for ((i, point)) in points.enumerate() {
plot.add-anchor("i_" + str(i),point )
}
plotA
plotB
}
#canvas(
length: 1cm,
{
import draw: *
plot.plot(
name: "my_plot",
size: (5, 5),
axis-style: "school-book",
x-label: [$x$],
y-label: [$y$],
{
intersection(
plot.add(
style: (stroke: black + 1.5pt),
domain: (-1, 1),
x => calc.pow(x, 4) - 2 * calc.pow(x, 2) + 1,
),
plot.add(
style: (stroke: black + 1.5pt),
domain: (-1, 1),
x => -(calc.pow(x, 4) - 2 * calc.pow(x, 2) + 1),
)
)
}
)
// reference the point with {plot name}.i_{number}
line("my_plot.i_1", ((), "|-", (0,3.5)), mark: (start: ">"), name: "line")
content("line.end", [Here], anchor: "south", padding: .1)
},
)
#let intersection(plotA, plotB, style: (stroke: red + 2pt)) = {
import draw: *
let dataA = plotA.first().data
let dataB = plotB.first().data
plot.annotate({
hide({
intersections("i", line(..plotA.first().data), line(..plotB.first().data))
})
for-each-anchor("i", (name) => {
circle("i." + name, radius: 0.05, fill: red)
})
})
plotA
plotB
}
#canvas(
length: 1cm,
{
import draw: *
plot.plot(
name: "plot",
size: (10, 10),
axis-style: "school-book",
x-label: [$x$],
y-label: [$y$],
{
intersection(
plot.add(
style: (stroke: black + 1.5pt),
domain: (-1, 1),
x => calc.pow(x, 4) - 2 * calc.pow(x, 2) + 1,
),
plot.add(
style: (stroke: black + 1.5pt),
domain: (-1, 1),
x => -(calc.pow(x, 4) - 2 * calc.pow(x, 2) + 0.5),
),
)
},
)
},
)
#import "@preview/cetz:0.4.0"
#import "@preview/cetz-plot:0.1.2"
#let my-plot = cetz-plot.plot.plot.with(axis-style: "school-book")
#cetz.canvas({
import cetz.draw: *
import cetz-plot: *
set-style(
axes: (
stroke: (dash: "dotted", paint: gray),
x: (mark: (start: ">", end: ">"), padding: 1),
y: (mark: none),
tick: (stroke: gray + .5pt),
),
)
my-plot(
size: (5, 4),
y-tick-step: none,
{
plot.add(calc.sin, domain: (0, calc.pi * 2))
},
)
})
#let plot-cfg = (size: (5, 4), axis-style: "school-book")
#cetz.canvas({
import cetz.draw: *
import cetz-plot: *
plot.plot(..plot-cfg, {
plot.add(calc.sin, domain: (0, calc.pi * 2))
})
})
#import "@preview/simple-plot:0.3.0": plot
//#set page(width: auto, height: auto, margin: 0.5cm)
// Showcases: major grid only, grid-label-break, axis extension, integer ticks
#plot(
xmin: -3.1, xmax: 3.1,
ymin: -1, ymax: 9,
xlabel: $x$,
ylabel: $y$,
//show-grid: "major",
(fn: x => calc.pow(x, 2), stroke: blue + 1.5pt, label: $x^2$, label-pos: 0.7, label-side: "below-right"),
)
#plot(
xmin: -2 * calc.pi, xmax: 2 * calc.pi,
ymin: -2, ymax: 2,
width: 10, height: 5,
show-grid: "major",
xtick: (-2*calc.pi, -calc.pi, 0, calc.pi, 2*calc.pi),
xtick-labels: ($-2pi$, $-pi$, $0$, $pi$, $2pi$),
(fn: x => calc.sin(x), stroke: blue + 1.2pt),
(fn: x => calc.cos(x), stroke: red + 1.2pt),
)
#plot(
xmin: -2, xmax: 5,
ymin: 0, ymax: 32,
show-grid: true,
(fn: x => calc.pow(2, x), stroke: blue + 1.5pt, label: $2^x$),
(fn: x => calc.pow(3, x), stroke: red + 1.5pt, label: $3^x$),
)
*/