<?xml version="1.0" encoding="utf-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> <id>https://www.yunseo.kim/de/</id><title>Yunseo Kim's Study Notes</title><subtitle>Yunseo Kim's personal blog on mathematics, physics, and engineering, now expanding to business, AI agent ecosystems, software supply chains, and digital trust.</subtitle> <updated>2026-04-11T20:15:04+09:00</updated> <author> <name>Yunseo Kim</name> <uri>https://www.yunseo.kim/de/</uri> </author><link rel="self" type="application/atom+xml" href="https://www.yunseo.kim/de/feed.xml"/><link rel="alternate" type="text/html" hreflang="en" href="https://www.yunseo.kim/" /><link rel="alternate" type="text/html" hreflang="ko" href="https://www.yunseo.kim/ko/" /><link rel="alternate" type="text/html" hreflang="ja" href="https://www.yunseo.kim/ja/" /><link rel="alternate" type="text/html" hreflang="zh-TW" href="https://www.yunseo.kim/zh-TW/" /><link rel="alternate" type="text/html" hreflang="es" href="https://www.yunseo.kim/es/" /><link rel="alternate" type="text/html" hreflang="pt-BR" href="https://www.yunseo.kim/pt-BR/" /><link rel="alternate" type="text/html" hreflang="fr" href="https://www.yunseo.kim/fr/" /><link rel="alternate" type="text/html" hreflang="de" href="https://www.yunseo.kim/de/" /><link rel="alternate" type="text/html" hreflang="pl" href="https://www.yunseo.kim/pl/" /><link rel="alternate" type="text/html" hreflang="cs" href="https://www.yunseo.kim/cs/" /><link rel="alternate" type="text/html" hreflang="sw" href="https://www.yunseo.kim/sw/" /><link rel="alternate" type="text/html" hreflang="am" href="https://www.yunseo.kim/am/" /> <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator> <rights> © 2026 Yunseo Kim </rights> <icon>/assets/img/favicons/favicon.ico</icon> <logo>/assets/img/favicons/favicon-96x96.png</logo> <entry><title xml:lang="de">Anmerkungen zur koreanischen Übersetzung des Contributor Covenant 3.0 Code of Conduct</title><link href="https://www.yunseo.kim/de/posts/notes-on-the-korean-translation-of-the-contributor-covenant-3.0-code-of-conduct/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/notes-on-the-korean-translation-of-the-contributor-covenant-3.0-code-of-conduct/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/notes-on-the-korean-translation-of-the-contributor-covenant-3.0-code-of-conduct/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/notes-on-the-korean-translation-of-the-contributor-covenant-3.0-code-of-conduct/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/notes-on-the-korean-translation-of-the-contributor-covenant-3.0-code-of-conduct/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/notes-on-the-korean-translation-of-the-contributor-covenant-3.0-code-of-conduct/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/notes-on-the-korean-translation-of-the-contributor-covenant-3.0-code-of-conduct/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/notes-on-the-korean-translation-of-the-contributor-covenant-3.0-code-of-conduct/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/notes-on-the-korean-translation-of-the-contributor-covenant-3.0-code-of-conduct/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/notes-on-the-korean-translation-of-the-contributor-covenant-3.0-code-of-conduct/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/notes-on-the-korean-translation-of-the-contributor-covenant-3.0-code-of-conduct/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/notes-on-the-korean-translation-of-the-contributor-covenant-3.0-code-of-conduct/" rel="alternate" type="text/html" hreflang="am" /><published>2026-03-20T00:00:00+09:00</published> <updated>2026-03-22T23:34:27+09:00</updated> <id>https://www.yunseo.kim/de/posts/notes-on-the-korean-translation-of-the-contributor-covenant-3.0-code-of-conduct/</id> <author> <name>Yunseo Kim</name> </author> <category term="Dev" /> <category term="Dev Culture" /> <summary xml:lang="de">Während ich die koreanische Übersetzung der im Juli 12025 veröffentlichten Version 3.0 des Contributor Covenant erarbeitet habe, habe ich hier die Überlegungen aus diesem Prozess, die Gründe für einige Formulierungen und einige persönliche Eindrücke festgehalten.</summary> <content type="html" xml:lang="de"> <![CDATA[<p>Während ich die koreanische Übersetzung der im Juli 12025 veröffentlichten Version 3.0 des Contributor Covenant erarbeitet habe, habe ich hier die Überlegungen aus diesem Prozess, die Gründe für einige Formulierungen und einige persönliche Eindrücke festgehalten.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><blockquote class="prompt-info"><p>Offizieller PR zum Hinzufügen der koreanischen Übersetzung des Contributor Covenant 3.0 Code of Conduct: <a href="https://github.com/EthicalSource/contributor_covenant/pull/1590">feat(i18n): add Korean translation for Contributor Covenant 3.0 (#1590)</a></p></blockquote><h2 id="contributor-covenant">Contributor Covenant</h2><p>Das <a href="https://www.contributor-covenant.org/">Contributor Covenant</a> wurde 12014 erstmals von <strong>Coraline Ada Ehmke</strong> verfasst und veröffentlicht. Seit 12021 liegt es bei <strong>OES (Organization for Ethical Source)</strong> und wird dort von den Mitwirkenden gepflegt und weiterentwickelt. Heute ist es der weltweit am häufigsten verwendete Verhaltenskodex für digitale Communities. Sein Ziel ist es, implizite Werte, die Communities miteinander teilen können, ausdrücklich zu machen und so eine Community-Kultur zu fördern, in der sich alle willkommen und sicher fühlen können.</p><p>Früher wurden in Entwickler-Communitys unter dem Deckmantel der Meritokratie raue Umgangsformen und diskriminierende Äußerungen oft stillschweigend geduldet. Das Contributor Covenant war ein wichtiger Anstoß dafür, dass sich Entwickler-Communitys durch Selbstkorrektur zu einer menschenzentrierten Kultur wandelten, die vielfältige Menschen einschließt und gegenseitigen Respekt sowie konstruktives Feedback in den Mittelpunkt stellt. Heute haben Hunderttausende Open-Source-Projekte weltweit dieses Versprechen übernommen, darunter Creative Commons, Linux, Apple, Mastodon, Microsoft, WordPress und IBM.</p><h2 id="was-sich-in-version-30-des-contributor-covenant-geändert-hat">Was sich in Version 3.0 des Contributor Covenant geändert hat</h2><p>OES begann 12024 anlässlich des 10-jährigen Jubiläums des Contributor Covenant mit der Arbeit daran. Die im Juli 12025 veröffentlichte Version 3.0 bringt nach rund einem Jahr Arbeit gegenüber der Vorgängerversion 2.1 die folgenden wesentlichen Änderungen mit sich.</p><ul><li>Referenzen:<ul><li><a href="https://ethicalsource.dev/blog/contributor-covenant-3/">https://ethicalsource.dev/blog/contributor-covenant-3/</a><li><a href="https://www.contributor-covenant.org/faq/">https://www.contributor-covenant.org/faq/</a></ul></ul><h3 id="mehr-flexibilität">Mehr Flexibilität</h3><ul><li>Im Unterschied zu früheren Versionen, die auf Open-Source-Communitys optimiert waren, wurde diese Fassung so gestaltet, dass sie auch auf verschiedenste Online- und Offline-Communitys außerhalb der Softwareentwicklung anwendbar ist<ul><li>z. B. wird statt <strong>„Projektverantwortliche (Project Maintainers)“</strong> der neutralere und inklusivere Begriff <strong>„Community-Moderator*innen (Community Moderators)“</strong> verwendet</ul><li>US-zentrierte idiomatische Wendungen wurden entfernt und durch klarere Formulierungen ersetzt, die auch Sprecher*innen anderer Kulturkreise leichter verstehen und übersetzen können</ul><h3 id="paradigmenwechsel-von-retributiver-zu-restaurativer-gerechtigkeit">Paradigmenwechsel von retributiver zu restaurativer Gerechtigkeit</h3><p>Einer der größten Unterschiede von Contributor Covenant 3.0 gegenüber den früheren Versionen ist der Paradigmenwechsel von <strong>retributiver Gerechtigkeit (Retributive Justice)</strong> zu <strong>restaurativer Gerechtigkeit (Restorative Justice)</strong>. Der Abschnitt mit den <strong>Durchsetzungsrichtlinien (enforcement guidelines)</strong>, der bisher vor allem auf stufenweise Sanktionen fokussiert war, wurde in den Abschnitt <strong>„Schadensbearbeitung und Wiedergutmachung (Addressing and Repairing Harm)“</strong> umgestaltet.</p><ul><li>Die Bezeichnungen einiger Reaktionsstufen wurden geändert<li>Zusätzlich zu den bisherigen Punkten zu Konsequenzen (Consequence) wurden Richtlinien zur Wiedergutmachung (Repair) ergänzt. Es geht also nicht mehr nur um die primäre Sanktionierung der verursachenden Person, sondern auch darum, wie zerstörte Beziehungen zwischen den Beteiligten wiederhergestellt, Konflikte beigelegt und Fehler korrigiert werden können<li>Statt ausschließlich Durchsetzung und Bestrafung durch Dritte zu betonen, verschiebt sich der Charakter des Dokuments in Richtung freiwilliger Reflexion, Versöhnung und Verbesserung, sofern dies möglich ist, sowie hin zur Frage, wie die Community nach einem Vorfall wieder gesund werden kann</ul><h3 id="klarere-richtlinien">Klarere Richtlinien</h3><ul><li>Der Abschnitt <strong>Standards (Our Standards)</strong> wurde klar in die beiden Abschnitte <strong>erwünschte Verhaltensweisen (Encouraged Behaviors)</strong> und <strong>eingeschränkte Verhaltensweisen (Restricted Behaviors)</strong> aufgeteilt, was die Lesbarkeit verbessert<li>Insbesondere im Abschnitt <strong>eingeschränkte Verhaltensweisen (Restricted Behaviors)</strong> wird ausdrücklich nicht nur die tatsächliche Ausführung problematischer Handlungen untersagt, sondern auch deren Androhung oder Förderung, wodurch die präventive Wirkung gestärkt wird<blockquote><p>We agree to restrict the following behaviors in our community. Instances, threats, and promotion of these behaviors are violations of this Code of Conduct.</p></blockquote><li>Außerdem wurde unter <strong>eingeschränkte Verhaltensweisen (Restricted Behaviors)</strong> ein neuer Unterabschnitt <strong>weitere Einschränkungen (Other Restrictions)</strong> hinzugefügt, in dem zusätzliche Beschränkungen zu irreführender Identität (Misleading identity), fehlender Quellenangabe (Failing to credit sources), Werbematerialien (Promotional materials) und unverantwortlicher Kommunikation (Irresponsible communication) ausdrücklich festgehalten werden<li>Unter Einbeziehung von Umfrageantworten aus Communities, die das Contributor Covenant tatsächlich übernommen und angewendet haben, wird klargestellt, dass die stufenweise Durchsetzung (enforcement ladder) nur eine Grundlage darstellt und den Ermessensspielraum von Community-Administrator*innen nicht einschränkt<blockquote><p>This enforcement ladder is intended as a guideline. It does not limit the ability of Community Managers to use their discretion and judgment, in keeping with the best interests of our community.</p></blockquote></ul><h3 id="stärkung-der-bestimmungen-zu-gleichheitsrechten-und-diskriminierungsverbot">Stärkung der Bestimmungen zu Gleichheitsrechten und Diskriminierungsverbot</h3><p>Im ersten Abschnitt, <strong>„Our Pledge“</strong>, wurden die Bestimmungen zu Gleichheitsrechten und Diskriminierungsverbot erweitert und konkretisiert: Einige Begriffe wurden durch umfassendere Ausdrücke ersetzt, und mehrere moderne Diversitätswerte wurden zusätzlich ausdrücklich aufgenommen.</p><ul><li>Die beiden Ausdrücke „body size“ und „personal appearance“ wurden durch den umfassenderen Begriff „physical characteristics“ ersetzt<li>„religion“ wurde durch das umfassendere „philosophy or religion“ ersetzt<li>„nationality“ wurde durch das umfassendere „national or social origin“ ersetzt<li>„neurodiversity“ wurde neu ausdrücklich aufgenommen<li>„language“ wurde neu ausdrücklich aufgenommen, um nichtenglischsprachige Sprecher*innen stärker zu berücksichtigen<li>Im Zusammenhang mit Geschlechtergerechtigkeit und Diversität wurden insgesamt mehrere Formulierungen überarbeitet<blockquote><p><strong>v2.1</strong><br /> sex characteristics, gender identity and expression, or sexual identity and orientation</p><p><strong>v3.0</strong><br /> sex or gender, gender identity or expression, sexual orientation</p></blockquote></ul><h2 id="aspekte-die-ich-bei-dieser-koreanischen-übersetzung-berücksichtigt-habe">Aspekte, die ich bei dieser koreanischen Übersetzung berücksichtigt habe</h2><h3 id="allgemeine-überlegungen">Allgemeine Überlegungen</h3><h4 id="verwendung-des-höflichkeitsstils">Verwendung des Höflichkeitsstils</h4><p>Wenn man ein Versprechen und einen Verhaltenskodex auf Koreanisch verfasst, hängt die Entscheidung zwischen Höflichkeitsstil und deklarativem Stil von der Zielrichtung, der Organisationskultur und der Haltung ab, die vermittelt werden soll. Früher dominierte häufig der deklarative Stil, der Autorität und Regelbindung betont. In jüngerer Zeit wird jedoch auch oft der Höflichkeitsstil verwendet, um eine horizontale und respektvolle Kultur hervorzuheben.</p><table><thead><tr><th>Stil<th>경어체(~합니다, ~하겠습니다)<th>평어체(~한다)<tbody><tr><td>Tonfall<td>gegenseitiger Respekt,<br /> freiwilliges Versprechen,<br /> Empfehlung<td>Entschiedenheit,<br /> rechtliche Wirkung,<br /> objektive Regelung<tr><td>Organisationskultur<td>flexible und horizontale Kultur<td>vergleichsweise strengere Kultur<tr><td>Typische<br /> Einsatzsituationen<td>Verhaltenskodizes,<br /> ethische Erklärungen<td>Sicherheitsverpflichtungen,<br /> Arbeitsverträge,<br /> rechtliche Disziplinarvorschriften<tr><td>Psychologischer Effekt<td>„Wir halten das gemeinsam ein“<br /> (freiwillige Zustimmung)<td>„Das muss eingehalten werden“<br /> (stärker bindender Charakter)</table><p>Wenn man sich die <a href="https://github.com/EthicalSource/contributor_covenant/pull/895#pullrequestreview-563210153">damalige Diskussion</a> ansieht, scheint man bei der koreanischen Übersetzung der Version 2.0 zunächst ebenfalls den Höflichkeitsstil erwogen und den Text dann <a href="https://github.com/EthicalSource/contributor_covenant/commit/3971299d81149b3fc0ce603a5dd26400509f090f">in den deklarativen Stil umgeschrieben</a> zu haben. Ich respektiere diese frühere Diskussion und ihr Ergebnis. Trotzdem habe ich mich diesmal erneut für eine Übersetzung im Höflichkeitsstil entschieden, und zwar aus den folgenden Gründen.</p><p>Die heutige Kultur von Open-Source-Communitys ist grundsätzlich eher weit entfernt von Zwang, Strenge und zwingender Durchsetzung; vielmehr orientiert sie sich an gegenseitigem Respekt sowie freiwilliger Teilnahme und Mitwirkung. <a href="#paradigmenwechsel-von-retributiver-zu-restaurativer-gerechtigkeit">Gerade in Contributor Covenant 3.0 wird diese Philosophie durchgängig besonders stark reflektiert</a>. Wenn man die Kernwerte und die Philosophie berücksichtigt, die der Originaltext in diesem Versionsupdate vermitteln will, ebenso wie die Kultur und die Entwicklungen in den Communities, erschien mir der Höflichkeitsstil für die koreanische Übersetzung angemessen. Als Referenzen habe ich ebenso die Fälle der <a href="https://rust-kr.org/pages/code-of-conduct/">koreanischen Rust-Nutzergruppe</a>, des <a href="https://pythonkr.github.io/pycon-code-of-conduct/ko/coc/a_intent_and_purpose.html">Verhaltenskodex von PyCon Korea (PyCon KR CoC)</a> und der <a href="https://kubernetes.io/ko/community/code-of-conduct/">koreanischen Fassung des Verhaltenskodex der Kubernetes-Community</a> herangezogen.</p><h4 id="vermeidung-unnötiger-passivkonstruktionen">Vermeidung unnötiger Passivkonstruktionen</h4><p>Anders als im Englischen, das häufig das Passiv verwendet, bevorzugt das Koreanische grundsätzlich aktive Formulierungen gegenüber passiven. Wenn man Passivformen aus dem englischen Original mechanisch ebenfalls als Passiv ins Koreanische überträgt, entsteht ein unnatürlicher Text, dem man die Übersetzung anmerkt und der grammatisch ebenfalls unpassend wirkt.</p><p>Natürlich gibt es auch im Koreanischen Fälle, in denen Passivformen verwendet werden. Soweit dadurch die Bedeutung des Textes nicht verzerrt wird, wollte ich jedoch möglichst selbst dort aktive Formulierungen verwenden, wo im Original das Passiv steht.</p><p><strong>z. B.</strong></p><ul><li>“Encouraged Behaviors”: “장려<strong>되는</strong> 행동”(X), “장려<strong>하는</strong> 행동”(O)<li>“enforcement actions are carried out in private”: “집행 조치는 비공개로 진행<strong>된다</strong>“(X), “집행 조치는 비공개로 진행<strong>한다</strong>“(O)<li>“its own established enforcement process”: “자체적으로 확립<strong>된</strong> 집행 절차”(X), “자체적으로 확립<strong>한</strong> 집행 절차”(O)<li>“the following enforcement ladder may be used”: “다음의 단계적 집행 기준<strong>이 사용될</strong> 수 있습니다”(X), “다음의 단계적 집행 기준<strong>을 사용할</strong> 수 있습니다”(O)<li>“are provided at”: “에서 제공<strong>됩니다</strong>“(X), “에서 제공<strong>합니다</strong>“(O)</ul><h4 id="nicht-die-lexikalische-bedeutung-sondern-der-kontext-eines-wortes-im-text">Nicht die lexikalische Bedeutung, sondern der Kontext eines Wortes im Text</h4><p>Da Englisch und Koreanisch sprachlich recht weit voneinander entfernt sind, entspricht ein Wort natürlich nicht einfach eins zu eins einem Wort der jeweils anderen Sprache. Auch wenn im Wörterbuch dieselbe Bedeutung angegeben ist, ist das oft nicht der Fall.</p><p>So wird etwa “intimate” in der folgenden Passage dem Kontext nach nicht im Sinn von “친밀한”, sondern im Sinn von “성적인” verwendet.</p><blockquote><p><strong>Sexualization.</strong> Behaving in a way that would generally be considered inappropriately <u>intimate</u> in the context or purpose of the community.</p></blockquote><p>Außerdem klingt es in der folgenden Passage unnatürlich, “process” rein wörterbuchhaft als “처리할” zu übersetzen. Im Kontext des Textes ist es hier angemessener, “process” mit “추스를” wiederzugeben.</p><blockquote><p>… give the community members involved time to <u>process</u> the incident.</p></blockquote><blockquote class="prompt-tip"><p>(<a href="https://stdict.korean.go.kr/">표준국어대사전</a> 표제어 중)</p><p><strong>추스르다「3」</strong>: 일이나 생각 따위를 수습하여 처리하다.</p></blockquote><p>Andererseits gibt es auch Lehnwörter, für die sich kein wirklich passender genuin koreanischer Ausdruck finden lässt. Beim Wort “community” könnte man es zwar mit etwas wie “공동체” wiedergeben, doch nach meiner Einschätzung unterscheidet sich der Klang des englischen Wortes “community” recht deutlich vom Klang des koreanischen Wortes “공동체”. Grundsätzlich habe ich versucht, Lehnwörter möglichst in genuin koreanische Ausdrücke zu übertragen; wenn ich aber den Eindruck hatte, dass dadurch Bedeutung oder Nuance des Originals eher verzerrt würden, habe ich sie wie bei “커뮤니티” beibehalten.</p><p>Unter Berücksichtigung all dieser Punkte wollte ich also keine bloß lexikalische, mechanische Ersetzung einzelner Wörter vornehmen, sondern jeweils die koreanische Formulierung wählen, die der Bedeutung und dem Kontext des Originals am nächsten kommt.</p><h4 id="daneben-auch-die-einhaltung-koreanischer-sprach--und-rechtschreibnormen">Daneben auch die Einhaltung koreanischer Sprach- und Rechtschreibnormen</h4><p>Ich habe mich bemüht, die Normen des Koreanischen, etwa die Rechtschreibregeln und die Standardsprachregelung, möglichst genau einzuhalten.</p><h3 id="abschnitt-서약our-pledge">Abschnitt “서약(Our Pledge)”</h3><h4 id="unterüberschrift">Unterüberschrift</h4><p>Wörtlich übersetzt würde “Our Pledge” zu “우리의 맹세”. Da es jedoch in der <a href="https://www.contributor-covenant.org/ko/version/2/1/code_of_conduct/">bestehenden koreanischen Übersetzung</a> bereits mit “서약” wiedergegeben wurde und dies unter dem Gesichtspunkt der Natürlichkeit des Textes für ausreichend vertretbar hielt, habe ich es auch diesmal bei “서약” belassen.</p><h4 id="zur-übersetzung-des-begriffs-caste">Zur Übersetzung des Begriffs “caste”</h4><p>In der <a href="https://www.contributor-covenant.org/ko/version/2/1/code_of_conduct/">bestehenden koreanischen Übersetzung der Version 2.1</a> wurde dies schlicht als “카스트 제도” übersetzt. Da das Wort caste als fachsprachliches Gattungsnomen auch <u>stark verfestigte Status- und Schichtordnungssysteme in verschiedenen Regionen der Welt</u> bezeichnen kann, kann man das nicht unbedingt als Fehlübersetzung bezeichnen. Wenn diese Hintergrundinformationen aber nicht gegeben sind, verstehen die meisten im koreanischen Alltagsgebrauch unter “카스트 제도” die „für indische Hindus typische Ständeordnung, die etwa aus dem Manusmriti hervorgegangen ist“. Unter Berücksichtigung des Kontexts des Originals habe ich es deshalb mit “계급” übersetzt. Es ist plausibler, “caste” hier nicht auf ein bestimmtes Land (Indien) oder eine bestimmte Religion (Hinduismus) zu beschränken, sondern als Bezeichnung für alle Arten und Formen von Statussystemen und die daraus hervorgehenden Klassen zu verstehen.</p><h4 id="verwendung-von-성-statt-성별">Verwendung von “성” statt “성별”</h4><blockquote><p>We are committed to fostering an environment that respects and promotes the dignity, rights, and contributions of all individuals, regardless of … sex or gender, gender identity or expression, sexual orientation … or other status.</p></blockquote><p>Wenn man die Werte und den Kontext berücksichtigt, die das Original vermitteln will, dann sind “sex”, “gender” und “sexual orientation” hier sicher nicht im Sinne einer Unterscheidung nach einem binären Mann-Frau-Schema gemeint. Deshalb habe ich statt “성별”, das unterschwellig genau diese binäre Unterscheidung mittransportiert, das Wort “성” verwendet und die begrifflichen Unterschiede zwischen sex, gender und sexuality aus geistes- und sozialwissenschaftlicher Sicht möglichst zu bewahren versucht, sodass ich es wie folgt übersetzt habe.</p><blockquote><p>… 생물학적 또는 사회적 성, 성 정체성 또는 성 표현, 성적 지향…</p></blockquote><h3 id="abschnitt-장려하는-행동encouraged-behaviors-und-제한하는-행동restricted-behaviors">Abschnitt “장려하는 행동(Encouraged Behaviors)” und “제한하는 행동(Restricted Behaviors)”</h3><h4 id="weglassen-des-doppelpunkts-">Weglassen des Doppelpunkts (<code class="language-plaintext highlighter-rouge">:</code>)</h4><blockquote><p>With these considerations in mind, we agree to behave mindfully toward each other and act in ways that center our shared values, including:</p><ol><li>Respecting the <strong>purpose of our community</strong>, our activities, and our ways of gathering.<li>Engaging <strong>kindly and honestly</strong> with others. …</ol></blockquote><p>Im englischen Original ist es üblich, wie oben nach einem abgeschlossenen Satz mit einem Doppelpunkt eine Liste von Beispielen anzuschließen. In den Normen des modernen Koreanischen ist die Verwendung des Doppelpunkts jedoch im Wesentlichen auf stichpunktartige Formulierungen beschränkt, etwa wenn nach einer Überschrift die einzelnen Punkte oder Erläuterungen folgen. Deshalb wirkt eine Form wie die folgende, sofern der gesamte Text nicht ohnehin stichpunktartig geschrieben ist, sehr unnatürlich und vermittelt leicht den Eindruck einer groben maschinellen Übersetzung oder einer hastig mit einem LLM erzeugten Fassung. Persönlich war das auch einer der Punkte, die ich an der <a href="https://www.contributor-covenant.org/ko/version/2/1/code_of_conduct/">koreanischen Übersetzung von Version 2.1</a> sehr bedauerlich fand.</p><blockquote><p>이러한 점을 유념하며, 우리는 서로를 사려 깊게 대하고 우리가 공유하는 다음 가치를 중심으로 행동할 것에 동의합니다:</p><ol><li>우리 <strong>공동체의 목적</strong>, 활동 및 모임 방식을 존중합니다.<li><strong>친절하고 정직하게</strong> 다른 사람들과 소통합니다. …</ol></blockquote><p>Daher habe ich die Stellen mit Doppelpunkt nicht einfach als 쌍점 ins Koreanische übertragen, sondern sie der koreanischen Schreibweise entsprechend in Sätze mit Punkt(<code class="language-plaintext highlighter-rouge">.</code>) umgeformt, damit der Text natürlich wirkt.</p><h4 id="zur-übersetzung-der-formulierung-that-would-generally-be-considered-inappropriately">Zur Übersetzung der Formulierung “that would generally be considered inappropriately”</h4><p>Hier habe ich “generally” nicht wörtlich als “일반적으로”, sondern dem Kontext nach natürlicher als “대부분의 사람들에게” übersetzt.</p><blockquote><p>…<u>대부분의 사람들이</u> 부적절하다고 간주할 만한…</p></blockquote><h3 id="zur-übersetzung-der-formulierung-act-on">Zur Übersetzung der Formulierung “act on”</h3><p>Zunächst habe ich überlegt, “act on” schlicht als “이용하다” zu übersetzen. Im Kontext geht es jedoch eher darum, <em>jegliche</em> Handlungen zu untersagen, die — unabhängig von der Absicht — auf persönlichen Identitäts- oder Privatinformationen anderer beruhen. Wenn man das nur mit “이용하다” wiedergibt, schränkt das die Bedeutung zu stark ein. Daher habe ich es wie folgt übersetzt.</p><blockquote><p><strong>비밀 침해.</strong> 타인의 신상 관련 정보 또는 개인적인 정보를 당사자의 허락 없이 공유하거나, 그 정보<u>를 바탕으로 행하는</u> 모든 행위.</p></blockquote><h3 id="abschnitt-문제-신고reporting-an-issue">Abschnitt “문제 신고(Reporting an Issue)”</h3><ul><li>“this Code of Conduct <strong>reinforces</strong> encouraged behaviors and norms that …”: mit “본 행동 강령은 …는 권장 행동 방식과 규범을 <strong>증진합니다</strong>” übersetzt<li>“in a timely manner”: mit “적시에” übersetzt<li>“while prioritizing safety and confidentiality”: mit “안전과 비밀 유지를 우선시한다는 전제 하에” übersetzt<li>“In order to <strong>honor</strong> these values”: mit “이들 가치를 <strong>지키기</strong> 위해” übersetzt<blockquote class="prompt-tip"><p>(<a href="https://www.oxfordlearnersdictionaries.com/">Oxford Learner’s Dictionaries</a> 표제어 중)</p><p><a href="https://www.oxfordlearnersdictionaries.com/definition/english/honor_2"><strong>honor</strong></a> <em>verb</em><br /> <u>keep promise</u> 3. <strong>honor something</strong> <em>(formal)</em> to do what you have agreed or promised to do</p></blockquote></ul><h3 id="abschnitt-피해-대응-및-교정addressing-and-repairing-harm">Abschnitt “피해 대응 및 교정(Addressing and Repairing Harm)”</h3><ul><li>“Addressing”: als “대응” übersetzt<li>“Repairing”: als “교정” übersetzt</ul><h4 id="übersetzung-von-event-consequence-repair">Übersetzung von <code class="language-plaintext highlighter-rouge">Event:</code>, <code class="language-plaintext highlighter-rouge">Consequence:</code>, <code class="language-plaintext highlighter-rouge">Repair:</code></h4><p>Das war ein Teil, bei dem ich etwas länger nachdenken musste, weil sich diese Begriffe nur schwer natürlich ins Koreanische übertragen lassen. Wenn man sie wörtlich als “사건”, “결과”, “교정” übersetzt, wirkt der Text ziemlich holprig.</p><p>Damit der Text natürlich bleibt und zugleich <a href="#paradigmenwechsel-von-retributiver-zu-restaurativer-gerechtigkeit">die Philosophie des Originals</a> möglichst vollständig vermittelt, habe ich nach einigem Überlegen schließlich wie folgt übersetzt.</p><ul><li>“Event”: als “적용 상황”<li>“Consequence”: als “대응 조치”<li>“Repair”: zunächst zog ich “회복 조치” in Betracht, verwarf dies aber wieder, weil “조치” stärker nach Eingriff und Durchsetzung durch Dritte klingt als nach freiwilliger Reflexion und Verbesserung durch die betroffene Person selbst und damit der Intention des Originals widerspricht. Letztlich habe ich mich für “교정 노력” entschieden.</ul><h4 id="zur-übersetzung-der-formulierung-seeking-clarification-on-expectations">Zur Übersetzung der Formulierung “seeking clarification on expectations”</h4><p>“expectations” ließe sich zwar wörtlich als “기대 사항” übersetzen, und das wäre bedeutungsmäßig nicht falsch, aber für einen flüssigeren Text habe ich es als “준수 사항” wiedergegeben.</p><blockquote class="prompt-tip"><p>(<a href="https://www.oxfordlearnersdictionaries.com/">Oxford Learner’s Dictionaries</a> 표제어 중)</p><p><a href="https://www.oxfordlearnersdictionaries.com/definition/english/expectation"><strong>expectation</strong></a> <em>noun</em><br /> 3. [countable, usually plural] a strong belief about the way something should happen or how somebody should behave</p></blockquote><p>“seeking clarification” könnte man auch als “해명(clarification) 요구(seeking)” wiedergeben. Im Kontext geht es in den Punkten zu den 교정 노력(Repair) jedoch darum, welches wünschenswerte nachträgliche Verhalten und welche Haltung die Person zeigen sollte, die ein Problem verursacht hat. Wenn man clarification und seeking hier jeweils als 해명 und 요구 übersetzt, wird die Bedeutung schief. Am passendsten erschien mir hier eine Wiedergabe als Bemühung darum, die “준수 사항”(expectations) klar zu 확인하고 숙지하기(clarification), um aus eigener Reflexion heraus denselben Fehler nicht zu wiederholen.</p><blockquote class="prompt-tip"><p>(<a href="https://www.oxfordlearnersdictionaries.com/">Oxford Learner’s Dictionaries</a> 표제어 중)</p><p><a href="https://www.oxfordlearnersdictionaries.com/definition/english/seek"><strong>seek</strong></a> <em>verb</em><br /> 2. [transitive] to ask somebody for something; to try to obtain or achieve something</p><p><a href="https://www.oxfordlearnersdictionaries.com/definition/english/clarification"><strong>clarification</strong></a> <em>noun</em><br /> [uncountable, countable] (formal)<br /> the act or process of making something clearer or easier to understand</p><ul><li><em>I am <strong>seeking clarification of</strong> the regulations.</em></ul></blockquote><h4 id="zur-übersetzung-der-formulierung-cooldown">Zur Übersetzung der Formulierung “cooldown”</h4><p>Wörterbuchhaft hat das Wort Bedeutungen wie Abkühlung, Cool-down nach dem Training oder Beruhigung; hier wurde es dem Kontext nach am ehesten im Sinn von Beruhigung verwendet. Es ist dem “식히다” in Ausdrücken wie „머리 좀 식혀라.“ am nächsten.</p><p>Allerdings klingt es etwas unnatürlich, “time-limited cooldown period” als “한시적 진정 기간” zu übertragen. Deshalb habe ich in dieser koreanischen Übersetzung “cooldown period” als “자숙 기간” übersetzt.</p><h4 id="zur-übersetzung-der-formulierung-time-to-process-the-incident">Zur Übersetzung der Formulierung “time to process the incident”</h4><p>Wie <a href="#nicht-die-lexikalische-bedeutung-sondern-der-kontext-eines-wortes-im-text">oben ausgeführt</a> habe ich dies als “해당 일을 추스를 시간” übersetzt.</p><h4 id="zur-übersetzung-der-begriffe-suspension-und-ban">Zur Übersetzung der Begriffe “suspension” und “ban”</h4><p>In der <a href="https://www.contributor-covenant.org/ko/version/2/1/code_of_conduct/">bestehenden koreanischen Übersetzung von Version 2.1</a> wurde “ban” mit “제재” übersetzt. “제재” ist jedoch ein Oberbegriff, der alle möglichen Maßnahmen gegen Verstöße umfasst, also auch niedrigere Stufen wie Warnungen oder vorübergehende Aktivitätseinschränkungen, weshalb die Bedeutung unscharf bleibt. Das englische Wort “ban” ist seinerseits eindeutig im Sinn von Verbot oder Sperre, und Ausdrücke wie „dauerhafte Sperrung eines Accounts“ sind auch im Koreanischen ganz geläufig und natürlich. Ich sah daher keinen besonderen Grund, dies um jeden Preis frei zu paraphrasieren.</p><p>Dasselbe gilt für “suspension”: Auch hier ist die Bedeutung als Aussetzung bzw. Sperre klar, sodass es keinen zwingenden Grund für eine freie Umschreibung gibt.</p><p>Deshalb habe ich “Temporary Suspension” und “Permanent Ban” jeweils als “일시적 정지” und “영구 정지” übersetzt.</p><h4 id="zur-übersetzung-des-satzes-this-enforcement-ladder-is-intended-as-a-guideline">Zur Übersetzung des Satzes “This enforcement ladder is intended as a guideline.”</h4><p>Den Ausdruck “enforcement ladder” habe ich als “단계적 집행 기준” übersetzt. Außerdem wird dieser Satz in dem Kontext verwendet, dass die oben beschriebenen 단계적 집행 기준 eben nur als eine von mehreren möglichen Optionen präsentiert werden und die Ermessens- und Entscheidungsbefugnis der Community-Leitung gewahrt bleibt. Deshalb habe ich den unbestimmten Artikel “a” als “하나의” wiedergegeben. In der Übersetzung habe ich daher wie folgt formuliert.</p><blockquote><p><u>이 단계적 집행 기준은 하나의 기준선으로 마련한 것입니다.</u> 이는 커뮤니티의 최선의 이익에 부합하는 커뮤니티 관리자의 재량권과 판단 권한을 제한하지 않습니다.</p></blockquote><h2 id="schlussbemerkung">Schlussbemerkung</h2><p>Bei vielen Dokumenten und Projekten mit gemeinnützigem Charakter werden Übersetzungen in verschiedene Sprachen von Freiwilligen und Mitwirkenden erstellt. Gerade bei koreanischen Übersetzungen habe ich jedoch nicht selten erlebt, dass es entweder gar keine Übersetzung gab, weil sich niemand beteiligt hatte, oder dass zwar eine vorhanden war, sie aber so mechanisch wirkte, dass ich trotz meiner Muttersprache dachte: „Dann lese ich lieber gleich die englische Originalseite“, und auf die englische Seite wechselte.</p><p>Als ich mich diesmal dazu entschloss, zur koreanischen Übersetzung beizutragen, wollte ich — wenn ich schon beitrage — eine qualitativ hochwertige Übersetzung liefern, die sich für die Lesenden so natürlich anfühlt, als hätte ein koreanischer Autor den Text von Anfang an auf Koreanisch geschrieben. Ich habe versucht, die Philosophie und die feinen Kontexte des Originals zu verstehen und einzuarbeiten, insbesondere auch, welche Formulierungen sich in Version 3.0 gegenüber 2.1 geändert haben und aus welchen Gründen die ursprünglichen Autor*innen diese Entscheidungen getroffen haben könnten.</p><p>Aufgrund der Natur von Sprache ist Übersetzung nichts, das bei gleichem Input wie eine Funktion stets denselben Output erzeugt. Jede Übersetzerin und jeder Übersetzer wird zu einem etwas anderen Ergebnis kommen. Das hat einerseits mit Können zu tun, rührt aber im Kern daher, dass es bei Übersetzung — und darüber hinaus beim Schreiben selbst — keine einzige festgelegte richtige Antwort gibt. In letzter Zeit nutze ich KI unterstützend für fast alle Arbeiten; selbst die Beiträge in diesem Blog werden über eine angebundene LLM-API automatisch in mehrere Sprachen übersetzt und veröffentlicht. Aber gerade diese Arbeit wollte ich wirklich ernsthaft und so gut machen, wie ich nur kann. Ich habe jede einzelne Formulierung mehrfach geprüft und darüber nachgedacht, welcher Ausdruck die Bedeutung des Originals möglichst unverzerrt und vollständig, zugleich aber natürlich transportiert. Das Ergebnis spiegelt mein subjektives, aber bestmögliches Urteil und meine Interpretation wider. In einer Zeit, in der alle KI nutzen, bin ich überzeugt, dass gerade bei der Übersetzung wichtiger Dokumente wie eines solchen Versprechens oder Verhaltenskodexes ein Mehrwert gegenüber einem bloßen „Hier ist der Originaltext, bitte übersetze ihn“ für eine KI vorhanden sein muss, damit die Übersetzung überhaupt einen Wert hat. Zumindest nach dem Stand von März 12026 bin ich überzeugt, dass ich in <a href="https://github.com/EthicalSource/contributor_covenant/pull/1590">dieser Übersetzung</a> die feinen Nuancen und Kontexte des Originals vollständig bewahrt habe, die maschinelle Übersetzung oder LLMs noch nicht vollständig erfassen.</p><p>Mit Stand vom 20. März 12026 ist Version 3.0 des Contributor Covenant außer im englischen Original und in dieser koreanischen Übersetzung, die ich diesmal eingereicht habe, bislang nur in drei weiteren Sprachen vollständig übersetzt: Bengalisch, Deutsch und Festlandchinesisch. Wenn man sich die <a href="https://github.com/EthicalSource/contributor_covenant/pulls">Liste der offenen PRs</a> ansieht, gibt es darüber hinaus viele Sprachen, für die zwar ein erster Übersetzungsentwurf bereits als PR eingereicht wurde, die aber mangels Reviewer<em>innen noch nicht endgültig freigegeben werden konnten. Viele andere Sprachen sind nicht einmal bei 3.0 angekommen, sondern noch bei 1.4 stehengeblieben. Falls es aus irgendeinem Grund Leser</em>innen dieses Textes gibt, deren Sprache nicht Koreanisch ist, wäre es für OES und die Sprecher<em>innen der jeweiligen Sprache sicherlich eine große Hilfe, wenn sie <a href="https://github.com/EthicalSource/contributor_covenant?tab=contributing-ov-file#translators-and-native-speakers">zur Übersetzung beitragen würden</a>; der Weg dorthin ist nicht besonders kompliziert, und schon ein Tag am Wochenende würde dafür reichen. Auch für mich war es das erste Mal, dass ich zu einer solchen Übersetzungsarbeit beigetragen und den vollständigen Text eines Verhaltenskodexes aufmerksam gelesen habe, aber ich denke, dass die investierten Stunden den Aufwand eindeutig wert waren. Korea gehört gemessen an seiner Gesamtbevölkerung zu den Ländern mit einer recht großen Zahl von Entwickler</em>innen, die in Open-Source-Communitys wie GitHub aktiv sind. Umso mehr würde ich mich freuen, wenn sich auch andere koreanische Leser*innen an der Begutachtung der diesmal übersetzten und eingereichten <a href="https://github.com/EthicalSource/contributor_covenant/pull/1590">koreanischen Fassung</a> des Contributor Covenant 3.0 Code of Conduct beteiligen und sie darüber hinaus vielerorts sinnvoll übernommen und genutzt würde.</p><p>Wie <strong>Professor Nathan Schneider</strong> in dem <a href="https://ethicalsource.dev/blog/contributor-covenant-3/">Blogbeitrag von OES</a> sagt, funktioniert das Contributor Covenant als unverzichtbare Grundlage für den Aufbau verantwortungsvoller und transparenter Communities und hat tatsächlich dazu beigetragen, Konflikte zu lösen. Gewohnheitsmäßig klicken viele auf GitHub wohl einfach auf den Button „Add a code of conduct“ und fügen eine Vorlage ein, aber die von GitHub automatisch bereitgestellte Vorlage wird aus irgendeinem Grund seit Version 2.0 nicht mehr aktualisiert. Version 3.0 bringt gegenüber 2.0 und 2.1 erhebliche Veränderungen und Verbesserungen mit sich; deshalb möchte ich anregen, wenn möglich lieber über die <a href="https://www.contributor-covenant.org/adopt/">offizielle Seite</a> die neueste Version zu übernehmen. Der Text ist gar nicht so lang, sodass es umso sinnvoller wäre, ihn in diesem Zuge wenigstens einmal in Ruhe vollständig zu lesen. Ich hoffe auf viel Interesse für den Contributor Covenant 3.0 Code of Conduct und für die <a href="https://github.com/EthicalSource/contributor_covenant/pull/1590">koreanische Übersetzung</a>, an der ich diesmal gearbeitet habe, und belasse es dabei.</p>]]> </content> </entry> <entry><title xml:lang="de">Wie man IR-Unterlagen erstellt (How to Prepare IR Materials)</title><link href="https://www.yunseo.kim/de/posts/how-to-prepare-ir-materials/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/how-to-prepare-ir-materials/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/how-to-prepare-ir-materials/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/how-to-prepare-ir-materials/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/how-to-prepare-ir-materials/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/how-to-prepare-ir-materials/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/how-to-prepare-ir-materials/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/how-to-prepare-ir-materials/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/how-to-prepare-ir-materials/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/how-to-prepare-ir-materials/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/how-to-prepare-ir-materials/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/how-to-prepare-ir-materials/" rel="alternate" type="text/html" hreflang="am" /><published>2026-01-11T00:00:00+09:00</published> <updated>2026-01-11T00:00:00+09:00</updated> <id>https://www.yunseo.kim/de/posts/how-to-prepare-ir-materials/</id> <author> <name>Yunseo Kim</name> </author> <category term="Startup" /> <category term="IR" /> <summary xml:lang="de">Erklärt, was IR-Unterlagen sind, und fasst zusammen, welche Inhalte in gute IR-Unterlagen gehören, um erfolgreich Investment einzuwerben.</summary> <content type="html" xml:lang="de"> <![CDATA[<p>Erklärt, was IR-Unterlagen sind, und fasst zusammen, welche Inhalte in gute IR-Unterlagen gehören, um erfolgreich Investment einzuwerben.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="was-sind-ir-unterlagen">Was sind IR-Unterlagen?</h2><p><strong>IR</strong> ist die Abkürzung für <strong>Investor Relations</strong> und bezeichnet einen Sammelbegriff für sämtliche Materialien und Aktivitäten, die notwendig sind, um ein Unternehmen gegenüber Investor:innen zu erklären und zu positionieren, Beziehungen aufzubauen und Investment einzuwerben. Mit „IR-Unterlagen“ meint man üblicherweise die Dokumente, mit denen ein Unternehmen Investor:innen im Rahmen der Kapitalaufnahme vorgestellt wird.</p><h2 id="inhalte-die-in-ir-unterlagen-enthalten-sein-sollten">Inhalte, die in IR-Unterlagen enthalten sein sollten</h2><p>Da das Ziel von IR-Unterlagen die Kapitalaufnahme ist, muss aus Investorensicht überzeugend dargelegt werden, warum man in dieses Unternehmen investieren sollte. Entsprechend sollten sie u. a. eine Service-Zusammenfassung, Marktumfeld, Produkt-/Servicebeschreibung, Wettbewerbssituation, Traktion/Ergebnisse, Geschäftsmodell, zukünftigen Wachstumsplan, Teamaufstellung usw. abdecken.</p><ul><li><strong>Pitch Deck</strong>:<ul><li>Ziel: <strong>kurz und eindrucksvoll</strong> bei einer breiten Gruppe potenzieller Investor:innen einen <strong>positiven ersten Eindruck</strong> hinterlassen<li>Einsatz bei frühen Finanzierungsrunden<li>Typischerweise 10–15 Slides, knapp und mit Fokus auf visuelle Inhalte</ul><li><strong>IR Deck</strong>:<ul><li>Liefert <strong>vertiefte Finanzinformationen und langfristige Strategie</strong> des Unternehmens<li>Für professionelle Investor:innen, die bereits Interesse zeigen und kurz vor einer Entscheidung stehen<li>Ermöglicht Investor:innen eine <strong>tiefergehende Bewertung und Entscheidung</strong><li>Typischerweise 20–30 Slides, mit detaillierteren Informationen wie <strong>Finanzplan, Marktanalyse, Teamaufstellung, Wettbewerbsanalyse</strong> usw.</ul></ul><h3 id="missionvision-missionvision">Mission/Vision (Mission/Vision)</h3><ul><li>Welchen grundlegenden Wert will das Unternehmen liefern?</ul><blockquote class="prompt-tip"><p>Dieser Teil kann als Kernidentität des Unternehmens verstanden werden. Es ist sinnvoll, ganz am Anfang der IR-Unterlagen Mission und Vision jeweils in einem Satz knapp, aber eindeutig zu formulieren.</p></blockquote><h3 id="service-zusammenfassung">Service-Zusammenfassung</h3><h4 id="problem">Problem</h4><ul><li>Welches Problem am Markt soll der Service lösen?<li>Wie stark empfinden Kund:innen dieses Problem als unbequem/Belastung?<li>Warum ist das Problem wichtig?<li>Gibt es Nachfrage nach einer Lösung? Wer ist die Zielgruppe?</ul><h4 id="lösung-solution">Lösung (Solution)</h4><ul><li>Wie wird das zuvor genannte Problem konkret gelöst?<li>Welche Vorteile ergeben sich für Kund:innen und Endnutzer:innen gegenüber bestehenden Ansätzen?</ul><blockquote class="prompt-tip"><p>Da Investor:innen in vielen Fällen keine Fachexpert:innen in dem Gebiet sind, ist es empfehlenswert, den Service aus Sicht von Nutzer:innen (nicht aus Entwicklersicht) zu erklären. Technische Details sollte man bei späteren Rückfragen separat vertiefen.</p></blockquote><h3 id="marktgröße-market-size">Marktgröße (Market Size)</h3><p>Wenn man die Marktgröße direkt als Geldbetrag festlegt, kann das Ergebnis je nach Berechnungsmethode und vielen Variablen stark schwanken; zudem ist das Risiko relativ hoch, dass Widerspruch entsteht. Es ist oft sicherer und wirksamer, alternative Kennzahlen wie Anzahl potenzieller Nutzer:innen, Anzahl/Häufigkeit von Transaktionen usw. zu definieren und damit die Marktgröße zu belegen.</p><ul><li><strong>TAM (Total Addressable Market, Gesamtmarkt)</strong>: Unter der idealisierten Annahme, dass man alle Wettbewerber ausblendet und 100% Weltmarktanteil erreicht—die theoretisch maximal erreichbare Marktgröße, wenn man das Produkt bzw. den Service weltweit anbietet<li><strong>SAM (Service Available Market, adressierbarer Markt)</strong>: Die Marktgröße im realistisch adressierbaren Rahmen unter Berücksichtigung geografischer, infrastruktureller und regulatorischer Einschränkungen—also der Markt, den das Unternehmen tatsächlich anstrebt<li><strong>SOM (Service Obtainable Market, erreichbarer Markt / Umsatzmarkt)</strong>: Der Marktanteil bzw. die Marktgröße, die man innerhalb des SAM unter Berücksichtigung von Wettbewerb, Unternehmensfähigkeiten, Marketingstrategie usw. zu Beginn tatsächlich erreichen kann</ul><blockquote class="prompt-tip"><p>Bei der Schätzung der Marktgröße werden für Gesamtmarkt oder adressierbaren Markt häufig konkrete Zahlen und Indikatoren aus Drittquellen (Marktforschung) zitiert. Für den aus Startup-Sicht kurzfristig wichtigeren „Umsatzmarkt“ wird dann oft nach dem Muster erklärt: „Wenn wir in diesem Markt X% Anteil erreichen, erzielen wir Umsatz Y.“ Ehrlich gesagt habe auch ich, als ich gerade erst mit der Gründungsvorbereitung begann, meinen ersten internen IR-Entwurf genau so geschrieben.</p><p>Das Problem dabei ist: Aus Investorensicht ist ein Plan, „X% des Marktes zu erobern“, schwer zu glauben. Man gewinnt Marktanteile nicht automatisch nur durch einen Launch, und vage zu behaupten, man werde bei allen Marktteilnehmern X% erreichen, ist wenig überzeugend.</p><p>Wichtig ist, gleichzeitig zu zeigen, dass Gesamt- und adressierbarer Markt groß genug sind, und zudem eine schlüssige Argumentation zu liefern, wie man den <strong>initialen Kundensektor (Immediate Market)</strong> definiert und anschließend weitere Kundensegmente schrittweise erschließt, um den Umsatzmarkt zu vergrößern.</p></blockquote><blockquote class="prompt-tip"><p><strong>Business-Timing</strong></p><ul><li>Timing ist im Business ebenfalls sehr wichtig<li>Man muss Investor:innen erklären können, warum dieses Geschäft <em>jetzt</em> gut funktionieren kann und warum man <em>jetzt</em> investieren sollte<li>Es sollten Gründe genannt werden, warum gerade jetzt ein geeigneter Zeitpunkt zur Umsetzung ist: technologische Machbarkeit, Veränderungen im Verhalten der Menschen, gesellschaftliche Trends, Veränderungen im Umfeld usw.</ul></blockquote><h3 id="produkt-servicebeschreibung-product">Produkt-/Servicebeschreibung (Product)</h3><ul><li>Was sind die wichtigsten Merkmale und Funktionen des Produkts/Services?<li>Wie funktioniert es konkret, und welche Beispiele gibt es?</ul><h3 id="geschäftsmodell-business-model">Geschäftsmodell (Business Model)</h3><ul><li>Wie wird Geld verdient?<li>Wer zahlt? (Da Endnutzer:in und zahlende Kundschaft nicht immer identisch sind, muss klar benannt werden, wer tatsächlich den Umsatz generiert.)<li>Wofür wird abgerechnet? Wie ist die Preisgestaltung?</ul><h3 id="wettbewerb-competition">Wettbewerb (Competition)</h3><ul><li>Wer sind die wichtigsten Wettbewerber?<li>Inwiefern ist das eigene Produkt bzw. der eigene Service <strong>aus Kundensicht</strong> gegenüber Konkurrenzprodukten/-services überlegen und vorteilhaft?<li>Welche Angebote definiert man als Wettbewerbsservices, und welche Kundengruppe wird als Hauptziel anvisiert?</ul><blockquote class="prompt-tip"><p>Eine saubere Wettbewerbsanalyse hilft, Investor:innen effektiv zu zeigen, dass man die Marktsituation gut versteht.</p></blockquote><h3 id="traktion-und-markteintrittsstrategie-go-to-market-strategy">Traktion und Markteintrittsstrategie (Go-to Market Strategy)</h3><ul><li>Welche Kernkennzahl ist für den Geschäftserfolg am wichtigsten?<ul><li>z. B. Anzahl Bestellungen, monatlich aktive Nutzer:innen (MAU), monatliches Transaktionsvolumen usw.</ul><li>Welche Ergebnisse/Traktion gab es entlang dieser Kennzahl?<li>Was sind die wichtigsten Marketingmittel und -kanäle?<li>Welche Maßnahmen und Kosten gibt es für die Neukundengewinnung?<li>*<strong>Wie hoch ist der Customer Lifetime Value (LTV)</strong>?</ul><blockquote class="prompt-info"><p>*<strong>Customer Lifetime Value (LTV)</strong>: Kennzahl dafür, wie viel Gewinn eine Nutzerin bzw. ein Nutzer während der gesamten Nutzungsdauer des Services insgesamt bringt</p></blockquote><blockquote class="prompt-tip"><p>Es ist empfehlenswert, Nebenkennzahlen außerhalb der Kernmetriken wegzulassen.</p></blockquote><blockquote class="prompt-tip"><p><strong>Wenn es sich um ein extrem frühes Startup ohne Umsatz handelt</strong></p><ul><li>Den <strong>Break-even-Point</strong> des angebotenen Services definieren und darstellen<li>Dabei Umsatzkennzahlen nicht „schönrechnen“, sondern konservativ und realistisch ansetzen<li>Ein Umsatzszenario für das erste Jahr mit Umsatzplanung für die folgenden Jahre ergänzen, um Vertrauen zu schaffen, dass kontinuierliches Wachstum möglich ist<ul><li>1-Jahres-Kurzfristprognose<li>3-Jahres-Mittelfristprognose<li>5-Jahres-Langfristprognose</ul><li>Grafiken und Tabellen aktiv nutzen, damit Inhalte auf einen Blick erfassbar sind<li>Eine <strong>Slide zur Hypothesenvalidierung</strong> aufnehmen und überzeugend begründen, warum man die Kernkennzahl und das Umsatzszenario so angesetzt hat, um die Argumentation zu stärken<ul><li>Es sollte durch wiederholte Experimente und Hypothesenvalidierung eine belastbare Grundlage für das erwartete Umsatzszenario geschaffen werden</ul></ul></blockquote><h3 id="team">Team</h3><ul><li>Nicht alle vorstellen, sondern—inklusive der Geschäftsführung—vor allem die Kernmitglieder mit entscheidenden Rollen<li>Berufserfahrung und Skills auf ca. 2–3 Punkte begrenzen und mit Logos o. Ä. gut lesbar darstellen<li>Falls es Investor:innen oder Advisor gibt, die wesentliche Beiträge geleistet haben oder leisten, kann man sie ebenfalls aufnehmen</ul><h3 id="zukünftiger-wachstumsplan-milestones">Zukünftiger Wachstumsplan (Milestones)</h3><ul><li>Ziele nach Zeitpunkten und Phasen darstellen<li>Üblich ist es, Ziele bis zur nächsten Finanzierungsrunde zu definieren (bei Seed bis vor Series A, bei Series A bis vor Series B)<li>Gewünschte Investmentsumme und Verwendungsplan angeben<li>Dabei Zeitabschnitte nicht zu grob wählen (z. B. nicht in Halbjahresschritten), sondern eher in Einheiten von etwa 2 Monaten gliedern</ul><h3 id="finanzplanung-financials">Finanzplanung (Financials)</h3><p>Beim IR Deck sollte die Finanzplanung enthalten sein.</p><ul><li>Finanzplan für die nächsten 3–5 Jahre<li><strong>Unit Economics</strong>: Einnahmen und Kosten pro Kundeneinheit<li><strong>Burn Rate</strong>: Verhältnis/Tempo der Cash-Ausgaben eines jungen Unternehmens für Gründungskosten, F&amp;E, sonstige Kosten<li>Gesamteinnahmen und Gesamtkosten<li>EBITDA oder Cashflow-Statement usw.</ul><blockquote class="prompt-warning"><ul><li>Darauf achten, keine unrealistischen Finanzpläne zu präsentieren<li>Prognostizierte Umsätze werden oft überschätzt und Kosten unterschätzt—daher bei der Umsatzplanung besonders sorgfältig sein<li>Kosten möglichst präzise schätzen, unter Einbezug von Produkt-/Serviceentwicklung sowie Betriebskosten usw.</ul></blockquote><h2 id="punkte-die-je-nach-investmentphase-besonders-zu-betonen-sind">Punkte, die je nach Investmentphase besonders zu betonen sind</h2><h3 id="seed">Seed</h3><ul><li>Phase: MVP entwickeln, Marktreaktion prüfen und die Tragfähigkeit des Geschäftsmodells validieren<li>Ergebnisse der initialen Hypothesen-/Business-Model-Validierung, MVP-Experimente und daraus resultierende Umsätze sollten stark betont werden</ul><h3 id="pre-a">Pre-A</h3><ul><li>Phase: Wachstumspotenzial belegen und zusätzliches Kapital für Produktentwicklung, Marketing, Hiring usw. sichern<li>Erfordert eine Erklärung, welche Kernkennzahl entscheidend ist, wie gut man durch welche Aktivitäten wächst, und wie das weitere Wachstumspotenzial aussieht</ul><h3 id="series-a">Series A</h3><ul><li>Phase: Skalierung mit dem Ziel, den Unternehmenswert deutlich zu steigern<li>Da Hypothesenvalidierung zu diesem Zeitpunkt abgeschlossen sein sollte, muss man Investor:innenvertrauen durch quantitative Ergebnisse und Leistungsnachweise gewinnen</ul><h2 id="einige-tipps">Einige Tipps</h2><ul><li>Besonders in die ersten fünf Slides investieren, um einen positiven ersten Eindruck zu hinterlassen<li>Mission/Vision der ersten Slide kann man auf der letzten Slide nochmals aufnehmen<li>Alle Inhalte nach dem Prinzip „Kernaussage zuerst“ strukturieren<li>Gegenstand des Investments ist das <strong>Unternehmen</strong>—daher sollte in IR-Unterlagen der Firmenname vor dem Servicenamen stehen<li>Da potenzielle Investor:innen keine Brancheninsider sein müssen: möglichst einfache Begriffe verwenden und bei unvermeidbaren Fachbegriffen eine Erklärung ergänzen<li>Marktproblem und Lösung nicht vermischen, sondern trennen<li>Text eher als Keywords, bei Bildern Screenshots möglichst vermeiden und die Lesbarkeit erhöhen<li>Exakte und konkrete Zahlen in Tabellen oder Grafiken angeben<li>Darauf achten, Teamvorstellung sowie gewünschte Investmentsumme und Verwendungsplan nicht zu vergessen<li>Eine Exit-Strategie zur Rückführung des Investments ebenfalls darstellen<li>Auch wenn nicht perfekt: einen groben Plan zur Aktionärsstruktur (welche Anteile für wen) angeben<li>Nicht zu viele Daten in den Hauptteil packen; bei Bedarf als Anhang auslagern<li>Auf der letzten Slide Kontaktdaten (E-Mail, Telefonnummer, Name) angeben<li>Die Schriftart ist ebenfalls wichtig: gut lesbare Fonts wie <a href="https://cactus.tistory.com/306">Pretendard</a> verwenden und zur Vermeidung von Darstellungsfehlern als PDF vorbereiten</ul><h2 id="referenzen">Referenzen</h2><h3 id="unternehmensoffenlegungskanal-kind">Unternehmensoffenlegungskanal KIND</h3><p><a href="https://kind.krx.co.kr/corpgeneral/irschedule.do?method=searchIRScheduleMain&amp;gubun=iRMaterials">https://kind.krx.co.kr/corpgeneral/irschedule.do?method=searchIRScheduleMain&amp;gubun=iRMaterials</a></p><ul><li>Von der Korea Exchange (KRX) betriebener Kanal für Unternehmensoffenlegungen<li>Stellt Offenlegungsinformationen für an KOSPI, KOSDAQ und KONEX gelistete Unternehmen bereit<li>Da man IR-Unterlagen börsennotierter Unternehmen einsehen kann, eignet es sich, um die Struktur aktuell erstellter IR-Unterlagen anderer Unternehmen nachzuvollziehen</ul>]]> </content> </entry> <entry><title xml:lang="de">Grundlegende Konzepte der Kryptographie</title><link href="https://www.yunseo.kim/de/posts/basic-concepts-of-cryptography/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/basic-concepts-of-cryptography/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/basic-concepts-of-cryptography/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/basic-concepts-of-cryptography/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/basic-concepts-of-cryptography/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/basic-concepts-of-cryptography/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/basic-concepts-of-cryptography/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/basic-concepts-of-cryptography/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/basic-concepts-of-cryptography/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/basic-concepts-of-cryptography/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/basic-concepts-of-cryptography/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/basic-concepts-of-cryptography/" rel="alternate" type="text/html" hreflang="am" /><published>2025-11-26T00:00:00+09:00</published> <updated>2025-11-26T00:00:00+09:00</updated> <id>https://www.yunseo.kim/de/posts/basic-concepts-of-cryptography/</id> <author> <name>Yunseo Kim</name> </author> <category term="Dev" /> <category term="Cryptography" /> <summary xml:lang="de">Grundlagen der Kryptographie: Was Kryptographie ist, symmetrische und asymmetrische Verfahren, Kerckhoffs&apos; Prinzip, Schlüsselverteilung, digitale Signaturen u.v.m.</summary> <content type="html" xml:lang="de"> <![CDATA[<p>Grundlagen der Kryptographie: Was Kryptographie ist, symmetrische und asymmetrische Verfahren, Kerckhoffs' Prinzip, Schlüsselverteilung, digitale Signaturen u.v.m.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="암호학이란">암호학이란</h2><p><strong>Kryptographie (cryptography)</strong> ist im Kern ein Teilgebiet der Wissenschaft, dessen Ziel es ist, <strong>Protokolle (protocols)</strong> gegen feindliche Handlungen zu verteidigen.</p><p>Ein Protokoll ist hier eine Liste von Schritten, die eine oder mehrere Personen befolgen müssen, um etwas zu erreichen. Möchte man etwa eine Zwischenablage (Clipboard) zwischen Geräten teilen, könnte ein Protokoll zur Zwischenablagen‑Freigabe folgendermaßen aussehen:</p><ol><li>Sobald sich auf einem der Geräte der Inhalt der Zwischenablage ändert, kopiert dieses den Inhalt und lädt ihn auf einen Server hoch.<li>Der Server informiert die übrigen Geräte darüber, dass sich die gemeinsame Zwischenablage geändert hat.<li>Die übrigen Geräte laden den neuen, gemeinsamen Zwischenablagen‑Inhalt vom Server herunter.</ol><p>Dies ist allerdings kein gutes Protokoll: Wenn der Inhalt der Zwischenablage im Klartext auf den Server hochgeladen und wieder heruntergeladen wird, kann jemand während der Übertragung – oder auch der Serverbetreiber selbst – den Inhalt mitlesen. Die Kryptographie übernimmt hier die Aufgabe, das Protokoll gegen einen möglichen Gegner zu schützen, der versucht, den Inhalt der Zwischenablage auszuspähen.</p><h2 id="대칭-암호학">대칭 암호학</h2><h3 id="대칭-암호화">대칭 암호화</h3><blockquote><p>Stellen wir uns vor, Alice müsse Bob einen Brief schicken. Alice befiehlt einem Boten (messenger), den Brief zu Bob zu bringen, um ihm vertrauliche Informationen mitzuteilen.<br /> Alice vertraut dem Boten jedoch nicht vollständig und möchte, dass die übermittelte Nachricht für alle – einschließlich des Boten – außer Bob geheim bleibt.</p></blockquote><p>Für solche Situationen wurde schon vor langer Zeit eine kryptographische Klasse von Algorithmen erfunden, nämlich <strong>symmetrische Verschlüsselungsalgorithmen (symmetric encryption algorithms)</strong>.</p><blockquote class="prompt-info"><p><strong>프리미티브(primitive)</strong><br /> Das Wort <em>Primitive (primitive)</em> bedeutet im Wörterbuch so viel wie „ursprünglich“, „elementar“.<br /> Auch in der Kryptographie wird dieser Begriff häufig verwendet; dort bezeichnet <em>Primitive</em> die kleinsten funktionalen Einheiten oder Algorithmen, aus denen ein kryptographisches System aufgebaut ist.<br /> Man kann sie sich als „Grundbausteine“ oder „Basislogik“ vorstellen.</p></blockquote><p>Betrachten wir eine Primitive, die die folgenden zwei Funktionen bereitstellt:</p><ul><li><code class="language-plaintext highlighter-rouge">ENCRYPT</code>: Nimmt einen <strong>geheimen Schlüssel (secret key)</strong> (typischerweise eine große Zahl) und eine <strong>Nachricht (message)</strong> als Eingabe entgegen und liefert eine Zahlenfolge als verschlüsselte Nachricht.<li><code class="language-plaintext highlighter-rouge">DECRYPT</code>: Die Umkehrfunktion von <code class="language-plaintext highlighter-rouge">ENCRYPT</code>, die bei Eingabe desselben geheimen Schlüssels und der verschlüsselten Nachricht die ursprüngliche Nachricht ausgibt.</ul><p>Um mit einer solchen kryptographischen Primitive zu verhindern, dass der Bote oder andere Dritte die Nachricht von Alice lesen können, müssen Alice und Bob sich zunächst im Voraus treffen und sich auf einen geheimen Schlüssel einigen. Danach kann Alice mithilfe der Funktion <code class="language-plaintext highlighter-rouge">ENCRYPT</code> und des vereinbarten geheimen Schlüssels ihre Nachricht verschlüsseln und die verschlüsselte Nachricht über den Boten an Bob übermitteln. Bob wiederum verwendet denselben geheimen Schlüssel zusammen mit der Funktion <code class="language-plaintext highlighter-rouge">DECRYPT</code>, um die ursprüngliche Nachricht wiederherzustellen.</p><p>Der Prozess, einen Inhalt mit einem geheimen Schlüssel zu verschlüsseln und so zu verwandeln, dass er sich äußerlich nicht von bedeutungslosem Rauschen unterscheidet, ist ein typisches Verfahren der Kryptographie, um Protokolle zu schützen.</p><p>Symmetrische Verschlüsselung gehört zu der übergeordneten Klasse der <strong>symmetrischen Kryptographie (symmetric cryptography)</strong> bzw. <strong>Geheimschlüssel‑Kryptographie (secret key cryptography)</strong>; je nach Verfahren können dabei auch mehr als zwei Schlüssel im Spiel sein.</p><h2 id="케르크호프스의-원칙">케르크호프스의 원칙</h2><p>Heute verfügen wir mit Computern und dem Internet über ein Kommunikationsmittel, das erheblich leistungsfähiger ist als Papierbriefe, und können nahezu in Echtzeit kommunizieren. Umgekehrt bedeutet dies jedoch auch, dass böswillige „Boten“ deutlich mächtiger geworden sind: Das kann ein unsicheres öffentliches WLAN in einem Café sein, ein Internetdienstanbieter (ISP), verschiedene Netzkomponenten und Server, aus denen das Internet besteht und die Nachrichten weiterleiten, Regierungsbehörden oder sogar ein Angreifer innerhalb des eigenen Geräts, auf dem der Algorithmus ausgeführt wird. Gegner können mehr Nachrichten in Echtzeit beobachten und sie unbemerkt im Nanosekundenbereich manipulieren, abhören oder zensieren.</p><p>Aus der langen Geschichte von Versuch und Irrtum in der Kryptographie ist ein grundlegendes Prinzip für verlässliche Sicherheit hervorgegangen: <u>Die Primitive müssen öffentlich analysiert werden können</u>. Das gegenteilige Vorgehen wird häufig als <strong>Sicherheit durch Obskurität (security by obscurity)</strong> bezeichnet; dessen Grenzen sind klar und dieser Ansatz gilt heute als überholt.</p><p>Dieses Prinzip wurde erstmals 11883 vom niederländischen Sprachwissenschaftler und Kryptographen Auguste Kerckhoffs formuliert und wird <strong>Kerckhoffs’ Prinzip (Kerckhoffs’s principle)</strong> genannt. Der US‑amerikanische Mathematiker, Informatiker, Kryptograph und Vater der Informationstheorie Claude Shannon drückte dasselbe Prinzip auch so aus: „Der Feind kennt das System (The enemy knows the system)“, also: „Beim Entwurf eines Systems muss man davon ausgehen, dass der Gegner das System kennt.“ Diese Formulierung ist als <strong>Shannons Maxime (Shannon’s maxim)</strong> bekannt.</p><p>Die Sicherheit eines Kryptosystems soll ausschließlich von der Geheimhaltung des Schlüssels abhängen; das System selbst darf auch dann sicher bleiben, wenn es bekannt ist – im Idealfall wird es sogar aktiv veröffentlicht, damit viele <strong>Kryptoanalytiker (cryptanalysts)</strong> es wie im Fall von AES prüfen können. Alles Geheime birgt stets das Risiko, offenzulegen, und stellt somit einen potenziellen Schwachpunkt dar. Daher ist es aus Sicht der Verteidiger umso günstiger, je weniger geheim gehalten werden muss. Ein großes, komplexes System wie ein vollständiges Kryptosystem über lange Zeit geheim zu halten, ist sehr schwierig, wohingegen es deutlich einfacher ist, lediglich den Schlüssel geheim zu halten. Selbst wenn ein Geheimnis doch einmal kompromittiert wird, ist es außerdem erheblich leichter, nur den betroffenen Schlüssel durch einen neuen zu ersetzen, als das gesamte Kryptosystem auszutauschen.</p><h2 id="비대칭-암호학">비대칭 암호학</h2><p>Viele reale Protokolle basieren tatsächlich auf symmetrischer Kryptographie. Dieses Vorgehen setzt allerdings voraus, dass sich die beteiligten Parteien zumindest einmal physisch treffen, um einen gemeinsamen Schlüssel festzulegen. Es stellt sich also die Frage, wie man im Vorfeld einen Schlüssel bestimmt und sicher teilt – dies wird als <strong>Schlüsselverteilung (key distribution)</strong> bezeichnet. Das Problem der Schlüsselverteilung galt lange als sehr schwierig, bis es in der zweiten Hälfte der 11970er Jahre durch die Entwicklung einer neuen Klasse von kryptographischen Algorithmen gelöst wurde: der <strong>asymmetrischen Kryptographie (asymmetric cryptography)</strong> oder <strong>Public‑Key‑Kryptographie (public key cryptography)</strong>.</p><p>Typische asymmetrische kryptographische Primitive sind <strong>Schlüsselaustausch (key exchange)</strong>, <strong>asymmetrische Verschlüsselung (asymmetric encryption)</strong> und <strong>digitale Signaturen (digital signatures)</strong>.</p><h3 id="키-교환">키 교환</h3><p><strong>Schlüsselaustausch</strong> funktioniert grob wie folgt:</p><ol><li>Alice und Bob einigen sich auf einen gemeinsamen Parametersatz $G$.<li>Alice und Bob wählen jeweils ihren eigenen <strong>geheimen Schlüssel (private key)</strong> $a$ bzw. $b$.<li>Alice und Bob kombinieren den gemeinsamen Parametersatz $G$ mit ihren geheimen Schlüsseln $a$ und $b$, um ihre <strong>öffentlichen Schlüssel (public keys)</strong> $A = f(G,a)$ bzw. $B = f(G,b)$ zu berechnen, und veröffentlichen diese.<li>Alice berechnet mit Bobs öffentlichem Schlüssel $B = f(G,b)$ und ihrem eigenen geheimen Schlüssel $a$ den Wert $f(B,a) = f(f(G,b),a)$; Bob berechnet entsprechend mit Alices öffentlichem Schlüssel $A = f(G,a)$ und seinem geheimen Schlüssel $b$ den Wert $f(A,b) = f(f(G,a),b)$.<li>Wählt man eine geeignete Funktion $f$ mit der Eigenschaft $f(f(G,a),b) = f(f(G,b),a)$, so teilen Alice und Bob am Ende dasselbe Geheimnis. Ein Dritter kennt zwar $G$ sowie die öffentlichen Schlüssel $A = f(G,a)$ und $B = f(G,b)$, kann daraus aber nicht $f(A,b)$ rekonstruieren und erfährt das Geheimnis somit nicht.</ol><p>Das auf diese Weise geteilte Geheimnis wird üblicherweise als geheimer Schlüssel für die <a href="#symmetrische-verschlüsselung">symmetrische Verschlüsselung</a> verwendet, um später weitere Nachrichten auszutauschen.</p><p>Der erste veröffentlichte und bis heute bekannteste Schlüsselaustausch‑Algorithmus ist der nach seinen beiden Erfindern Diffie und Hellman benannte Diffie‑Hellman‑Schlüsselaustausch.</p><p>Auch der Diffie‑Hellman‑Schlüsselaustausch hat jedoch Grenzen. Betrachten wir den Fall, dass ein Angreifer die öffentlichen Schlüssel $A = f(G,a)$ und $B = f(G,b)$ während des Austauschs abfängt und jeweils durch seinen eigenen öffentlichen Schlüssel $M = f(G,m)$ ersetzt, bevor er sie an Alice und Bob weiterleitet. Dann teilen Alice und der Angreifer ein falsches Geheimnis $f(M,a) = f(A,m)$, während Bob und der Angreifer ein anderes falsches Geheimnis $f(M,b) = f(B,m)$ teilen. Der Angreifer kann sich somit gegenüber Alice als Bob und gegenüber Bob als Alice ausgeben. Eine solche Situation bezeichnet man als erfolgreichen Angriff eines <u><strong>Man‑in‑the‑Middle‑Angreifers (MITM)</strong> auf das Protokoll</u>. Der Schlüsselaustausch allein löst also das Vertrauensproblem nicht, vereinfacht aber das Verfahren erheblich, wenn viele Teilnehmer beteiligt sind.</p><h3 id="비대칭-암호화">비대칭 암호화</h3><p>Nach der Erfindung des Diffie‑Hellman‑Schlüsselaustauschs folgten schnell weitere Entwicklungen, darunter der <strong>RSA‑Algorithmus (RSA algorithm)</strong>, benannt nach den Nachnamen seiner Erfinder Ronald Rivest, Adi Shamir und Leonard Adleman. RSA umfasst zwei Primitive: öffentliche‑Schlüssel‑Verschlüsselung (asymmetrische Verschlüsselung) und digitale Signaturen; beide gehören zur asymmetrischen Kryptographie.</p><p>Bei der <strong>asymmetrischen Verschlüsselung</strong> ist das grundlegende Ziel, nämlich die Vertraulichkeit einer Nachricht durch Verschlüsselung sicherzustellen, dem der <a href="#symmetrische-verschlüsselung">symmetrischen Verschlüsselung</a> ähnlich. Im Gegensatz dazu verwendet man bei der asymmetrischen Verschlüsselung jedoch nicht denselben Schlüssel für Ver- und Entschlüsselung, sondern zwei verschiedene:</p><ul><li>Sie arbeitet mit einem Schlüsselpaar aus öffentlichem und privatem Schlüssel.<li>Jeder kann mit dem öffentlichen Schlüssel verschlüsseln, aber nur die Person mit dem privaten Schlüssel kann entschlüsseln.</ul><p>Man kann sich das folgendermaßen vorstellen:</p><ol><li>Es gibt eine offene Kiste (öffentlicher Schlüssel), in die jeder eine Nachricht legen und anschließend zuschließen kann; ist sie einmal verschlossen, kann sie nur Bob mit seinem Schlüssel (privater Schlüssel) wieder öffnen.<li>Alice legt ihre Nachricht in die Kiste und schließt sie (verschlüsselt sie), bevor sie sie an Bob schickt.<li>Bob erhält die verschlossene Kiste (die verschlüsselte Nachricht) und öffnet sie mit seinem privaten Schlüssel, um die Nachricht zu lesen (zu entschlüsseln).</ol><h3 id="전자서명">전자서명</h3><p>RSA bietet neben asymmetrischer Verschlüsselung auch <strong>digitale Signaturen</strong>. Diese Primitive ist äußerst hilfreich für den Vertrauensaufbau zwischen Alice und Bob. Beim Signieren einer Nachricht verwendet der Unterzeichner seinen privaten Schlüssel; zur Überprüfung der Echtheit verwenden andere die signierte Nachricht, die Signatur und den öffentlichen Schlüssel des Unterzeichners.</p><h2 id="암호학의-효용">암호학의 효용</h2><p>Da das Ziel der Kryptographie der Schutz von Protokollen gegen feindliche Handlungen ist, hängt ihr Nutzen davon ab, welches Ziel das jeweilige Protokoll verfolgt. Die meisten kryptographischen Primitive und Protokolle besitzen eine oder mehrere der folgenden Eigenschaften:</p><ul><li><strong>Vertraulichkeit (confidentiality)</strong>: Bestimmte Informationen werden gegenüber Unbefugten verborgen und geschützt.<li><strong>Authentifizierung (authentication)</strong>: Identifikation des Kommunikationspartners (z. B. Überprüfung, ob eine empfangene Nachricht tatsächlich von Alice stammt).</ul><h2 id="암호학-생태계">암호학 생태계</h2><pre><code class="language-mermaid">flowchart TD
    Alice[Kryptographie-Forscherin]-- erfindet Primitive --&gt;Primitive(Neuer Primitive-Vorschlag)
    Alice-- entwirft Protokolle --&gt;Protocol(Neuer Protokollvorschlag)
    Alice-. richtet Wettbewerb aus .-&gt;C(Algorithmus-Wettbewerb)

    David[Private Industrie]-. finanzielle Förderung .-&gt;Alice
    David-. richtet Wettbewerb aus .-&gt;C

    Eve[Behörde]-. finanzielle Förderung .-&gt;Alice
    Eve-. richtet Wettbewerb aus .-&gt;C

    Primitive --&gt; t1{"Ist es implementierbar?"}
    t1-- Ja --&gt;Protocol
    t1-- Nein --&gt;term1@{ shape: framed-circle, label: "Stop" }

    Protocol-- Teilnahme am Wettbewerb --&gt;C
    Protocol-- Standardisierung --&gt;Standard(Standard)
    Protocol-- Patentanmeldung --&gt;Patent(Ausgelaufenes Patent)
    Protocol-- Implementierung --&gt;Library(Bibliothek)
    
    C-- Wettbewerbsgewinn --&gt;Standard
    C-- Ausscheiden --&gt;term2@{ shape: framed-circle, label: "Stop" }

    Standard-- Implementierung --&gt;Library
    Standard-- Ausscheiden --&gt;term3@{ shape: framed-circle, label: "Stop" }

    Patent-- Ausscheiden --&gt;term2@{ shape: framed-circle, label: "Stop" }
    Patent-- Standardisierung --&gt;Standard
    Patent-- Implementierung --&gt;Library

    Library-- Standardisierung --&gt;Standard
    Library-- Sicherheitsbruch --&gt;term4@{ shape: framed-circle, label: "Stop" }
</code></pre>]]> </content> </entry> <entry><title xml:lang="de">Lineare Abbildungen, Nullraum, Bild</title><link href="https://www.yunseo.kim/de/posts/linear-transformation-nullspace-and-image/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/linear-transformation-nullspace-and-image/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/linear-transformation-nullspace-and-image/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/linear-transformation-nullspace-and-image/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/linear-transformation-nullspace-and-image/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/linear-transformation-nullspace-and-image/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/linear-transformation-nullspace-and-image/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/linear-transformation-nullspace-and-image/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/linear-transformation-nullspace-and-image/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/linear-transformation-nullspace-and-image/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/linear-transformation-nullspace-and-image/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/linear-transformation-nullspace-and-image/" rel="alternate" type="text/html" hreflang="am" /><published>2025-09-18T00:00:00+09:00</published> <updated>2025-09-18T00:00:00+09:00</updated> <id>https://www.yunseo.kim/de/posts/linear-transformation-nullspace-and-image/</id> <author> <name>Yunseo Kim</name> </author> <category term="Mathematics" /> <category term="Linear Algebra" /> <summary xml:lang="de">Einführung in lineare Abbildungen: Definition sowie die Unterräume Nullraum (Kern) und Bild. Außerdem Nullität und Rang mit zentralen Sätzen wie dem Dimensionssatz.</summary> <content type="html" xml:lang="de"> <![CDATA[<p>Einführung in lineare Abbildungen: Definition sowie die Unterräume Nullraum (Kern) und Bild. Außerdem Nullität und Rang mit zentralen Sätzen wie dem Dimensionssatz.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="prerequisites">Prerequisites</h2><ul><li><a href="/de/posts/vectors-and-linear-combinations/">Vektoren und lineare Kombinationen</a><li><a href="/de/posts/vector-spaces-subspaces-and-matrices/">Vektorräume, Unterräume und Matrizen</a><li><a href="posts/linear-dependence-and-independence-basis-and-dimension/">Lineare Abhängigkeit und Unabhängigkeit, Basis und Dimension</a><li>Injektion, Surjektion</ul><h2 id="lineare-abbildungen">Lineare Abbildungen</h2><p>Eine Abbildung, die die Struktur von Vektorräumen bewahrt, heißt <strong>lineare Abbildung (linear transformation)</strong>. Sie ist ein zentrales Konzept in der reinen und angewandten Mathematik, den Sozial- und Naturwissenschaften sowie der Technik.</p><blockquote class="prompt-info"><p><strong>Definition</strong><br /> Seien $\mathbb{V}$ und $\mathbb{W}$ $F$-Vektorräume. Eine Abbildung $T: \mathbb{V} \to \mathbb{W}$ heißt <strong>lineare Abbildung (linear transformation)</strong> von $\mathbb{V}$ nach $\mathbb{W}$, wenn für alle $\mathbf{x}, \mathbf{y} \in \mathbb{V}$ und $c \in F$ gilt:</p><ol><li>$T(\mathbf{x}+\mathbf{y}) = T(\mathbf{x}) + T(\mathbf{y})$<li>$T(c\mathbf{x}) = cT(\mathbf{x})$</ol></blockquote><p>Statt „$T$ ist eine lineare Abbildung“ sagt man kurz: $T$ ist <strong>linear</strong>. Eine lineare Abbildung $T: \mathbb{V} \to \mathbb{W}$ erfüllt die folgenden vier Eigenschaften.</p><blockquote class="prompt-info"><ol><li>$T$ linear $\quad \Rightarrow \quad $ $T(\mathbf{0}) = \mathbf{0}$<li>$T$ linear $\quad \Leftrightarrow \quad $ $T(c\mathbf{x} + \mathbf{y}) = cT(\mathbf{x}) + T(\mathbf{y}) \; \forall \, \mathbf{x}, \mathbf{y} \in \mathbb{V},\, c \in F$<li>$T$ linear $\quad \Rightarrow \quad $ $T(\mathbf{x} - \mathbf{y}) = T(\mathbf{x}) - T(\mathbf{y}) \; \forall \, \mathbf{x}, \mathbf{y} \in \mathbb{V}$<li>$T$ linear $\quad \Leftrightarrow \quad $ $T\left( \sum_{i=1}^n a_i \mathbf{x}_i \right) = \sum_{i=1}^n a_i T(\mathbf{x}_i)$</ol></blockquote><blockquote class="prompt-tip"><p>Um die Linearität nachzuweisen, verwendet man in der Praxis häufig Eigenschaft 2.</p></blockquote><blockquote class="prompt-tip"><p>Lineare Algebra lässt sich in der Geometrie breit einsetzen, da viele zentrale geometrische Transformationen linear sind. Insbesondere zählen <strong>Rotation</strong>, <strong>Spiegelung</strong> und <strong>Projektion</strong> zu den linearen Abbildungen.</p></blockquote><p>Die folgenden beiden linearen Abbildungen treten besonders häufig auf.</p><blockquote class="prompt-info"><p><strong>Identitätsabbildung und Nullabbildung</strong><br /> Für $F$-Vektorräume $\mathbb{V}, \mathbb{W}$:</p><ul><li><strong>Identitätsabbildung (identity transformation)</strong>: $I_\mathbb{V}: \mathbb{V} \to \mathbb{V}$, definiert durch $I_\mathbb{V}(\mathbf{x}) = \mathbf{x}$ für alle $\mathbf{x} \in \mathbb{V}$<li><strong>Nullabbildung (zero transformation)</strong>: $T_0: \mathbb{V} \to \mathbb{W}$, definiert durch $T_0(\mathbf{x}) = \mathbf{0}$ für alle $\mathbf{x} \in \mathbb{V}$</ul></blockquote><p>Darüber hinaus fallen viele Konzepte unter lineare Abbildungen.</p><blockquote class="prompt-tip"><p><strong>Beispiele für lineare Abbildungen</strong></p><ul><li>Rotation<li>Spiegelung<li>Projektion<li><a href="/de/posts/vector-spaces-subspaces-and-matrices/#transponierte-matrix-symmetrische-matrix-schiefsymmetrische-matrix">Transposition</a><li>Ableitung differenzierbarer Funktionen<li>Integral stetiger Funktionen</ul></blockquote><h2 id="nullraum-und-bild">Nullraum und Bild</h2><h3 id="definition-von-nullraum-und-bild">Definition von Nullraum und Bild</h3><blockquote class="prompt-info"><p><strong>Definition</strong><br /> Für Vektorräume $\mathbb{V}, \mathbb{W}$ und eine lineare Abbildung $T: \mathbb{V} \to \mathbb{W}$:</p><ul><li><p><strong>Nullraum (null space)</strong> bzw. <strong>Kern (kernel)</strong>: die Menge aller $\mathbf{x} \in \mathbb{V}$ mit $T(\mathbf{x}) = \mathbf{0}$; bezeichnet mit $\mathrm{N}(T)$</p>\[\mathrm{N}(T) = \{ \mathbf{x} \in \mathbb{V}: T(\mathbf{x}) = \mathbf{0} \}\]<li><p><strong>Bild (image)</strong> bzw. <strong>Wertebereich (range)</strong>: die von $T$ angenommenen Funktionswerte; Teilmenge von $\mathbb{W}$, bezeichnet mit $\mathrm{R}(T)$</p>\[\mathrm{R}(T) = \{ T(\mathbf{x}): \mathbf{x} \in \mathbb{V} \}\]</ul></blockquote><blockquote class="prompt-tip"><p><strong>z. B.</strong> Für Vektorräume $\mathbb{V}, \mathbb{W}$, die Identitätsabbildung $I: \mathbb{V} \to \mathbb{V}$ und die Nullabbildung $T_0: \mathbb{V} \to \mathbb{W}$ gilt:</p><ul><li>$\mathrm{N}(I) = \{\mathbf{0}\}$<li>$\mathrm{R}(I) = \mathbb{V}$<li>$\mathrm{N}(T_0) = \mathbb{V}$<li>$\mathrm{R}(T_0) = \{\mathbf{0}\}$</ul></blockquote><p>Wichtig und immer wieder verwendet: Nullraum und Bild einer linearen Abbildung sind <a href="/de/posts/vector-spaces-subspaces-and-matrices/#unterräume">Unterräume</a> der jeweiligen Vektorräume.</p><blockquote class="prompt-info"><p><strong>Satz 1</strong><br /> Für Vektorräume $\mathbb{V}, \mathbb{W}$ und eine lineare Abbildung $T: \mathbb{V} \to \mathbb{W}$ sind $\mathrm{N}(T)$ bzw. $\mathrm{R}(T)$ Unterräume von $\mathbb{V}$ bzw. $\mathbb{W}$.</p><p><strong>Beweis</strong><br /> Bezeichne die Nullvektoren von $\mathbb{V}, \mathbb{W}$ mit $\mathbf{0}_\mathbb{V}, \mathbf{0}_\mathbb{W}$.</p><p>Aus $T(\mathbf{0}_\mathbb{V}) = \mathbf{0}_\mathbb{W}$ folgt $\mathbf{0}_\mathbb{V} \in \mathrm{N}(T)$. Für $\mathbf{x}, \mathbf{y} \in \mathrm{N}(T)$ und $c \in F$ gilt zudem:</p>\[\begin{align*} T(\mathbf{x} + \mathbf{y}) &amp;= T(\mathbf{x}) + T(\mathbf{y}) = \mathbf{0}_\mathbb{W} + \mathbf{0}_\mathbb{W} = \mathbf{0}_\mathbb{W}, \\ T(c\mathbf{x}) &amp;= cT(\mathbf{x}) = c\mathbf{0}_\mathbb{W} = \mathbf{0}_\mathbb{W}. \end{align*}\]<p>$\therefore$ <a href="/de/posts/vector-spaces-subspaces-and-matrices/#unterräume">Da $\mathbf{0}_\mathbb{V} \in \mathrm{N}(T)$ sowie $\mathbf{x} + \mathbf{y} \in \mathrm{N}(T)$ und $c\mathbf{x} \in \mathrm{N}(T)$ gilt, ist $\mathrm{N}(T)$ ein Unterraum von $\mathbb{V}$</a>.</p><p>Ebenso folgt aus $T(\mathbf{0}_\mathbb{V}) = \mathbf{0}_\mathbb{W}$, dass $\mathbf{0}_\mathbb{W} \in \mathrm{R}(T)$ ist. Für alle $\mathbf{x}, \mathbf{y} \in \mathrm{R}(T)$ und $c \in F$ existieren $\mathbf{v}, \mathbf{w} \in \mathbb{V}$ mit $T(\mathbf{v}) = \mathbf{x}$ und $T(\mathbf{w}) = \mathbf{y}$, sodass</p>\[\begin{align*} T(\mathbf{v} + \mathbf{w}) &amp;= T(\mathbf{v}) + T(\mathbf{w}) = \mathbf{x} + \mathbf{y}, \\ T(c\mathbf{v}) &amp;= cT(\mathbf{v}) = c\mathbf{x}. \end{align*}\]<p>$\therefore$ <a href="/de/posts/vector-spaces-subspaces-and-matrices/#unterräume">Da $\mathbf{0}_\mathbb{W} \in \mathrm{R}(T)$ sowie $\mathbf{x} + \mathbf{y} \in \mathrm{R}(T)$ und $c\mathbf{x} \in \mathrm{R}(T)$ gilt, ist $\mathrm{R}(T)$ ein Unterraum von $\mathbb{W}$</a>. $\blacksquare$</p></blockquote><p>Kennt man für Vektorräume $\mathbb{V}, \mathbb{W}$ und eine lineare Abbildung $T: \mathbb{V} \to \mathbb{W}$ eine <a href="/de/posts/linear-dependence-and-independence-basis-and-dimension/#basis">Basis</a> $\beta = \{\mathbf{v}_1, \mathbf{v}_2, \dots, \mathbf{v}_n \}$ von $\mathbb{V}$, so lässt sich eine <a href="/de/posts/vectors-and-linear-combinations/#erzeugung">Erzeugermenge</a> von $\mathrm{R}(T)$ wie folgt finden.</p><blockquote class="prompt-info"><p><strong>Satz 2</strong><br /> Für Vektorräume $\mathbb{V}, \mathbb{W}$, eine lineare Abbildung $T: \mathbb{V} \to \mathbb{W}$ und eine <a href="/de/posts/linear-dependence-and-independence-basis-and-dimension/#basis">Basis</a> $\beta = \{\mathbf{v}_1, \mathbf{v}_2, \dots, \mathbf{v}_n \}$ von $\mathbb{V}$ gilt</p>\[\mathrm{R}(T) = \mathrm{span}(\{T(\mathbf{v}): \mathbf{v} \in \beta \}) = \mathrm{span}(\{T(\mathbf{v}_1), T(\mathbf{v}_2), \dots, T(\mathbf{v}_n) \})\]<p><strong>Beweis</strong></p>\[T(\mathbf{v}_i) \in \mathrm{R}(T) \quad \forall \mathbf{v}_i \in \beta.\]<p>Da $\mathrm{R}(T)$ ein Unterraum ist, folgt nach <strong>Satz 2</strong> aus <a href="/de/posts/vector-spaces-subspaces-and-matrices/#unterräume">Vektorräume, Unterräume und Matrizen</a>:</p>\[\mathrm{span}(\{T(\mathbf{v}_1), T(\mathbf{v}_2), \dots, T(\mathbf{v}_n) \}) = \mathrm{span}(\{T(\mathbf{v}_i): \mathbf{v}_i \in \beta \}) \subseteq \mathrm{R}(T).\]<p>Außerdem gilt</p>\[\forall \mathbf{w} \in \mathrm{R}(T) \ (\exists \mathbf{v} \in \mathbb{V} \ (\mathbf{w} = T(\mathbf{v}))).\]<p>Da $\beta$ eine Basis von $\mathbb{V}$ ist,</p>\[\mathbf{v} = \sum_{i=1}^n a_i \mathbf{v}_i \quad \text{(mit } a_1, a_2, \dots, a_n \in F \text{)}.\]<p>Wegen der Linearität von $T$ gilt</p>\[\mathbf{w} = T(\mathbf{v}) = \sum_{i=1}^n a_i T(\mathbf{v}_i) \in \mathrm{span}(\{T(\mathbf{v}_i): \mathbf{v}_i \in \beta \})\] \[\mathrm{R}(T) \subseteq \mathrm{span}(\{T(\mathbf{v}_i): \mathbf{v}_i \in \beta \}) = \mathrm{span}(\{T(\mathbf{v}_1), T(\mathbf{v}_2), \dots, T(\mathbf{v}_n) \}).\]<p>$\therefore$ Da zugleich $\mathrm{R}(T) \supseteq \mathrm{span}({T(\mathbf{v}_i): \mathbf{v}_i \in \beta })$ und $\mathrm{R}(T) \subseteq \mathrm{span}({T(\mathbf{v}_i): \mathbf{v}_i \in \beta })$ gilt, folgt $\mathrm{R}(T) = \mathrm{span}({T(\mathbf{v}): \mathbf{v} \in \beta })$. $\blacksquare$</p></blockquote><p>Dieser Satz gilt auch, wenn $\beta$ unendlich ist.</p><h3 id="dimensionssatz">Dimensionssatz</h3><p>Da Nullraum und Bild besonders wichtige Unterräume sind, versieht man auch ihre <a href="/de/posts/linear-dependence-and-independence-basis-and-dimension/#dimension">Dimension</a> mit speziellen Bezeichnungen.</p><blockquote class="prompt-info"><p>Für Vektorräume $\mathbb{V}, \mathbb{W}$ und eine lineare Abbildung $T: \mathbb{V} \to \mathbb{W}$ seien $\mathrm{N}(T), \mathrm{R}(T)$ endlichdimensional.</p><ul><li><strong>Nullität (nullity)</strong>: die Dimension von $\mathrm{N}(T)$; notiert als $\mathrm{nullity}(T)$<li><strong>Rang (rank)</strong>: die Dimension von $\mathrm{R}(T)$; notiert als $\mathrm{rank}(T)$</ul></blockquote><p>Bei linearen Abbildungen gilt: Je größer die Nullität, desto kleiner der Rang – und umgekehrt.</p><blockquote class="prompt-info"><p><strong>Satz 3: Dimensionssatz (dimension theorem)</strong><br /> Für Vektorräume $\mathbb{V}, \mathbb{W}$ und $T: \mathbb{V}\to \mathbb{W}$ gilt, falls $\mathbb{V}$ endlichdimensional ist:</p>\[\mathrm{nullity}(T) + \mathrm{rank}(T) = \dim(\mathbb{V})\]</blockquote><h4 id="beweis">Beweis</h4><p>Sei $\dim(\mathbb{V}) = n$, $\mathrm{nullity}(T) = \dim(\mathrm{N}(T)) = k$, und sei $\{\mathbf{v}_1, \mathbf{v}_2, \dots, \mathbf{v}_k \}$ eine Basis von $\mathrm{N}(T)$.</p><p>Nach <a href="/de/posts/linear-dependence-and-independence-basis-and-dimension/#dimension-von-unterräumen">“Lineare Abhängigkeit und Unabhängigkeit, Basis und Dimension”, <strong>Korollar 6-1</strong></a> lässt sich $\{\mathbf{v}_1, \mathbf{v}_2, \dots, \mathbf{v}_k \}$ zu einer Basis $\beta = \{\mathbf{v}_1, \mathbf{v}_2, \dots, \mathbf{v}_n \}$ von $\mathbb{V}$ erweitern.</p><p>Wir zeigen nun, dass $S = \{T(\mathbf{v}_{k+1}), T(\mathbf{v}_{k+2}), \dots, T(\mathbf{v}_n) \}$ eine Basis von $\mathrm{R}(T)$ ist. Für $1 \leq i \leq k$ gilt $T(\mathbf{v}_i) = 0$, daher folgt aus <a href="#definition-von-nullraum-und-bild"><strong>Satz 2</strong></a>,</p>\[\begin{align*} \mathrm{R}(T) &amp;= \mathrm{span}(\{T(\mathbf{v}_1), T(\mathbf{v}_2), \dots, T(\mathbf{v}_n) \}) \\ &amp;= \mathrm{span}(\{T(\mathbf{v}_{k+1}), T(\mathbf{v}_{k+2}), \dots, T(\mathbf{v}_n) \}) \\ &amp;= \mathrm{span}(S). \end{align*}\]<p>Also ist $S$ eine Erzeugermenge von $\mathrm{R}(T)$. Nach <a href="/de/posts/linear-dependence-and-independence-basis-and-dimension/#dimension"><strong>Korollar 5-2 zum Austauschsatz</strong></a> genügt es, die lineare Unabhängigkeit von $S$ zu zeigen.</p><p>Gelte $\sum_{i=k+1}^n b_i T(\mathbf{v}_i) = 0$ (mit $b_{k+1}, b_{k+2}, \dots, b_n \in F$). Aus der Linearität von $T$ folgt</p>\[\sum_{i=k+1}^n b_i T(\mathbf{v}_i) = 0 \Leftrightarrow T\left(\sum_{i=k+1}^n b_i \mathbf{v}_i \right) = 0 \Leftrightarrow \sum_{i=k+1}^n b_i \mathbf{v}_i \in \mathrm{N}(T).\]<p>Also existieren $c_1, \dots, c_k \in F$ mit</p>\[\sum_{i=k+1}^n b_i \mathbf{v}_i = \sum_{i=1}^k c_i \mathbf{v}_i \ \Leftrightarrow\ \sum_{i=1}^k (-c_i)\mathbf{v}_i + \sum_{i=k+1}^n b_i \mathbf{v}_i = 0.\]<p>Da $\beta$ eine Basis von $\mathbb{V}$ ist, ist die einzige Lösung</p>\[c_1 = \cdots = c_k = b_{k+1} = \cdots = b_n = 0,\]<p>und damit</p>\[\sum_{i=k+1}^n b_i T(\mathbf{v}_i) = 0 \quad \Rightarrow \quad b_i = 0.\]<p>Somit ist $S$ linear unabhängig und eine Basis von $\mathrm{R}(T)$.</p>\[\therefore \mathrm{rank}(T) = n - k = \dim{\mathbb{V}} - \mathrm{nullity}(T). \blacksquare\]<h3 id="lineare-abbildungen-sowie-injektion-und-surjektion">Lineare Abbildungen sowie Injektion und Surjektion</h3><p>Injektivität und Surjektivität stehen in engem Zusammenhang mit Rang und Nullität.</p><blockquote class="prompt-info"><p><strong>Satz 4</strong><br /> Für Vektorräume $\mathbb{V}, \mathbb{W}$ und eine lineare Abbildung $T: \mathbb{V} \to \mathbb{W}$ gilt</p>\[T \text{ ist injektiv } \quad \Leftrightarrow \quad \mathrm{N}(T) = \{\mathbf{0}\}.\]</blockquote><blockquote class="prompt-info"><p><strong>Satz 5</strong><br /> Haben die endlichdimensionalen Vektorräume $\mathbb{V}, \mathbb{W}$ dieselbe Dimension, so sind für eine lineare Abbildung $T: \mathbb{V} \to \mathbb{W}$ die folgenden Aussagen äquivalent:</p><ol><li>$T$ ist injektiv.<li>$\mathrm{nullity}(T) = 0$<li>$\mathrm{rank}(T) = \dim(\mathbb{V})$<li>$T$ ist surjektiv.</ol></blockquote><p>Mit dem <a href="#dimensionssatz">Dimensionssatz</a>, den <a href="#lineare-abbildungen">Eigenschaften linearer Abbildungen 1 und 3</a> sowie <a href="/de/posts/linear-dependence-and-independence-basis-and-dimension/#dimension-von-unterräumen">“Lineare Abhängigkeit und Unabhängigkeit, Basis und Dimension”, <strong>Satz 6</strong></a> lassen sich <strong>Satz 4</strong> und <strong>Satz 5</strong> beweisen.</p><p>Beide Sätze sind nützlich, um zu entscheiden, ob eine gegebene lineare Abbildung injektiv oder surjektiv ist.</p><blockquote class="prompt-warning"><p>Für einen unendlichdimensionalen Vektorraum $\mathbb{V}$ und $T: \mathbb{V} \to \mathbb{V}$ sind Injektivität und Surjektivität nicht äquivalent.</p></blockquote><p>Ist eine lineare Abbildung injektiv, kann folgender Satz beim Test der linearen Unabhängigkeit nützlich sein.</p><blockquote class="prompt-info"><p><strong>Satz 6</strong><br /> Für Vektorräume $\mathbb{V}, \mathbb{W}$, eine injektive lineare Abbildung $T: \mathbb{V} \to \mathbb{W}$ und eine Teilmenge $S \subseteq \mathbb{V}$ gilt:</p>\[S \text{ ist linear unabhängig } \quad \Leftrightarrow \quad \{T(\mathbf{v}): \mathbf{v} \in S \} \text{ ist linear unabhängig.}\]</blockquote><h2 id="lineare-abbildungen-und-basen">Lineare Abbildungen und Basen</h2><p>Eine zentrale Eigenschaft linearer Abbildungen ist: Ihr Verhalten ist durch die Wirkung auf eine Basis festgelegt.</p><blockquote class="prompt-info"><p><strong>Satz 7</strong><br /> Seien $\mathbb{V}, \mathbb{W}$ $F$-Vektorräume, $\{\mathbf{v}_1, \mathbf{v}_2, \dots, \mathbf{v}_n \}$ eine Basis von $\mathbb{V}$ und $\mathbf{w}_1, \mathbf{w}_2, \dots, \mathbf{w}_n \in \mathbb{W}$ Vektoren. Dann existiert genau eine lineare Abbildung $T: \mathbb{V} \to \mathbb{W}$ mit</p>\[T(\mathbf{v}_i) = \mathbf{w}_i \quad \text{für } i = 1, 2, \dots, n.\]<p><strong>Beweis</strong><br /> Für jedes $\mathbf{x} \in \mathbb{V}$ existiert eindeutig eine Darstellung</p>\[\mathbf{x} = \sum_{i=1}^n a_i \mathbf{v}_i \quad (a_1, a_2, \dots, a_n \in F).\]<p>Definiere die lineare Abbildung $T: \mathbb{V} \to \mathbb{W}$ durch</p>\[T(\mathbf{x}) = T\left( \sum_{i=1}^n a_i \mathbf{v}_i \right) = \sum_{i=1}^n a_i \mathbf{w}_i.\]<p>i) Für $i = 1, 2, \dots, n$ gilt $T(\mathbf{v}_i) = \mathbf{w}_i$.</p><p>ii) Sei $U: \mathbb{V} \to \mathbb{W}$ eine weitere lineare Abbildung mit $U(\mathbf{v}_i) = \mathbf{w}_i$ für $i = 1, 2, \dots, n$. Für $\mathbf{x} = \sum_{i=1}^n a_i \mathbf{v}_i \in \mathbb{V}$ gilt dann</p>\[U(\mathbf{x}) = \sum_{i=1}^n a_i U(\mathbf{v}_i) = \sum_{i=1}^n a_i \mathbf{w}_i = T(\mathbf{x})\] \[\therefore U = T.\]<p>Aus i) und ii) folgt: Die lineare Abbildung mit $T(\mathbf{v}_i) = \mathbf{w}_i$ für $i = 1, 2, \dots, n$ ist eindeutig gegeben durch</p>\[T(\mathbf{x}) = T\left( \sum_{i=1}^n a_i \mathbf{v}_i \right) = \sum_{i=1}^n a_i \mathbf{w}_i.\]<p>$\blacksquare$</p><p><strong>Korollar 7-1</strong><br /> Seien $\mathbb{V}, \mathbb{W}$ Vektorräume und enthalte $\mathbb{V}$ eine endliche Basis $\{\mathbf{v}_1, \mathbf{v}_2, \dots, \mathbf{v}_n \}$. Erfüllen zwei lineare Abbildungen $U, T: \mathbb{V} \to \mathbf{W}$ für $i = 1, 2, \dots, n$ die Gleichheit $U(\mathbf{v}_i) = T(\mathbf{v}_i)$, so gilt $U = T$.<br /> Das heißt: <u>Stimmen die Funktionswerte auf einer Basis überein, so sind die linearen Abbildungen gleich.</u></p></blockquote>]]> </content> </entry> <entry><title xml:lang="de">Lineare Abhängigkeit und Unabhängigkeit, Basis und Dimension</title><link href="https://www.yunseo.kim/de/posts/linear-dependence-and-independence-basis-and-dimension/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/linear-dependence-and-independence-basis-and-dimension/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/linear-dependence-and-independence-basis-and-dimension/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/linear-dependence-and-independence-basis-and-dimension/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/linear-dependence-and-independence-basis-and-dimension/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/linear-dependence-and-independence-basis-and-dimension/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/linear-dependence-and-independence-basis-and-dimension/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/linear-dependence-and-independence-basis-and-dimension/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/linear-dependence-and-independence-basis-and-dimension/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/linear-dependence-and-independence-basis-and-dimension/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/linear-dependence-and-independence-basis-and-dimension/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/linear-dependence-and-independence-basis-and-dimension/" rel="alternate" type="text/html" hreflang="am" /><published>2025-09-16T00:00:00+09:00</published> <updated>2025-10-25T21:21:39+09:00</updated> <id>https://www.yunseo.kim/de/posts/linear-dependence-and-independence-basis-and-dimension/</id> <author> <name>Yunseo Kim</name> </author> <category term="Mathematics" /> <category term="Linear Algebra" /> <summary xml:lang="de">Überblick über lineare Abhängigkeit und Unabhängigkeit sowie Basis und Dimension von Vektorräumen: Definitionen, zentrale Sätze, Korollare und anschauliche Beispiele.</summary> <content type="html" xml:lang="de"> <![CDATA[<p>Überblick über lineare Abhängigkeit und Unabhängigkeit sowie Basis und Dimension von Vektorräumen: Definitionen, zentrale Sätze, Korollare und anschauliche Beispiele.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="prerequisites">Prerequisites</h2><ul><li><a href="/de/posts/vectors-and-linear-combinations/">Vektoren und lineare Kombinationen</a><li><a href="/de/posts/vector-spaces-subspaces-and-matrices/">Vektorräume, Unterräume und Matrizen</a></ul><h2 id="lineare-abhängigkeit-und-lineare-unabhängigkeit">Lineare Abhängigkeit und lineare Unabhängigkeit</h2><p>Für einen <a href="/de/posts/vector-spaces-subspaces-and-matrices/#vektorräume">Vektorraum</a> $\mathbb{V}$ und einen <a href="/de/posts/vector-spaces-subspaces-and-matrices/#unterräume">Unterraum</a> $\mathbb{W}$ wollen wir eine möglichst kleine endliche Teilmenge $S$ finden, die $\mathbb{W}$ <a href="/de/posts/vectors-and-linear-combinations/#lineare-kombination-cmathbfv--dmathbfw">erzeugt</a>.</p><p>Sei $S = \{\mathbf{u}_1, \mathbf{u}_2, \mathbf{u}_3, \mathbf{u}_4 \}$ mit $\mathrm{span}(S) = \mathbb{W}$. Wie entscheidet man, ob es eine echte Teilmenge von $S$ gibt, die $\mathbb{W}$ ebenfalls erzeugt? Das ist gleichbedeutend mit der Frage, ob sich ein aus $S$ entnommener Vektor als <a href="/de/posts/vectors-and-linear-combinations/#lineare-kombinationen-von-vektoren">lineare Kombination</a> der übrigen Vektoren schreiben lässt. Beispielsweise ist hierfür für $\mathbf{u}_4$ genau dann eine Darstellung durch die restlichen drei Vektoren möglich, wenn es Skalare $a_1, a_2, a_3$ gibt mit</p>\[\mathbf{u}_4 = a_1\mathbf{u}_1 + a_2\mathbf{u}_2 + a_3\mathbf{u}_3\]<p>Da es jedoch lästig wäre, für jedes der vier Elemente $\mathbf{u}_1, \mathbf{u}_2, \mathbf{u}_3, \mathbf{u}_4$ jeweils ein lineares Gleichungssystem aufzustellen, ändern wir die Gleichung geringfügig:</p>\[a_1\mathbf{u}_1 + a_2\mathbf{u}_2 + a_3\mathbf{u}_3 + a_4\mathbf{u}_4 = \mathbf{0}\]<p>Ist ein Vektor aus $S$ eine lineare Kombination der anderen, so existiert bei der Darstellung des Nullvektors als lineare Kombination der Elemente aus $S$ eine Wahl von Koeffizienten $a_1, a_2, a_3, a_4$, von denen mindestens einer ungleich $0$ ist. Die Umkehrung gilt ebenso: Existiert eine solche nichttriviale Darstellung des Nullvektors, so ist ein Vektor aus $S$ eine lineare Kombination der übrigen.</p><p>Dies verallgemeinert man zur Definition von <strong>linearer Abhängigkeit</strong> und <strong>linearer Unabhängigkeit</strong>.</p><blockquote class="prompt-info"><p><strong>Definition</strong><br /> Für eine Teilmenge $S$ eines Vektorraums $\mathbb{V}$ heißen $S$ und seine Vektoren <strong>linear abhängig (linearly dependent)</strong>, wenn es endlich viele paarweise verschiedene Vektoren $\mathbf{u}_1, \mathbf{u}_2, \dots, \mathbf{u}_n \in S$ und Skalare $a_1, a_2, \dots, a_n$, von denen mindestens einer nicht $0$ ist, gibt mit $a_1\mathbf{u}_1 + a_2\mathbf{u}_2 + \cdots + a_n\mathbf{u}_n = \mathbf{0}$. Andernfalls heißen sie <strong>linear unabhängig (linearly independent)</strong>.</p></blockquote><p>Für beliebige Vektoren $\mathbf{u}_1, \mathbf{u}_2, \dots, \mathbf{u}_n$ gilt: Wenn $a_1 = a_2 = \cdots = a_n = 0$, dann ist $a_1\mathbf{u}_1 + a_2\mathbf{u}_2 + \cdots + a_n\mathbf{u}_n = \mathbf{0}$. Dies heißt die <strong>triviale Darstellung des Nullvektors (trivial representation of 0)</strong>.</p><p>Für linear unabhängige Mengen gelten in jedem Vektorraum die folgenden drei Aussagen; insbesondere ist <strong>Proposition 3</strong> beim Testen der Unabhängigkeit einer endlichen Menge sehr nützlich.</p><blockquote class="prompt-info"><ul><li><strong>Proposition 1</strong>: Die leere Menge ist linear unabhängig. Linear abhängig kann nur eine nichtleere Menge sein.<li><strong>Proposition 2</strong>: Eine Menge, die nur aus einem einzigen von $0$ verschiedenen Vektor besteht, ist linear unabhängig.<li><strong>Proposition 3</strong>: Eine Menge ist genau dann linear unabhängig, wenn die Darstellung von $\mathbf{0}$ als lineare Kombination der gegebenen Vektoren nur trivial ist.</ul></blockquote><p>Wichtige Sätze:</p><blockquote class="prompt-info"><p><strong>Satz 1</strong><br /> Sei $\mathbb{V}$ ein Vektorraum und $S_1 \subseteq S_2 \subseteq \mathbb{V}$. Ist $S_1$ linear abhängig, so ist es auch $S_2$.</p><p><strong>Korollar 1-1</strong><br /> Sei $\mathbb{V}$ ein Vektorraum und $S_1 \subseteq S_2 \subseteq \mathbb{V}$. Ist $S_2$ linear unabhängig, so ist es auch $S_1$.</p></blockquote><blockquote class="prompt-info"><p><strong>Satz 2</strong><br /> Sei $\mathbb{V}$ ein Vektorraum und $S$ eine linear unabhängige Teilmenge. Für einen Vektor $\mathbf{v} \in \mathbb{V}$ mit $\mathbf{v} \notin S$ gilt: $S \cup \{\mathbf{v}\}$ ist genau dann linear abhängig, wenn $\mathbf{v} \in \mathrm{span}(S)$.</p><p>Anders ausgedrückt: <strong>Wenn keine echte Teilmenge von $S$ denselben Raum erzeugt wie $S$, dann ist $S$ linear unabhängig.</strong></p></blockquote><h2 id="basis-und-dimension">Basis und Dimension</h2><h3 id="basis">Basis</h3><p>Eine <a href="#lineare-abhängigkeit-und-lineare-unabhängigkeit">linear unabhängige</a> Erzeugermenge $S$ von $\mathbb{W}$ hat die Besonderheit, dass jeder Vektor aus $\mathbb{W}$ sich notwendigerweise als lineare Kombination der Elemente von $S$ darstellen lässt und diese Darstellung eindeutig ist (<strong>Satz 3</strong>). Daher nennt man eine linear unabhängige Erzeugermenge eines Vektorraums eine <strong>Basis (basis)</strong>.</p><blockquote class="prompt-info"><p><strong>Definition der Basis</strong><br /> Ist $\mathbb{V}$ ein Vektorraum und $\beta \subseteq \mathbb{V}$, so heißt $\beta$ eine <strong>Basis (basis)</strong> von $\mathbb{V}$, wenn $\beta$ linear unabhängig ist und $\mathbb{V}$ erzeugt. In diesem Fall sagt man: Die Vektoren in $\beta$ bilden eine Basis von $\mathbb{V}$.</p></blockquote><blockquote class="prompt-tip"><p>Es gilt $\mathrm{span}(\emptyset) = \{\mathbf{0}\}$ und $\emptyset$ ist linear unabhängig. Daher ist $\emptyset$ eine Basis des Nullunterraums.</p></blockquote><p>Insbesondere heißt die folgende spezielle Basis von $F^n$ die <strong>Standardbasis (standard basis)</strong> von $F^n$.</p><blockquote class="prompt-info"><p><strong>Definition der Standardbasis</strong><br /> Für den Vektorraum $F^n$ betrachten wir die Vektoren</p>\[\mathbf{e}_1 = (1,0,0,\dots,0),\ \mathbf{e}_2 = (0,1,0,\dots,0),\ \dots, \mathbf{e}_n = (0,0,0,\dots,1)\]<p>Dann ist $\{\mathbf{e}_1, \mathbf{e}_2, \dots, \mathbf{e}_n \}$ eine Basis von $F^n$; sie heißt die <strong>Standardbasis (standard basis)</strong> von $F^n$.</p></blockquote><blockquote class="prompt-info"><p><strong>Satz 3</strong><br /> Sei $\mathbb{V}$ ein Vektorraum und seien $\mathbf{u}_1, \mathbf{u}_2, \dots, \mathbf{u}_n \in \mathbb{V}$ paarweise verschieden. Dann ist $\beta = \{\mathbf{u}_1, \mathbf{u}_2, \dots, \mathbf{u}_n \}$ genau dann eine Basis von $\mathbb{V}$, wenn sich jeder Vektor $\mathbf{v} \in \mathbb{V}$ eindeutig als lineare Kombination der Vektoren aus $\beta$ schreiben lässt. Das heißt: Es existiert genau ein Skalar-$n$-Tupel $(a_1, a_2, \dots, a_n)$ mit</p>\[\mathbf{v} = a_1\mathbf{u}_1 + a_2\mathbf{u}_2 + \cdots + a_n\mathbf{u}_n\]</blockquote><p>Nach <strong>Satz 3</strong> gilt: Bilden $n$ verschiedene Vektoren $\mathbf{u}_1, \mathbf{u}_2, \dots, \mathbf{u}_n$ eine Basis des Vektorraums $\mathbb{V}$, so ist innerhalb dieses Raums zu gegebenem $\mathbf{v}$ das zugehörige Skalar-$n$-Tupel $(a_1, a_2, \dots, a_n)$ eindeutig bestimmt und umgekehrt. Wir werden dies später im Rahmen von <strong>Invertierbarkeit</strong> und <strong>Isomorphismus</strong> erneut zusammenfassen; in diesem Fall sind $\mathbb{V}$ und $F^n$ <u>wesentlich gleich</u>.</p><blockquote class="prompt-info"><p><strong>Satz 4</strong><br /> Sei $S$ eine endliche Menge mit $\mathrm{span}(S) = \mathbb{V}$. Dann enthält $S$ eine Teilmenge, die eine Basis von $\mathbb{V}$ ist. Insbesondere hat $\mathbb{V}$ in diesem Fall eine endliche Basis.</p></blockquote><blockquote class="prompt-tip"><p>Viele Vektorräume fallen in den Anwendungsbereich von <strong>Satz 4</strong>, aber nicht zwingend alle. <u>Eine Basis kann auch unendlich sein</u>.</p></blockquote><h3 id="dimension">Dimension</h3><blockquote class="prompt-info"><p><strong>Satz 5: Austauschsatz (replacement theorem)</strong><br /> Sei $G$ eine Menge aus $n$ Vektoren mit $\mathrm{span}(G) = \mathbb{V}$. Ist $L \subseteq \mathbb{V}$ eine Teilmenge aus $m$ linear unabhängigen Vektoren, so gilt $m \leq n$. Außerdem existiert eine Menge $H \subseteq G$ mit $n-m$ Elementen, so dass $\mathrm{span}(L \cup H) = \mathbb{V}$.</p></blockquote><p>Daraus folgen zwei äußerst wichtige Korollare.</p><blockquote class="prompt-info"><p><strong>Korollar 5-1 zum Austauschsatz</strong><br /> Enthält der Vektorraum $\mathbb{V}$ eine endliche Basis, so sind alle Basen von $\mathbb{V}$ endlich und bestehen aus gleich vielen Vektoren.</p></blockquote><p>Demnach ist die Anzahl der Vektoren in einer Basis von $\mathbb{V}$ eine unveränderliche, wesentliche Eigenschaft von $\mathbb{V}$; sie heißt <strong>Dimension (dimension)</strong>.</p><blockquote class="prompt-info"><p><strong>Definition der Dimension</strong><br /> Ein Vektorraum heißt <strong>endlichdimensional (finite dimension)</strong>, wenn er eine endliche Basis besitzt; die Anzahl $n$ der Basiselemente heißt die <strong>Dimension (dimension)</strong> des gegebenen Vektorraums und wird mit $\dim(\mathbb{V})$ bezeichnet. Ein Vektorraum, der nicht endlichdimensional ist, heißt <strong>unendlichdimensional (infinite dimension)</strong>.</p></blockquote><blockquote class="prompt-tip"><ul><li>$\dim(\{\mathbf{0}\}) = 0$<li>$\dim(F^n) = n$<li>$\dim(\mathcal{M}_{m \times n}(F)) = mn$</ul></blockquote><blockquote class="prompt-tip"><p>Die Dimension eines Vektorraums hängt vom zugrunde liegenden Körper ab.</p><ul><li>Über dem komplexen Körper $\mathbb{C}$ hat der komplexe Vektorraum Dimension $1$, Basis $\{1\}$<li>Über dem reellen Körper $\mathbb{R}$ hat derselbe Raum Dimension $2$, Basis $\{1,i\}$</ul></blockquote><p>In einem endlichdimensionalen Vektorraum $\mathbb{V}$ kann keine Teilmenge mit mehr als $\dim(\mathbb{V})$ Vektoren linear unabhängig sein.</p><blockquote class="prompt-info"><p><strong>Korollar 5-2 zum Austauschsatz</strong><br /> Sei $\mathbb{V}$ ein Vektorraum der Dimension $n$.</p><ol><li>Jede endliche Erzeugermenge von $\mathbb{V}$ enthält mindestens $n$ Vektoren; eine Erzeugermenge aus genau $n$ Vektoren ist eine Basis von $\mathbb{V}$.<li>Eine linear unabhängige Teilmenge von $\mathbb{V}$ mit genau $n$ Vektoren ist eine Basis von $\mathbb{V}$. 3. Jede linear unabhängige Teilmenge $L \subseteq \mathbb{V}$ lässt sich zu einer Basis erweitern. Das heißt: Ist $L$ linear unabhängig, so existiert eine Basis $\beta \supseteq L$ von $\mathbb{V}$.</ol></blockquote><h3 id="dimension-von-unterräumen">Dimension von Unterräumen</h3><blockquote class="prompt-info"><p><strong>Satz 6</strong><br /> Ist $\mathbb{V}$ endlichdimensional, so ist jeder Unterraum $\mathbb{W}$ von $\mathbb{V}$ endlichdimensional und es gilt $\dim(\mathbb{W}) \leq \dim(\mathbb{V})$. Insbesondere gilt aus $\dim(\mathbb{W}) = \dim(\mathbb{V}) \quad \Rightarrow \quad \mathbb{V} = \mathbb{W}.$</p><p><strong>Korollar 6-1</strong><br /> Zu einem Unterraum $\mathbb{W}$ eines endlichdimensionalen Vektorraums $\mathbb{V}$ lässt sich jede Basis von $\mathbb{W}$ zu einer Basis von $\mathbb{V}$ erweitern.</p></blockquote><p>Nach <strong>Satz 6</strong> kann die Dimension eines Unterraums von $\mathbb{R}^3$ die Werte $0,1,2,3$ annehmen.</p><ul><li>0-dimensional: der Nullunterraum $\{\mathbf{0}\}$<li>1-dimensional: eine durch den Ursprung ($\mathbf{0}$) verlaufende Gerade<li>2-dimensional: eine durch den Ursprung ($\mathbf{0}$) verlaufende Ebene<li>3-dimensional: der gesamte euklidische 3D-Raum</ul>]]> </content> </entry> <entry><title xml:lang="de">Vektorräume, Unterräume und Matrizen</title><link href="https://www.yunseo.kim/de/posts/vector-spaces-subspaces-and-matrices/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/vector-spaces-subspaces-and-matrices/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/vector-spaces-subspaces-and-matrices/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/vector-spaces-subspaces-and-matrices/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/vector-spaces-subspaces-and-matrices/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/vector-spaces-subspaces-and-matrices/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/vector-spaces-subspaces-and-matrices/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/vector-spaces-subspaces-and-matrices/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/vector-spaces-subspaces-and-matrices/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/vector-spaces-subspaces-and-matrices/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/vector-spaces-subspaces-and-matrices/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/vector-spaces-subspaces-and-matrices/" rel="alternate" type="text/html" hreflang="am" /><published>2025-09-13T00:00:00+09:00</published> <updated>2025-10-28T18:44:54+09:00</updated> <id>https://www.yunseo.kim/de/posts/vector-spaces-subspaces-and-matrices/</id> <author> <name>Yunseo Kim</name> </author> <category term="Mathematics" /> <category term="Linear Algebra" /> <summary xml:lang="de">Definitionen von Vektorraum und Unterraum mit Beispielen (Matrix- und Funktionenräume). Fokus: symmetrische/schiefsymmetrische, obere/untere Dreiecksmatrizen sowie Diagonalmatrizen.</summary> <content type="html" xml:lang="de"> <![CDATA[<p>Definitionen von Vektorraum und Unterraum mit Beispielen (Matrix- und Funktionenräume). Fokus: symmetrische/schiefsymmetrische, obere/untere Dreiecksmatrizen sowie Diagonalmatrizen.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="tldr">TL;DR</h2><blockquote class="prompt-info"><ul><li><strong>Matrix</strong><ul><li>Den Eintrag der i-ten Zeile und j-ten Spalte einer Matrix A schreibt man als $A_{ij}$ oder $a_{ij}$<li><strong>Diagonaleintrag (diagonal entry)</strong>: Eintrag $a_{ij}$ mit $i=j$<li>Die Einträge $a_{i1}, a_{i2}, \dots, a_{in}$ heißen die i-te <strong>Zeile (row)</strong> der Matrix<ul><li>Jede Zeile einer Matrix lässt sich als Vektor in $F^n$ darstellen<li>Zudem kann man einen Zeilenvektor in $F^n$ als eine weitere $1 \times n$-Matrix schreiben</ul><li>Die Einträge $a_{1j}, a_{2j}, \dots, a_{mj}$ heißen die j-te <strong>Spalte (column)</strong> der Matrix<ul><li>Jede Spalte einer Matrix lässt sich als Vektor in $F^m$ darstellen<li>Zudem kann man einen Spaltenvektor in $F^m$ als eine weitere $m \times 1$-Matrix schreiben</ul><li><strong>Nullmatrix (zero matrix)</strong>: Matrix, deren alle Einträge $0$ sind; mit $O$ bezeichnet<li><strong>quadratische Matrix (square matrix)</strong>: Matrix mit gleicher Zeilen- und Spaltenzahl<li>Für zwei $m \times n$-Matrizen $A, B$ gilt: Wenn für alle $1 \leq i \leq m$, $1 \leq j \leq n$ die Gleichheit $A_{ij} = B_{ij}$ besteht (d. h. alle korrespondierenden Einträge stimmen überein), dann sind $A$ und $B$ <strong>gleich</strong> ($A=B$)<li><strong>Transponierte Matrix (transpose matrix)</strong>: Für eine $m \times n$-Matrix $A$ heißt die $n \times m$-Matrix $A^T$, die durch Vertauschen von Zeilen und Spalten entsteht, die Transponierte<li><strong>symmetrische Matrix (symmetric matrix)</strong>: quadratische Matrix $A$ mit $A^T = A$<li><strong>schiefsymmetrische Matrix (skew-symmetric matrix)</strong>: quadratische Matrix $B$ mit $B^T = -B$<li><strong>Dreiecksmatrix (triangular matrix)</strong><ul><li><strong>obere Dreiecksmatrix (upper triangular matrix)</strong>: Matrix, deren alle Einträge unterhalb der Diagonale $0$ sind (d. h. $i&gt;j \Rightarrow A_{ij}=0$); meist mit $U$ bezeichnet<li><strong>untere Dreiecksmatrix (lower triangular matrix)</strong>: Matrix, deren alle Einträge oberhalb der Diagonale $0$ sind (d. h. $i&lt;j \Rightarrow A_{ij}=0$); meist mit $L$ bezeichnet</ul><li><strong>Diagonalmatrix (diagonal matrix)</strong>: quadratische $n \times n$-Matrix, deren alle Nicht-Diagonaleinträge $0$ sind (d. h. $i \neq j \Rightarrow M_{ij}=0$); meist mit $D$ bezeichnet</ul><li>typische Vektorräume<ul><li><strong>$n$-Tupel $F^n$</strong>:<ul><li>die Menge aller $n$-Tupel mit Einträgen aus einem Körper $F$<li>notiert als $F^n$; ein $F$-Vektorraum</ul><li><strong>Matrixraum (matrix space)</strong>:<ul><li>die Menge aller $m \times n$-Matrizen mit Einträgen aus $F$<li>notiert als $\mathcal{M}_{m \times n}(F)$; ein Vektorraum</ul><li><strong>Funktionenraum (function space)</strong>:<ul><li>für eine nichtleere Menge $S$ über $F$ die Menge aller Abbildungen von $S$ nach $F$<li>notiert als $\mathcal{F}(S,F)$; ein Vektorraum</ul></ul><li><strong>Unterraum (subspace)</strong><ul><li>Ist eine Teilmenge $\mathbb{W}$ eines $F$-Vektorraums $\mathbb{V}$ mit denselben Operationen (Summe und Skalarmultiplikation) selbst ein $F$-Vektorraum, so heißt $\mathbb{W}$ ein <strong>Unterraum (subspace)</strong> von $\mathbb{V}$<li>Für jeden Vektorraum $\mathbb{V}$ sind $\mathbb{V}$ selbst und $\{0\}$ Unterräume; insbesondere heißt $\{0\}$ der <strong>Nullunterraum (zero subspace)</strong><li>Enthält eine Teilmenge den Nullvektor und ist sie unter <a href="/de/posts/vectors-and-linear-combinations/#lineare-kombinationen-von-vektoren">linearen Kombinationen</a> abgeschlossen ($\mathrm{span}(\mathbb{W})=\mathbb{W}$), so ist sie ein Unterraum</ul></ul></blockquote><h2 id="prerequisites">Prerequisites</h2><ul><li><a href="/de/posts/vectors-and-linear-combinations/">Vektoren und lineare Kombinationen</a></ul><h2 id="vektorräume">Vektorräume</h2><p>Wie bereits kurz in <a href="/de/posts/vectors-and-linear-combinations/#vektor-im-weiteren-sinn-element-eines-vektorraums">Vektoren und lineare Kombinationen</a> gesehen, lauten die Definitionen von Vektor und Vektorraum als algebraische Strukturen wie folgt.</p><blockquote class="prompt-info"><p><strong>Definition</strong><br /> Ein <strong>Vektorraum (vector space)</strong> oder <strong>linearer Raum (linear space)</strong> $\mathbb{V}$ über einem Körper $F$ ist eine Menge mit zwei Operationen, <strong>Addition</strong> und <strong>Skalarmultiplikation</strong>, die die folgenden 8 Bedingungen erfüllen. Elemente von $F$ heißen <strong>Skalare (scalar)</strong>, Elemente von $\mathbb{V}$ heißen <strong>Vektoren (vector)</strong>.</p><ul><li><strong>Summe (sum)</strong>: Jedem Paar $\mathbf{x}, \mathbf{y} \in \mathbb{V}$ wird ein eindeutiges Element $\mathbf{x} + \mathbf{y} \in \mathbb{V}$ zugeordnet. $\mathbf{x} + \mathbf{y}$ heißt die <strong>Summe</strong> von $\mathbf{x}$ und $\mathbf{y}$.<li><strong>Skalarmultiplikation (scalar multiplication)</strong>: Jedem $a \in F$ und $\mathbf{x} \in \mathbb{V}$ wird ein eindeutiges Element $a\mathbf{x} \in \mathbb{V}$ zugeordnet. $a\mathbf{x}$ heißt die <strong>Skalarmultiplikation (scalar multiple)</strong> von $\mathbf{x}$ mit $a$.</ul><ol><li>Für alle $\mathbf{x},\mathbf{y} \in \mathbb{V}$ gilt $\mathbf{x} + \mathbf{y} = \mathbf{y} + \mathbf{x}$. (Kommutativgesetz der Addition)<li>Für alle $\mathbf{x},\mathbf{y},\mathbf{z} \in \mathbb{V}$ gilt $(\mathbf{x}+\mathbf{y})+\mathbf{z} = \mathbf{x}+(\mathbf{y}+\mathbf{z})$. (Assoziativgesetz der Addition)<li>Es existiert ein $\mathbf{0} \in \mathbb{V}$ mit $\mathbf{x} + \mathbf{0} = \mathbf{x}$ für alle $\mathbf{x} \in \mathbb{V}$. (<strong>Nullvektor</strong>, neutrales Element der Addition)<li>Zu jedem $\mathbf{x} \in \mathbb{V}$ existiert ein $\mathbf{y} \in \mathbb{V}$ mit $\mathbf{x}+\mathbf{y}=\mathbf{0}$. (additives Inverses)<li>Für alle $\mathbf{x} \in \mathbb{V}$ gilt $1\mathbf{x} = \mathbf{x}$. (neutrales Element der Multiplikation)<li>Für alle $a,b \in F$ und alle $\mathbf{x} \in \mathbb{V}$ gilt $(ab)\mathbf{x} = a(b\mathbf{x})$. (Assoziativität der Skalarmultiplikation)<li>Für alle $a \in F$ und alle $\mathbf{x},\mathbf{y} \in \mathbb{V}$ gilt $a(\mathbf{x}+\mathbf{y}) = a\mathbf{x} + a\mathbf{y}$. (Distributivgesetz der Skalarmultiplikation über der Addition 1)<li>Für alle $a,b \in F$ und alle $\mathbf{x} \in \mathbb{V}$ gilt $(a+b)\mathbf{x} = a\mathbf{x} + b\mathbf{x}$. (Distributivgesetz der Skalarmultiplikation über der Addition 2)</ol></blockquote><p>Streng genommen sollte man “$F$-Vektorraum $\mathbb{V}$” schreiben; doch bei der Behandlung von Vektorräumen spielt der Körper nicht immer eine zentrale Rolle. Wenn keine Verwechslungsgefahr besteht, lassen wir $F$ weg und schreiben einfach “Vektorraum $\mathbb{V}$”.</p><h3 id="matrixraum">Matrixraum</h3><h4 id="zeilen--und-spaltenvektoren">Zeilen- und Spaltenvektoren</h4><p>Die Menge aller $n$-Tupel mit Einträgen aus $F$ wird mit $F^n$ bezeichnet. Für $u = (a_1, a_2, \dots, a_n) \in F^n$, $v = (b_1, b_2, \dots, b_n) \in F^n$ ist $F^n$ ein $F$-Vektorraum, wenn man Summe und Skalarmultiplikation wie folgt definiert:</p>\[\begin{align*} u + v &amp;= (a_1+b_1, a_2+b_2, \dots, a_n+b_n), \\ cu &amp;= (ca_1, ca_2, \dots, ca_n) \end{align*}\]<p>Vektoren aus $F^n$ schreibt man, wenn sie allein stehen, meist nicht als <strong>Zeilenvektoren (row vector)</strong> $(a_1, a_2, \dots, a_n)$, sondern als <strong>Spaltenvektoren (column vector)</strong></p>\[\begin{pmatrix} a_1 \\ a_2 \\ \vdots \\ a_n \end{pmatrix}\]<p>.</p><blockquote class="prompt-tip"><p>Da Spaltenvektoren jedoch viel Platz benötigen, verwendet man oft die <a href="#transponierte-matrix-symmetrische-matrix-schiefsymmetrische-matrix">Transposition</a> und schreibt $(a_1, a_2, \dots, a_n)^T$.</p></blockquote><h4 id="matrizen-und-matrixraum">Matrizen und Matrixraum</h4><p>Eine $m \times n$-<strong>Matrix (matrix)</strong> mit Einträgen aus $F$ ist ein rechteckiges Schema wie folgt und wird üblicherweise durch kursiv gesetzte Großbuchstaben ($A, B, C$ usw.) bezeichnet.</p>\[\begin{pmatrix} a_{11} &amp; a_{12} &amp; \cdots &amp; a_{1n} \\ a_{21} &amp; a_{22} &amp; \cdots &amp; a_{2n} \\ \vdots &amp; \vdots &amp; &amp; \vdots \\ a_{m1} &amp; a_{m2} &amp; \cdots &amp; a_{mn} \end{pmatrix}\]<ul><li>Den Eintrag der i-ten Zeile und j-ten Spalte einer Matrix $A$ schreibt man als $A_{ij}$ oder $a_{ij}$.<li>Alle $a_{ij}$ ($1 \leq i \leq m$, $1 \leq j \leq n$) sind Elemente von $F$.<li>Ein Eintrag $a_{ij}$ mit $i=j$ heißt <strong>Diagonaleintrag (diagonal entry)</strong>.<li>Die Einträge $a_{i1}, a_{i2}, \dots, a_{in}$ heißen die i-te <strong>Zeile (row)</strong> der Matrix. Jede Zeile lässt sich als Vektor in $F^n$ auffassen; ferner kann man einen Zeilenvektor aus $F^n$ als eine weitere $1 \times n$-Matrix schreiben.<li>Die Einträge $a_{1j}, a_{2j}, \dots, a_{mj}$ heißen die j-te <strong>Spalte (column)</strong> der Matrix. Jede Spalte lässt sich als Vektor in $F^m$ auffassen; ferner kann man einen Spaltenvektor aus $F^m$ als eine weitere $m \times 1$-Matrix schreiben.<li>Eine $m \times n$-Matrix, deren alle Einträge $0$ sind, heißt <strong>Nullmatrix (zero matrix)</strong> und wird mit $O$ bezeichnet.<li>Eine Matrix mit gleicher Zeilen- und Spaltenzahl heißt <strong>quadratische Matrix (square matrix)</strong>.<li>Für zwei $m \times n$-Matrizen $A, B$ gilt: Stimmen für alle $1 \leq i \leq m$, $1 \leq j \leq n$ die Einträge überein ($A_{ij} = B_{ij}$), so sind die Matrizen <strong>gleich</strong> ($A=B$).</ul><p>Die Menge aller $m \times n$-Matrizen mit Einträgen aus $F$ wird mit $\mathcal{M}_{m \times n}(F)$ bezeichnet. Für $\mathbf{A},\mathbf{B} \in \mathcal{M}_{m \times n}(F),\ c \in F$ ist $\mathcal{M}_{m \times n}(F)$ ein Vektorraum, wenn man Summe und Skalarmultiplikation wie folgt definiert; diesen Raum nennt man <strong>Matrixraum (matrix space)</strong>.</p>\[\begin{align*} (\mathbf{A}+\mathbf{B})_{ij} &amp;= \mathbf{A}_{ij} + \mathbf{B}_{ij}, \\ (c\mathbf{A})_{ij} &amp;= c\mathbf{A}_{ij} \\ \text{(wobei }1 \leq i \leq &amp;m, 1 \leq j \leq n \text{)} \end{align*}\]<p>Dies ist eine natürliche Erweiterung der in $F^n$ und $F^m$ definierten Operationen.</p><h3 id="funktionenraum">Funktionenraum</h3><p>Für eine nichtleere Menge $S$ über $F$ ist $\mathcal{F}(S,F)$ die Menge aller Abbildungen von $S$ nach $F$. Für $f,g \in \mathcal{F}(S,F)$ gilt: Sind für alle $s \in S$ die Funktionswerte gleich, $f(s) = g(s)$, so sind die Funktionen <strong>gleich</strong> ($f=g$).</p><p>Für $f,g \in \mathcal{F}(S,F),\ c \in F,\ s \in S$ ist $\mathcal{F}(S,F)$ ein Vektorraum, wenn man Summe und Skalarmultiplikation wie folgt definiert; diesen Raum nennt man <strong>Funktionenraum (function space)</strong>.</p>\[\begin{align*} (f + g)(s) &amp;= f(s) + g(s), \\ (cf)(s) &amp;= c[f(s)] \end{align*}\]<h2 id="unterräume">Unterräume</h2><blockquote class="prompt-info"><p><strong>Definition</strong><br /> Ist eine Teilmenge $\mathbb{W}$ eines $F$-Vektorraums $\mathbb{V}$ mit denselben, in $\mathbb{V}$ definierten Operationen Summe und Skalarmultiplikation selbst ein $F$-Vektorraum, so heißt $\mathbb{W}$ ein <strong>Unterraum (subspace)</strong> von $\mathbb{V}$.</p></blockquote><p>Für jeden Vektorraum $\mathbb{V}$ sind $\mathbb{V}$ selbst und $\{0\}$ Unterräume; insbesondere heißt $\{0\}$ der <strong>Nullunterraum (zero subspace)</strong>.</p><p>Ob eine Teilmenge ein Unterraum ist, lässt sich mit dem folgenden Satz prüfen.</p><blockquote class="prompt-info"><p><strong>Satz 1</strong><br /> Für einen Vektorraum $\mathbb{V}$ und eine Teilmenge $\mathbb{W}$ ist $\mathbb{W}$ genau dann ein Unterraum von $\mathbb{V}$, wenn die folgenden drei Bedingungen erfüllt sind. Die Operationen sind dabei diejenigen von $\mathbb{V}$.</p><ol><li>$\mathbf{0} \in \mathbb{W}$<li>$\mathbf{x}+\mathbf{y} \in \mathbb{W} \quad \forall\ \mathbf{x} \in \mathbb{W},\ \mathbf{y} \in \mathbb{W}$<li>$c\mathbf{x} \in \mathbb{W} \quad \forall\ c \in F,\ \mathbf{x} \in \mathbb{W}$</ol><p>Kurz gesagt: Enthält die Menge den Nullvektor und ist sie unter <a href="/de/posts/vectors-and-linear-combinations/#lineare-kombinationen-von-vektoren">linearen Kombinationen</a> abgeschlossen ($\mathrm{span}(\mathbb{W})=\mathbb{W}$), so ist sie ein Unterraum.</p></blockquote><p>Außerdem gelten die folgenden Sätze.</p><blockquote class="prompt-info"><p><strong>Satz 2</strong></p><ul><li><p>Für jede Teilmenge $S$ eines Vektorraums $\mathbb{V}$ ist der von $S$ erzeugte Raum $\mathrm{span}(S)$ ein Unterraum von $\mathbb{V}$, der $S$ enthält.</p>\[S \subset \mathrm{span}(S) \leq \mathbb{V} \quad \forall\ S \subset \mathbb{V}.\]<li><p>Jeder Unterraum $\mathbb{W}$ von $\mathbb{V}$, der $S$ enthält, enthält notwendig auch den von $S$ erzeugten Raum.</p>\[\mathbb{W}\supset \mathrm{span}(S) \quad \forall\ S \subset \mathbb{W} \leq \mathbb{V}.\]</ul></blockquote><blockquote class="prompt-info"><p><strong>Satz 3</strong><br /> Für Unterräume eines Vektorraums $\mathbb{V}$ ist der beliebige Durchschnitt solcher Unterräume wiederum ein Unterraum von $\mathbb{V}$.</p></blockquote><h3 id="transponierte-matrix-symmetrische-matrix-schiefsymmetrische-matrix">Transponierte Matrix, symmetrische Matrix, schiefsymmetrische Matrix</h3><p>Die <strong>Transponierte (transpose matrix)</strong> $A^T$ einer $m \times n$-Matrix $A$ ist die $n \times m$-Matrix, die durch Vertauschen von Zeilen und Spalten entsteht.</p>\[(A^T)_{ij} = A_{ji}\] \[\begin{pmatrix} 1 &amp; 2 &amp; 3 \\ 4 &amp; 5 &amp; 6 \end{pmatrix}^T = \begin{pmatrix} 1 &amp; 4 \\ 2 &amp; 5 \\ 3 &amp; 6 \end{pmatrix}\]<p>Eine Matrix $A$ mit $A^T = A$ heißt <strong>symmetrische Matrix (symmetric matrix)</strong>, eine Matrix $B$ mit $B^T = -B$ heißt <strong>schiefsymmetrische Matrix (skew-symmetric matrix)</strong>. Symmetrische und schiefsymmetrische Matrizen sind notwendigerweise quadratisch.</p><p>Bezeichnet $\mathbb{W}_1$ bzw. $\mathbb{W}_2$ die Menge aller symmetrischen bzw. schiefsymmetrischen Matrizen in $\mathcal{M}_{n \times n}(F)$, so sind $\mathbb{W}_1, \mathbb{W}_2$ Unterräume von $\mathcal{M}_{n \times n}(F)$, d. h. sie sind unter Addition und Skalarmultiplikation abgeschlossen.</p><h3 id="dreiecksmatrizen-diagonalmatrizen">Dreiecksmatrizen, Diagonalmatrizen</h3><p>Diese beiden Matrizenklassen sind besonders wichtig.</p><p>Zunächst fasst man die folgenden beiden Typen zur Klasse der <strong>Dreiecksmatrizen (triangular matrix)</strong> zusammen.</p><ul><li><strong>obere Dreiecksmatrix (upper triangular matrix)</strong>: Matrix, deren alle Einträge unterhalb der Diagonale $0$ sind (d. h. $i&gt;j \Rightarrow A_{ij}=0$); meist mit $U$ bezeichnet<li><strong>untere Dreiecksmatrix (lower triangular matrix)</strong>: Matrix, deren alle Einträge oberhalb der Diagonale $0$ sind (d. h. $i&lt;j \Rightarrow A_{ij}=0$); meist mit $L$ bezeichnet</ul><p>Eine quadratische $n \times n$-Matrix, deren alle Nicht-Diagonaleinträge $0$ sind, d. h. $i \neq j \Rightarrow M_{ij}=0$, heißt <strong>Diagonalmatrix (diagonal matrix)</strong> und wird meist mit $D$ bezeichnet. Eine Diagonalmatrix ist zugleich obere wie untere Dreiecksmatrix.</p><p>Die Menge der oberen Dreiecksmatrizen, die Menge der unteren Dreiecksmatrizen und die Menge der Diagonalmatrizen sind allesamt Unterräume von $\mathcal{M}_{m \times n}(F)$.</p>]]> </content> </entry> <entry><title xml:lang="de">Inneres Produkt und Norm</title><link href="https://www.yunseo.kim/de/posts/inner-product-and-norm/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/inner-product-and-norm/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/inner-product-and-norm/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/inner-product-and-norm/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/inner-product-and-norm/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/inner-product-and-norm/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/inner-product-and-norm/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/inner-product-and-norm/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/inner-product-and-norm/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/inner-product-and-norm/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/inner-product-and-norm/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/inner-product-and-norm/" rel="alternate" type="text/html" hreflang="am" /><published>2025-09-10T00:00:00+09:00</published> <updated>2025-10-15T05:48:53+09:00</updated> <id>https://www.yunseo.kim/de/posts/inner-product-and-norm/</id> <author> <name>Yunseo Kim</name> </author> <category term="Mathematics" /> <category term="Linear Algebra" /> <summary xml:lang="de">Definition von innerem Produkt und Skalarprodukt; daraus Vektorlänge/Norm und Winkel zwischen Vektoren. Mit Cauchy–Schwarz- und Dreiecksungleichung.</summary> <content type="html" xml:lang="de"> <![CDATA[<p>Definition von innerem Produkt und Skalarprodukt; daraus Vektorlänge/Norm und Winkel zwischen Vektoren. Mit Cauchy–Schwarz- und Dreiecksungleichung.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="prerequisites">Prerequisites</h2><ul><li><a href="/de/posts/vectors-and-linear-combinations/">Vektoren und Linearkombinationen</a></ul><h2 id="inneres-produkt">Inneres Produkt</h2><p>Die Definition des allgemeinen <strong>inneren Produkts (inner product)</strong> in einem $F$-Vektorraum lautet wie folgt.</p><blockquote class="prompt-info"><p><strong>Definition von innerem Produkt (inner product) und Skalarproduktraum (inner product space)</strong><br /> Sei $\mathbb{V}$ ein $F$-Vektorraum. Ein <strong>inneres Produkt (inner product)</strong> $\langle \mathbf{x},\mathbf{y} \rangle$ auf $\mathbb{V}$ ist eine Abbildung, die jedem geordneten Paar von Vektoren $\mathbf{x},\mathbf{y}\in\mathbb{V}$ einen Skalar in $F$ zuordnet und folgende Bedingungen erfüllt:</p><p>Für alle $\mathbf{x},\mathbf{y},\mathbf{z} \in \mathbb{V}$ und alle $c \in F$ gilt:</p><ol><li>$\langle \mathbf{x}+\mathbf{z}, \mathbf{y} \rangle = \langle \mathbf{x}, \mathbf{y} \rangle + \langle \mathbf{z}, \mathbf{y} \rangle$<li>$\langle c\mathbf{x}, \mathbf{y} \rangle = c \langle \mathbf{x}, \mathbf{y} \rangle$<li>$\overline{\langle \mathbf{x}, \mathbf{y} \rangle} = \langle \mathbf{y}, \mathbf{x} \rangle$ (wobei $\overline{\mathbf{z}}$ die komplexe Konjugierte von $\mathbf{z}$ bezeichnet)<li>Für $\mathbf{x} \neq \mathbf{0}$ ist $\langle \mathbf{x}, \mathbf{x} \rangle$ positiv.</ol><p>Ein $F$-Vektorraum $\mathbb{V}$, der mit einem inneren Produkt versehen ist, heißt <strong>Skalarproduktraum (inner product space)</strong>. Insbesondere heißt er bei $F=\mathbb{C}$ <strong>komplexer Skalarproduktraum (complex inner product space)</strong> und bei $F=\mathbb{R}$ <strong>reeller Skalarproduktraum (real inner product space)</strong>.</p></blockquote><p>Insbesondere nennt man das folgende innere Produkt das <strong>Standardinnere Produkt (standard inner product)</strong>. Man kann überprüfen, dass es die vier obigen Bedingungen erfüllt.</p><blockquote class="prompt-info"><p><strong>Definition des Standardinneren Produkts (standard inner product)</strong><br /> Für zwei Vektoren $\mathbf{x}=(a_1, a_2, \dots, a_n)$, $\mathbf{y}=(b_1, b_2, \dots, b_n)$ in $F^n$ definieren wir das <strong>Standardinnere Produkt</strong> in $F^n$ durch</p>\[\langle \mathbf{x}, \mathbf{y} \rangle = \sum_{i=1}^n a_i \overline{b_i}\]</blockquote><p>Ist hier $F=\mathbb{R}$, so ist die konjugiert komplexe Zahl einer reellen Zahl sie selbst, daher wird das Standardinnere Produkt zu $\sum_{i=1}^n a_i b_i$. In diesem Fall schreibt man das Standardinnere Produkt oft als $\langle \mathbf{x}, \mathbf{y} \rangle$ oder kurz $\mathbf{x} \cdot \mathbf{y}$ und nennt es <strong>Punktprodukt (dot product)</strong> oder <strong>Skalarprodukt (scalar product)</strong>.</p><blockquote class="prompt-info"><p><strong>Definition von Punktprodukt (dot product)/Skalarprodukt (scalar product)</strong><br /> Für $\mathbf{v}=(v_1, v_2, \dots, v_n)$, $\mathbf{w}=(w_1, w_2, \dots, w_n)$ in $\mathbb{R}^n$ definieren wir das <strong>Punktprodukt (dot product)</strong> bzw. <strong>Skalarprodukt (scalar product)</strong> in $\mathbb{R}^n$ durch</p>\[\mathbf{v} \cdot \mathbf{w} = \sum_{i=1}^n v_i w_i = v_1 w_1 + v_2 w_2 + \cdots + v_n w_n\]</blockquote><blockquote class="prompt-warning"><p>Das hier gemeinte „<strong>Skalarprodukt (scalar product)</strong>“ ist eine Operation zwischen zwei Vektoren und unterscheidet sich von der Skalarmultiplikation, also der Operation zwischen Skalar und Vektor, wie in <a href="/de/posts/vectors-and-linear-combinations/">Vektoren und Linearkombinationen</a> behandelt. Da die englischen Bezeichnungen ähnlich sind und die <a href="https://www.kms.or.kr/mathdict/list.html?key=kname&amp;keyword=%EC%8A%A4%EC%B9%BC%EB%9D%BC%EA%B3%B1">koreanische Standardübersetzung nach der Korean Mathematical Society</a> sogar identisch ist, ist Verwechslungsgefahr gegeben.</p><p>Zur Vermeidung von Missverständnissen werde ich nach Möglichkeit den Begriff <strong>Punktprodukt (dot product)</strong> verwenden.</p></blockquote><blockquote class="prompt-tip"><p>Im euklidischen Raum fällt das innere Produkt mit dem Punktprodukt zusammen, sodass man kontextabhängig das Punktprodukt oft einfach als inneres Produkt bezeichnet. Streng genommen ist das innere Produkt jedoch der allgemeinere Begriff, der das Punktprodukt einschließt.</p></blockquote><pre><code class="language-mermaid">flowchart TD
    A["Inneres Produkt (Inner Product)"] --&gt;|enthält| B["Standardinneres Produkt (Standard Inner Product)"]
    B --&gt;|"falls F = R (Körper der reellen Zahlen)"| C["Punktprodukt/Skalarprodukt (Dot/Scalar Product)"]

    %% Darstellung der (Teil-)Mengenbeziehungen
    C -. enthalten .-&gt; B
    B -. enthalten .-&gt; A
</code></pre><h2 id="vektorlängenorm">Vektorlänge/Norm</h2><p>Für einen Vektor $\mathbf{v}=(v_1, v_2, \dots, v_n)$ in $\mathbb{R}^n$ wird die euklidische Länge von $\mathbf{v}$ über das Punktprodukt definiert durch</p>\[\| \mathbf{v} \| = \sqrt{\mathbf{v} \cdot \mathbf{v}} = \left[ \sum_{i=1}^n |v_i|^2 \right]^{1/2} = \sqrt{v_1^2 + v_2^2 + \cdots + v_n^2}\]<p>Allgemeiner definiert man in einem beliebigen Skalarproduktraum die <strong>Länge (length)</strong> bzw. <strong>Norm</strong> eines Vektors durch</p>\[\| \mathbf{x} \| = \sqrt{\langle \mathbf{x}, \mathbf{x} \rangle}\]<p>In allgemeinen Skalarprodukträumen gelten für die Norm eines Vektors die folgenden wichtigen Eigenschaften.</p><blockquote class="prompt-info"><p><strong>Satz</strong><br /> Für einen $F$-Skalarproduktraum $\mathbb{V}$ und beliebige Vektoren $\mathbf{x}, \mathbf{y} \in \mathbb{V}$ sowie einen Skalar $c \in F$ gilt:</p><ol><li>$\|c\mathbf{x}\| = |c| \cdot \|\mathbf{x}\|$<li>Es gelten beide Aussagen:<ul><li>$\|\mathbf{x}\| = 0 \iff \mathbf{x}=\mathbf{0}$<li>$\|\mathbf{x}\| \geq 0 \ \forall \mathbf{x}$</ul><li><strong>Cauchy–Schwarz-Ungleichung (Cauchy–Schwarz inequality)</strong>: $| \langle \mathbf{x}, \mathbf{y} \rangle | \leq \|\mathbf{x}\| \cdot \|\mathbf{y}\|$ (Gleichheit gilt genau dann, wenn einer der Vektoren ein skalares Vielfaches des anderen ist.)<li><strong>Dreiecksungleichung (triangle inequality)</strong>: $\| \mathbf{x} + \mathbf{y} \| \leq \|\mathbf{x}\| + \|\mathbf{y}\|$ (Gleichheit gilt genau dann, wenn einer der Vektoren ein skalares Vielfaches des anderen ist und beide die gleiche Richtung haben.)</ol></blockquote><h2 id="winkel-zwischen-vektoren-und-einheitsvektor">Winkel zwischen Vektoren und Einheitsvektor</h2><p>Ein Vektor der Länge $1$ heißt <strong>Einheitsvektor (unit vector)</strong>. Für zwei Vektoren $\mathbf{v}=(v_1, v_2, \dots, v_n)$, $\mathbf{w}=(w_1, w_2, \dots, w_n)$ in $\mathbb{R}^n$ gilt $\mathbf{v} \cdot \mathbf{w} = \|\mathbf{v}\| \cdot \|\mathbf{w}\| \cos\theta$, woraus sich der Winkel $\theta$ ($0 \leq \theta \leq \pi$) zwischen $\mathbf{v}$ und $\mathbf{w}$ ergibt:</p>\[\theta = \arccos{\frac{\mathbf{v} \cdot \mathbf{w}}{\|\mathbf{v}\| \cdot \|\mathbf{w}\|}}\]<p>Ist $\mathbf{v} \cdot \mathbf{w} = 0$, so nennt man die beiden Vektoren <strong>senkrecht (perpendicular)</strong> oder <strong>orthogonal</strong>.</p><blockquote class="prompt-tip"><p>Sind die beiden Vektoren $\mathbf{v}$ und $\mathbf{w}$ senkrecht, so gilt</p>\[\begin{align*} \| \mathbf{v} + \mathbf{w} \|^2 &amp;= (\mathbf{v} + \mathbf{w}) \cdot (\mathbf{v} + \mathbf{w}) \\ &amp;= \mathbf{v} \cdot \mathbf{v} + \mathbf{v} \cdot \mathbf{w} + \mathbf{w} \cdot \mathbf{v} + \mathbf{w} \cdot \mathbf{w} \\ &amp;= \mathbf{v} \cdot \mathbf{v} + \mathbf{w} \cdot \mathbf{w} \\ &amp;= \|\mathbf{v}\|^2 + \|\mathbf{w}\|^2. \end{align*}\]</blockquote><p>Verallgemeinert auf beliebige Skalarprodukträume erhält man Folgendes.</p><blockquote class="prompt-info"><p><strong>Definition</strong><br /> Sei $\mathbb{V}$ ein Skalarproduktraum. Für Vektoren $\mathbf{x}, \mathbf{y} \in \mathbb{V}$ heißen $\mathbf{x}$ und $\mathbf{y}$ <strong>orthogonal</strong> bzw. <strong>senkrecht (perpendicular)</strong>, falls $\langle \mathbf{x}, \mathbf{y} \rangle = 0$. Außerdem gelten:</p><ol><li>Für eine Teilmenge $S \subset \mathbb{V}$ heißt $S$ <strong>orthogonale Menge (orthogonal set)</strong>, wenn je zwei verschiedene Vektoren in $S$ orthogonal sind.<li>Ein Vektor $\mathbf{x} \in \mathbb{V}$ mit $\|\mathbf{x}\|=1$ heißt <strong>Einheitsvektor (unit vector)</strong>.<li>Ist $S \subset \mathbb{V}$ eine orthogonale Menge und besteht $S$ nur aus Einheitsvektoren, so heißt $S$ <strong>Orthonormalmenge (orthonormal set)</strong>.</ol></blockquote><p>Für die Menge $S = { \mathbf{v}_1, \mathbf{v}_2, \dots }$ ist notwendige und hinreichende Bedingung für Orthonormalität $\langle \mathbf{v}_i, \mathbf{v}_j \rangle = \delta_{ij}$. Die Multiplikation eines Vektors mit einem von null verschiedenen Skalar beeinträchtigt die Orthogonalität nicht.</p><p>Für jeden von null verschiedenen Vektor $\mathbf{x}$ ist $\cfrac{\mathbf{x}}{\|\mathbf{x}\|}$ ein Einheitsvektor; den Prozess, bei dem man einen von null verschiedenen Vektor durch Multiplikation mit dem Kehrwert seiner Länge zu einem Einheitsvektor macht, nennt man <strong>Normalisierung (normalizing)</strong>.</p>]]> </content> </entry> <entry><title xml:lang="de">Vektoren und lineare Kombinationen</title><link href="https://www.yunseo.kim/de/posts/vectors-and-linear-combinations/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/vectors-and-linear-combinations/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/vectors-and-linear-combinations/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/vectors-and-linear-combinations/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/vectors-and-linear-combinations/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/vectors-and-linear-combinations/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/vectors-and-linear-combinations/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/vectors-and-linear-combinations/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/vectors-and-linear-combinations/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/vectors-and-linear-combinations/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/vectors-and-linear-combinations/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/vectors-and-linear-combinations/" rel="alternate" type="text/html" hreflang="am" /><published>2025-09-07T00:00:00+09:00</published> <updated>2025-10-28T20:47:49+09:00</updated> <id>https://www.yunseo.kim/de/posts/vectors-and-linear-combinations/</id> <author> <name>Yunseo Kim</name> </author> <category term="Mathematics" /> <category term="Linear Algebra" /> <summary xml:lang="de">Einführung in Vektoren: Definition, Darstellung, Grundoperationen (Addition, Skalarmultiplikation) und das Konzept der linearen Kombination und der linearen Hülle im Vektorraum.</summary> <content type="html" xml:lang="de"> <![CDATA[<p>Einführung in Vektoren: Definition, Darstellung, Grundoperationen (Addition, Skalarmultiplikation) und das Konzept der linearen Kombination und der linearen Hülle im Vektorraum.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="tldr">TL;DR</h2><blockquote class="prompt-info"><ul><li><strong>Definition des Vektors</strong><ul><li><strong>Vektor im engen Sinn (euklidischer Vektor)</strong>: physikalische Größe mit Betrag und Richtung<li><strong>Vektor im weiteren Sinn, in der Linearen Algebra</strong>: Element eines Vektorraums</ul><li><strong>Darstellungsweisen von Vektoren</strong><ul><li><strong>Pfeildarstellung</strong>: Der Betrag eines Vektors entspricht der Länge des Pfeils, die Richtung dem Pfeilrichtungssinn. Gut visuell und intuitiv, aber für hochdimensionale (≥4D) oder nicht-euklidische Vektoren ungeeignet.<li><strong>Komponentendarstellung</strong>: Den Startpunkt des Vektors im Koordinatenraum auf den Ursprung legen und den Vektor durch die Koordinaten seines Endpunkts darstellen.</ul><li><strong>Grundoperationen mit Vektoren</strong><ul><li><strong>Summe</strong>: $(a_1, a_2, \cdots, a_n) + (b_1, b_2, \cdots, b_n) := (a_1+b_1, a_2+b_2, \cdots, a_n+b_n)$<li><strong>Skalarmultiplikation</strong>: $c(a_1, a_2, \cdots, a_n) := (ca_1, ca_2, \cdots, ca_n)$</ul><li><strong>Lineare Kombination von Vektoren</strong><ul><li>Für endlich viele Vektoren $\mathbf{u}_1, \mathbf{u}_2, \dots, \mathbf{u}_n$ und Skalare $a_1, a_2, \dots, a_n$ heißt ein Vektor $\mathbf{v}$ mit $\mathbf{v} = a_1\mathbf{u}_1 + a_2\mathbf{u}_2 + \cdots + a_n\mathbf{u}_n$ eine <strong>lineare Kombination</strong> von $\mathbf{u}_1, \mathbf{u}_2, \dots, \mathbf{u}_n$.<li>Dabei heißen $a_1, a_2, \dots, a_n$ die <strong>Koeffizienten</strong> der linearen Kombination.</ul><li><strong>Lineare Hülle</strong><ul><li>Für eine nichtleere Teilmenge $S$ des Vektorraums $\mathbb{V}$ ist $\mathrm{span}(S)$ die Menge aller unter Verwendung der Vektoren aus $S$ gebildeten linearen Kombinationen.<li>Es gilt $\mathrm{span}(\emptyset) = {0}$.<li>Für eine Teilmenge $S$ des Vektorraums $\mathbb{V}$ gilt: Wenn $\mathrm{span}(S) = \mathbb{V}$, dann erzeugt $S$ $\mathbb{V}$ (generate bzw. spannt auf).</ul></ul></blockquote><h2 id="prerequisites">Prerequisites</h2><ul><li>Koordinatenebene/Koordinatenraum<li>Körper</ul><h2 id="was-ist-ein-vektor">Was ist ein Vektor?</h2><h3 id="vektor-im-engen-sinn-euklidischer-vektor">Vektor im engen Sinn: euklidischer Vektor</h3><blockquote class="prompt-info"><p>Viele physikalische Größen wie Kraft, Geschwindigkeit oder Beschleunigung besitzen nicht nur einen Betrag, sondern auch eine Richtung. Solche Größen mit Betrag und Richtung nennt man <strong>Vektoren (vector)</strong>.</p></blockquote><p>Die obige Definition ist diejenige, die in der Mechanik der Physik oder in der Schulmathematik verwendet wird. Ein Vektor in diesem engeren, geometrischen Sinn als „gerichtete Strecke mit Betrag und Richtung“, der auf physikalischer Intuition beruht, heißt präziser <strong>euklidischer Vektor (Euclidean vector)</strong>.</p><h3 id="vektor-im-weiteren-sinn-element-eines-vektorraums">Vektor im weiteren Sinn: Element eines Vektorraums</h3><p>In der Linearen Algebra definiert man Vektoren als eine abstraktere algebraische Struktur mit weiter gefasstem Bedeutungsumfang als die euklidischen Vektoren:</p><blockquote class="prompt-info"><p><strong>Definition</strong><br /> Ein <strong>Vektorraum</strong> (auch: <strong>linearer Raum</strong>) $\mathbb{V}$ über einem Körper $F$ ist eine Menge mit zwei Operationen, <strong>Addition</strong> und <strong>Skalarmultiplikation</strong>, die die folgenden 8 Bedingungen erfüllen. Elemente von $F$ heißen <strong>Skalare</strong>, Elemente von $\mathbb{V}$ heißen <strong>Vektoren</strong>.</p><ul><li><strong>Addition (Summe)</strong>: Jedem Paar $\mathbf{x}, \mathbf{y} \in \mathbb{V}$ wird ein eindeutiges Element $\mathbf{x} + \mathbf{y} \in \mathbb{V}$ zugeordnet. $\mathbf{x} + \mathbf{y}$ heißt die <strong>Summe</strong> von $\mathbf{x}$ und $\mathbf{y}$.<li><strong>Skalarmultiplikation</strong>: Jedem $a \in F$ und $\mathbf{x} \in \mathbb{V}$ wird ein eindeutiges Element $a\mathbf{x} \in \mathbb{V}$ zugeordnet. $a\mathbf{x}$ heißt das <strong>Skalarvielfache</strong> von $\mathbf{x}$.</ul><ol><li>Für alle $\mathbf{x},\mathbf{y} \in \mathbb{V}$ gilt $\mathbf{x} + \mathbf{y} = \mathbf{y} + \mathbf{x}$. (Kommutativgesetz der Addition)<li>Für alle $\mathbf{x},\mathbf{y},\mathbf{z} \in \mathbb{V}$ gilt $(\mathbf{x}+\mathbf{y})+\mathbf{z} = \mathbf{x}+(\mathbf{y}+\mathbf{z})$. (Assoziativgesetz der Addition)<li>Es existiert ein $\mathbf{0} \in \mathbb{V}$ mit $\mathbf{x} + \mathbf{0} = \mathbf{x}$ für alle $\mathbf{x} \in \mathbb{V}$. (<strong>Nullvektor</strong>, neutrales Element der Addition)<li>Zu jedem $\mathbf{x} \in \mathbb{V}$ existiert ein $\mathbf{y} \in \mathbb{V}$ mit $\mathbf{x}+\mathbf{y}=\mathbf{0}$. (additives inverses Element)<li>Für alle $\mathbf{x} \in \mathbb{V}$ gilt $1\mathbf{x} = \mathbf{x}$. (neutrales Element der Multiplikation)<li>Für alle $a,b \in F$ und alle $\mathbf{x} \in \mathbb{V}$ gilt $(ab)\mathbf{x} = a(b\mathbf{x})$. (Assoziativität der Skalarmultiplikation)<li>Für alle $a \in F$ und alle $\mathbf{x},\mathbf{y} \in \mathbb{V}$ gilt $a(\mathbf{x}+\mathbf{y}) = a\mathbf{x} + a\mathbf{y}$. (Distributivgesetz der Skalarmultiplikation über der Addition 1)<li>Für alle $a,b \in F$ und alle $\mathbf{x} \in \mathbb{V}$ gilt $(a+b)\mathbf{x} = a\mathbf{x} + b\mathbf{x}$. (Distributivgesetz der Skalarmultiplikation über der Addition 2)</ol></blockquote><p>Diese vektoralgebraische Definition umfasst einen größeren Bereich und schließt den zuvor erwähnten <a href="#vektor-im-engen-sinn-euklidischer-vektor">euklidischen Vektor</a> mit ein. Man kann überprüfen, dass auch der <a href="#vektor-im-engen-sinn-euklidischer-vektor">euklidische Vektor</a> die acht Eigenschaften erfüllt.</p><p>Der Ursprung und die Entwicklung des Vektorbegriffs sind eng mit praktischen Fragestellungen der Physik verknüpft, etwa dem Bestreben, Größen wie Kräfte, Bewegungen, Rotationen oder Felder quantitativ zu beschreiben. Aus physikalischer Motivation wurde der Begriff zunächst als <a href="#vektor-im-engen-sinn-euklidischer-vektor">euklidischer Vektor</a> formuliert; später hat die Mathematik diese physikalischen Konzepte verallgemeinert und theoretisch gefasst und dabei formale Strukturen wie Vektorraum, Skalarprodukt und Kreuzprodukt etabliert. Vektoren sind somit ein Konzept, das die Physik fordert und die Mathematik präzisiert hat, und eher ein interdisziplinäres Produkt als ein rein mathematisches.</p><p>Die in der klassischen Mechanik behandelten <a href="#vektor-im-engen-sinn-euklidischer-vektor">euklidischen Vektoren</a> lassen sich in einem <a href="#vektor-im-weiteren-sinn-element-eines-vektorraums">allgemeineren Rahmen</a> mathematisch darstellen; und in der modernen Physik verwendet man neben <a href="#vektor-im-engen-sinn-euklidischer-vektor">euklidischen Vektoren</a> auch abstraktere, in der Mathematik definierte Begriffe wie Vektorräume oder Funktionenräume und versieht sie mit physikalischer Bedeutung. Es ist daher unangemessen, die beiden Definitionen schlicht als „physikalische“ bzw. „mathematische“ Definition zu verstehen.</p><p>Eine ausführlichere Betrachtung von Vektorräumen folgt später. Zunächst fokussieren wir uns auf den engeren, geometrisch im Koordinatenraum darstellbaren Begriff, den euklidischen Vektor. Intuitive Beispiele euklidischer Vektoren helfen auch beim späteren Verallgemeinern auf andere Vektortypen.</p><h2 id="darstellung-von-vektoren">Darstellung von Vektoren</h2><h3 id="pfeildarstellung">Pfeildarstellung</h3><p>Dies ist die geläufigste, die geometrische Intuition am besten nutzende Darstellung. Der Betrag eines Vektors entspricht der Länge des Pfeils, die Richtung dem Pfeilrichtungssinn.</p><p><img src="https://upload.wikimedia.org/wikipedia/commons/9/95/Vector_from_A_to_B.svg" alt="Euclidean Vector from A to B" width="972" /></p><blockquote><p><em>Bildquelle</em></p><ul><li>Urheber: Wikipedia-Nutzer <a href="https://en.wikipedia.org/wiki/User:Nguyenthephuc">Nguyenthephuc</a><li>Lizenz: <a href="https://creativecommons.org/licenses/by-sa/3.0/deed.en">CC BY-SA 3.0</a></ul></blockquote><p>So anschaulich diese Darstellung ist, hat sie doch klare Grenzen für hochdimensionale Vektoren (ab 4D). Außerdem werden wir später nicht-euklidische Vektoren betrachten, die sich von vornherein kaum geometrisch visualisieren lassen. Daher lohnt es sich, die folgende Komponentendarstellung einzuüben.</p><h3 id="komponentendarstellung">Komponentendarstellung</h3><p>Vektoren gelten als identisch, wenn sie unabhängig von ihrer Lage den gleichen Betrag und die gleiche Richtung besitzen. Ist also ein Koordinatenraum gegeben, so kann man den Startpunkt des Vektors auf den Ursprung fixieren; dann <u>entspricht ein $n$-dimensionaler Vektor einem beliebigen Punkt im $n$-dimensionalen Raum</u>, und man kann den Vektor durch die Koordinaten seines Endpunkts darstellen. Diese Darstellung heißt <strong>Komponentendarstellung</strong>.</p>\[(a_1, a_2, \cdots, a_n) \in \mathbb{R}^n \text{ oder } \mathbb{C}^n\]<p><img src="https://upload.wikimedia.org/wikipedia/commons/5/5d/Position_vector.svg" alt="Position vector" /></p><blockquote><p><em>Bildquelle</em></p><ul><li>Urheber: Wikimedia-Nutzer <a href="https://commons.wikimedia.org/wiki/User:Acdx">Acdx</a><li>Lizenz: <a href="https://creativecommons.org/licenses/by-sa/3.0/deed.en">CC BY-SA 3.0</a></ul></blockquote><h2 id="grundoperationen-mit-vektoren">Grundoperationen mit Vektoren</h2><p>Die grundlegenden Operationen sind <strong>Summe</strong> und <strong>Skalarmultiplikation</strong>. Alle weiteren Vektoroperationen lassen sich als Kombination dieser beiden ausdrücken.</p><h3 id="vektorsumme">Vektorsumme</h3><p>Die Summe zweier Vektoren ist wieder ein Vektor; dessen Komponenten ergeben sich komponentenweise als Summe der Komponenten der Summanden.</p>\[(a_1, a_2, \cdots, a_n) + (b_1, b_2, \cdots, b_n) := (a_1+b_1, a_2+b_2, \cdots, a_n+b_n)\]<h3 id="skalarmultiplikation">Skalarmultiplikation</h3><p>Vektoren lassen sich strecken oder stauchen; dies wird durch die Multiplikation mit einem Skalar ausgedrückt. Das Ergebnis entspricht der komponentenweisen Multiplikation mit dem Skalar.</p>\[c(a_1, a_2, \cdots, a_n) := (ca_1, ca_2, \cdots, ca_n)\]<p><img src="https://upload.wikimedia.org/wikipedia/commons/1/1b/Scalar_multiplication_of_vectors2.svg" alt="Scalar multiplication of vectors" /></p><blockquote><p><em>Bildquelle</em></p><ul><li>Urheber: Wikipedia-Nutzer <a href="https://en.wikipedia.org/wiki/User:Silly_rabbit">Silly rabbit</a><li>Lizenz: <a href="https://creativecommons.org/licenses/by-sa/3.0/deed.en">CC BY-SA 3.0</a></ul></blockquote><h2 id="lineare-kombinationen-von-vektoren">Lineare Kombinationen von Vektoren</h2><p>Wie die Analysis von Zahlen $x$ und Funktionen $f(x)$ ausgeht, beginnt die Lineare Algebra mit Vektoren $\mathbf{v}, \mathbf{w}, \dots$ und linearen Kombinationen $c\mathbf{v} + d\mathbf{w} + \cdots$. Jede lineare Kombination von Vektoren ist eine Kombination der beiden Grundoperationen, <a href="#vektorsumme">Summe</a> und <a href="#skalarmultiplikation">Skalarmultiplikation</a>.</p><blockquote class="prompt-info"><p>Für endlich viele Vektoren $\mathbf{u}_1, \mathbf{u}_2, \dots, \mathbf{u}_n$ und Skalare $a_1, a_2, \dots, a_n$ heißt ein Vektor $\mathbf{v}$, der</p>\[\mathbf{v} = a_1\mathbf{u}_1 + a_2\mathbf{u}_2 + \cdots + a_n\mathbf{u}_n\]<p>erfüllt, eine <strong>lineare Kombination</strong> von $\mathbf{u}_1, \mathbf{u}_2, \dots, \mathbf{u}_n$. Dabei heißen $a_1, a_2, \dots, a_n$ die <strong>Koeffizienten</strong> dieser linearen Kombination.</p></blockquote><p>Warum sind lineare Kombinationen wichtig? Betrachte folgende Situation: <strong>$n$ Vektoren im $m$-dimensionalen Raum bilden die $n$ Spalten einer $m \times n$-Matrix.</strong></p>\[\begin{gather*} \mathbf{v}_1 = (a_{11}, a_{21}, \dots, a_{m1}), \\ \mathbf{v}_2 = (a_{12}, a_{22}, \dots, a_{m2}), \\ \vdots \\ \mathbf{v}_n = (a_{1n}, a_{2n}, \dots, a_{mn}) \\ \\ A = \Bigg[ \mathbf{v}_1 \quad \mathbf{v}_2 \quad \cdots \quad \mathbf{v}_n \Bigg] \end{gather*}\]<p>Zentral sind zwei Fragen:</p><ol><li><strong>Beschreibe alle möglichen linearen Kombinationen $Ax = x_1\mathbf{v}_1 + x_2\mathbf{v}_2 + \cdots + x_n\mathbf{v}_n$.</strong> Welche Menge bilden sie?<li>Finde <strong>Zahlen $x_1, x_2, \dots, x_n$</strong>, die einen gewünschten Ausgabeverktor $Ax = b$ ergeben.</ol><p>Die Antwort auf die zweite Frage betrachten wir später; zunächst konzentrieren wir uns auf die erste. Zur Vereinfachung nehmen wir als Beispiel zwei 2D-Vektoren ($m=2$, $n=2$), die beide nicht der Nullvektor $\mathbf{0}$ sind.</p><h3 id="lineare-kombination-cmathbfv--dmathbfw">Lineare Kombination $c\mathbf{v} + d\mathbf{w}$</h3><p>Ein Vektor $\mathbf{v}$ in der Ebene besitzt zwei Komponenten. Für jedes Skalar $c$ bildet <u>$c\mathbf{v}$ eine unendliche Gerade in der $xy$-Ebene durch den Ursprung, die parallel zu $\mathbf{v}$ verläuft</u>.</p><p>Liegt ein zweiter Vektor $\mathbf{w}$ nicht auf dieser Geraden (d. h. $\mathbf{v}$ und $\mathbf{w}$ sind nicht parallel), dann bildet $d\mathbf{w}$ eine zweite Gerade. Kombiniert man beide, so erkennt man, dass <strong>die lineare Kombination $c\mathbf{v} + d\mathbf{w}$ eine durch den Ursprung verlaufende Ebene bildet</strong>.</p><p><img src="https://upload.wikimedia.org/wikipedia/commons/6/6f/Linjcomb.png" alt="Linear combinations of two vectors" /></p><blockquote><p><em>Bildquelle</em></p><ul><li>Urheber: Wikimedia-Nutzer <a href="https://commons.wikimedia.org/wiki/User:Svjo">Svjo</a><li>Lizenz: <a href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">CC BY-SA 4.0</a></ul></blockquote><h3 id="erzeugung">Erzeugung</h3><p>Lineare Kombinationen von Vektoren erzeugen somit einen Vektorraum; dies nennt man die <strong>lineare Hülle (span)</strong>.</p><blockquote class="prompt-info"><p><strong>Definition</strong><br /> Ist $S$ eine nichtleere Teilmenge des Vektorraums $\mathbb{V}$, so heißt die Menge aller aus Vektoren von $S$ gebildeten linearen Kombinationen die <strong>lineare Hülle</strong> von $S$ und wird mit $\mathrm{span}(S)$ bezeichnet. Dabei wird $\mathrm{span}(\emptyset) = {0}$ definiert.</p></blockquote><blockquote class="prompt-info"><p><strong>Definition</strong><br /> Für eine Teilmenge $S$ des Vektorraums $\mathbb{V}$ gilt: Wenn $\mathrm{span}(S) = \mathbb{V}$, dann sagt man, dass $S$ $\mathbb{V}$ erzeugt (generate bzw. spannt auf).</p></blockquote><p>Auch wenn wir Begriffe wie Unterraum und Basis noch nicht behandelt haben, hilft das obige Beispiel, den Begriff des Vektorraums zu verstehen.</p>]]> </content> </entry> <entry><title xml:lang="de">Zusammenfassung des Kaggle-„Pandas“-Kurses (2) – Lektion 4–6</title><link href="https://www.yunseo.kim/de/posts/summary-of-kaggle-pandas-course-2/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/summary-of-kaggle-pandas-course-2/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/summary-of-kaggle-pandas-course-2/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/summary-of-kaggle-pandas-course-2/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/summary-of-kaggle-pandas-course-2/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/summary-of-kaggle-pandas-course-2/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/summary-of-kaggle-pandas-course-2/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/summary-of-kaggle-pandas-course-2/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/summary-of-kaggle-pandas-course-2/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/summary-of-kaggle-pandas-course-2/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/summary-of-kaggle-pandas-course-2/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/summary-of-kaggle-pandas-course-2/" rel="alternate" type="text/html" hreflang="am" /><published>2025-08-24T00:00:00+09:00</published> <updated>2025-08-24T00:00:00+09:00</updated> <id>https://www.yunseo.kim/de/posts/summary-of-kaggle-pandas-course-2/</id> <author> <name>Yunseo Kim</name> </author> <category term="AI & Data" /> <category term="Machine Learning" /> <summary xml:lang="de">Praxisleitfaden zu Pandas für Datenbereinigung und -aufbereitung: Gruppieren &amp; Sortieren, Datentypen &amp; Missing Values, Umbenennen &amp; Kombinieren. Zusammenfassung und Ergänzungen zu Kaggle‑Lektion 4–6.</summary> <content type="html" xml:lang="de"> <![CDATA[<p>Praxisleitfaden zu Pandas für Datenbereinigung und -aufbereitung: Gruppieren & Sortieren, Datentypen & Missing Values, Umbenennen & Kombinieren. Zusammenfassung und Ergänzungen zu Kaggle‑Lektion 4–6.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><p>Hier fasse ich das zusammen, was ich im <a href="https://www.kaggle.com/learn/pandas">Pandas</a>-Kurs von Kaggle gelernt habe.<br /> Da der Umfang recht groß ist, habe ich es in zwei Teile aufgeteilt.</p><ul><li><a href="/de/posts/summary-of-kaggle-pandas-course-1/">Teil 1: Lektion 1–3</a><li>Teil 2: Lektion 4–6 (dieser Beitrag)</ul><p><img src="/assets/img/kaggle-pandas/certificate.png" alt="Zertifikat über den Abschluss" /></p><h2 id="lektion-4-gruppieren-und-sortieren">Lektion 4. Gruppieren und Sortieren</h2><p>Oft muss man Daten in Gruppen einteilen und gruppenweise Operationen ausführen oder nach bestimmten Kriterien sortieren.</p><h3 id="gruppenauswertung">Gruppenauswertung</h3><p>Mit der Methode <a href="https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.groupby.html"><code class="language-plaintext highlighter-rouge">groupby()</code></a> lassen sich Daten mit gleichem Wert in einer bestimmten Spalte zu Gruppen zusammenfassen und anschließend gruppenweise überblicken oder transformieren.</p><p>Zuvor hatten wir bereits die <a href="/de/posts/summary-of-kaggle-pandas-course-1/#uberblick-uber-die-daten">Methode <code class="language-plaintext highlighter-rouge">value_counts()</code></a> kennengelernt; dasselbe Verhalten kann man mit <code class="language-plaintext highlighter-rouge">groupby()</code> wie folgt nachbilden.</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">reviews</span><span class="p">.</span><span class="nf">groupby</span><span class="p">(</span><span class="sh">'</span><span class="s">taster_name</span><span class="sh">'</span><span class="p">).</span><span class="nf">size</span><span class="p">()</span>
</pre></div></div><ol><li>Den DataFrame <code class="language-plaintext highlighter-rouge">reviews</code> nach gleichen Werten in der Spalte <code class="language-plaintext highlighter-rouge">taster_name</code> gruppieren<li>Die Größe jeder Gruppe (Anzahl der Zeilen) als Series zurückgeben</ol><p>Oder:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">reviews</span><span class="p">.</span><span class="nf">groupby</span><span class="p">(</span><span class="sh">'</span><span class="s">taster_name</span><span class="sh">'</span><span class="p">).</span><span class="n">taster_name</span><span class="p">.</span><span class="nf">count</span><span class="p">()</span>
</pre></div></div><ol><li>Den DataFrame <code class="language-plaintext highlighter-rouge">reviews</code> nach gleichen Werten in der Spalte <code class="language-plaintext highlighter-rouge">taster_name</code> gruppieren<li>Pro Gruppe die Spalte <code class="language-plaintext highlighter-rouge">taster_name</code> auswählen<li>Die Anzahl der Nicht-Null-Werte als Series zurückgeben</ol><p>Mit anderen Worten: <code class="language-plaintext highlighter-rouge">value_counts()</code> ist im Grunde nur eine Abkürzung für obige Operationen. Neben <a href="https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.count.html"><code class="language-plaintext highlighter-rouge">count()</code></a> lassen sich so beliebige Übersichts-/Aggregatfunktionen einsetzen. Möchte man z. B. den Minimalpreis je Bewertungspunkt ermitteln, geht das so:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">reviews</span><span class="p">.</span><span class="nf">groupby</span><span class="p">(</span><span class="sh">'</span><span class="s">points</span><span class="sh">'</span><span class="p">).</span><span class="n">price</span><span class="p">.</span><span class="nf">min</span><span class="p">()</span>
</pre></div></div><div class="language-plaintext highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
</pre><td class="rouge-code"><pre>points
80      5.0
81      5.0
       ... 
99     44.0
100    80.0
Name: price, Length: 21, dtype: float64
</pre></div></div><ol><li>Den DataFrame <code class="language-plaintext highlighter-rouge">reviews</code> nach gleichen Werten in der Spalte <code class="language-plaintext highlighter-rouge">points</code> gruppieren<li>Pro Gruppe die Spalte <code class="language-plaintext highlighter-rouge">price</code> auswählen<li>Den Minimalwert je Gruppe als Series zurückgeben</ol><p>Man kann auch nach mehreren Spalten gruppieren. Um je Land und Provinz den Wein mit der höchsten Punktzahl auszuwählen:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">reviews</span><span class="p">.</span><span class="nf">groupby</span><span class="p">([</span><span class="sh">'</span><span class="s">country</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">province</span><span class="sh">'</span><span class="p">]).</span><span class="nf">apply</span><span class="p">(</span><span class="k">lambda</span> <span class="n">df</span><span class="p">:</span> <span class="n">df</span><span class="p">.</span><span class="n">loc</span><span class="p">[</span><span class="n">df</span><span class="p">.</span><span class="n">points</span><span class="p">.</span><span class="nf">idxmax</span><span class="p">()])</span>
</pre></div></div><p>Eine weitere nützliche Methode von DataFrameGroupBy-Objekten ist <a href="https://pandas.pydata.org/docs/reference/api/pandas.core.groupby.DataFrameGroupBy.agg.html"><code class="language-plaintext highlighter-rouge">agg()</code></a>. Damit kann man nach dem Gruppieren mehrere Funktionen pro Gruppe gleichzeitig ausführen.</p><blockquote class="prompt-tip"><p>Als Argumente sind zulässig:</p><ul><li>eine Funktion<li>ein Funktionsname als String<li>eine Liste aus Funktionen oder Funktionsnamen<li>ein Dict, dessen Keys Achsenlabels sind und dessen Values je Achse eine Funktion oder Funktionsliste angeben</ul><p>Die Funktionen müssen</p><ul><li>einen DataFrame als Eingabe akzeptieren können oder<li>mit <a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.apply.html"><code class="language-plaintext highlighter-rouge">DataFrame.apply()</code></a> <a href="/de/posts/summary-of-kaggle-pandas-course-1/#abbildungen-maps">wie zuvor behandelt</a> übergebbar sein.</ul><p>Dies stand im ursprünglichen Kaggle-Kurs nicht; es wurde anhand der offiziellen Pandas‑Doku ergänzt.</p></blockquote><p>Beispiel: einfache Preisstatistiken je Land berechnen.</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">reviews</span><span class="p">.</span><span class="nf">groupby</span><span class="p">([</span><span class="sh">'</span><span class="s">country</span><span class="sh">'</span><span class="p">]).</span><span class="n">price</span><span class="p">.</span><span class="nf">agg</span><span class="p">([</span><span class="nb">len</span><span class="p">,</span> <span class="nb">min</span><span class="p">,</span> <span class="nb">max</span><span class="p">])</span>
</pre></div></div><blockquote class="prompt-tip"><p><code class="language-plaintext highlighter-rouge">len</code> ist die Python‑Builtin‑Funktion <a href="https://docs.python.org/3/library/functions.html#len"><code class="language-plaintext highlighter-rouge">len()</code></a>. Im obigen Beispiel liefert sie die <u>inklusive fehlender Werte</u> gezählte Anzahl der Preiswerte (<code class="language-plaintext highlighter-rouge">price</code>) pro Gruppe (<code class="language-plaintext highlighter-rouge">country</code>). Da sie mit DataFrames bzw. Series umgehen kann, ist dieser Einsatz möglich.</p><p>Die Pandas‑Methode <a href="https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.count.html"><code class="language-plaintext highlighter-rouge">count()</code></a> zählt hingegen nur <u>nicht fehlende (gültige) Werte</u> und unterscheidet sich somit im Verhalten.</p><p>Dies stand im ursprünglichen Kaggle‑Kurs nicht; es wurde anhand der Python‑ und Pandas‑Doku ergänzt.</p></blockquote><h3 id="multiindex">MultiIndex</h3><p>Bei gruppierungsbasierten Transformationen erhält man mitunter DataFrames mit mehrstufigem Index statt eines einfachen Index.</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
</pre><td class="rouge-code"><pre><span class="n">countries_reviewed</span> <span class="o">=</span> <span class="n">reviews</span><span class="p">.</span><span class="nf">groupby</span><span class="p">([</span><span class="sh">'</span><span class="s">country</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">province</span><span class="sh">'</span><span class="p">]).</span><span class="n">description</span><span class="p">.</span><span class="nf">agg</span><span class="p">([</span><span class="nb">len</span><span class="p">])</span>
<span class="n">countries_reviewed</span>
</pre></div></div><table><tr><th><th><th>len<tr><th>Country<th>province<th><tr><td rowspan="2">Argentina<td>Mendoza Province<td>3264<tr><td>Other<td>536<tr><td>...<td>...<td>...<tr><td rowspan="2">Uruguay<td>San Jose<td>3<tr><td>Uruguay<td>24</table><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
</pre><td class="rouge-code"><pre><span class="n">mi</span> <span class="o">=</span> <span class="n">countries_reviewed</span><span class="p">.</span><span class="n">index</span>
<span class="nf">type</span><span class="p">(</span><span class="n">mi</span><span class="p">)</span>
</pre></div></div><div class="language-plaintext highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre>pandas.core.indexes.multi.MultiIndex
</pre></div></div><p>Ein MultiIndex bringt einige Methoden mit, die es für einfache Indizes nicht gibt. Ausführliche Beispiele und Richtlinien finden sich im Abschnitt „MultiIndex / advanced indexing“ des <a href="https://pandas.pydata.org/pandas-docs/stable/user_guide/advanced.html">Pandas User Guide</a>.</p><p>Am häufigsten wird man jedoch den MultiIndex wieder zu einem normalen Index zurückführen wollen – mit <a href="https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.reset_index.html"><code class="language-plaintext highlighter-rouge">reset_index()</code></a>:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">countries_reviewed</span><span class="p">.</span><span class="nf">reset_index</span><span class="p">()</span>
</pre></div></div><table><thead><tr><th> <th>country<th>province<th>len<tbody><tr><td>0<td>Argentina<td>Mendoza Province<td>3264<tr><td>1<td>Argentina<td>Other<td>536<tr><td>…<td>…<td>…<td>…<tr><td>423<td>Uruguay<td>San Jose<td>3<tr><td>424<td>Uruguay<td>Uruguay<td>24</table><h3 id="sortieren">Sortieren</h3><p>Schaut man sich unser Beispiel <code class="language-plaintext highlighter-rouge">countries_reviewed</code> an, fällt auf: Die gruppierten Ergebnisse werden in der Reihenfolge der Indexwerte zurückgegeben. Die Zeilenreihenfolge des <code class="language-plaintext highlighter-rouge">groupby</code>-Ergebnisses wird also nicht vom Inhalt, sondern vom Index bestimmt.</p><p>Bei Bedarf kann man selbst sortieren – komfortabel mit <a href="https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.sort_values.html"><code class="language-plaintext highlighter-rouge">sort_values()</code></a>. Zum Beispiel lässt sich nach der enthaltenen Anzahl („len“) aufsteigend sortieren:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
</pre><td class="rouge-code"><pre><span class="n">countries_reviewed</span> <span class="o">=</span> <span class="n">countries_reviewed</span><span class="p">.</span><span class="nf">reset_index</span><span class="p">()</span>
<span class="n">countries_reviewed</span><span class="p">.</span><span class="nf">sort_values</span><span class="p">(</span><span class="n">by</span><span class="o">=</span><span class="sh">'</span><span class="s">len</span><span class="sh">'</span><span class="p">)</span>
</pre></div></div><table><thead><tr><th> <th>country<th>province<th>len<tbody><tr><td>179<td>Greece<td>Muscat of Kefallonian<td>1<tr><td>192<td>Greece<td>Sterea Ellada<td>1<tr><td>…<td>…<td>…<td>…<tr><td>415<td>US<td>Washington<td>8639<tr><td>392<td>US<td>California<td>36247</table><p>Standardmäßig sortiert <code class="language-plaintext highlighter-rouge">sort_values()</code> aufsteigend; mit einer Option geht auch absteigend:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">countries_reviewed</span><span class="p">.</span><span class="nf">sort_values</span><span class="p">(</span><span class="n">by</span><span class="o">=</span><span class="sh">'</span><span class="s">len</span><span class="sh">'</span><span class="p">,</span> <span class="n">ascending</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
</pre></div></div><table><thead><tr><th> <th>country<th>province<th>len<tbody><tr><td>392<td>US<td>California<td>36247<tr><td>415<td>US<td>Washington<td>8639<tr><td>…<td>…<td>…<td>…<tr><td>63<td>Chile<td>Coelemu<td>1<tr><td>149<td>Greece<td>Beotia<td>1</table><p>Zum Sortieren nach dem Index verwendet man <a href="https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.sort_index.html"><code class="language-plaintext highlighter-rouge">sort_index()</code></a>. Es besitzt dieselben Argumente und dieselbe Standardreihenfolge (absteigend) wie <code class="language-plaintext highlighter-rouge">sort_values()</code>; die Anwendung ist identisch.</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">countries_reviewed</span><span class="p">.</span><span class="nf">sort_index</span><span class="p">()</span>
</pre></div></div><table><thead><tr><th> <th>country<th>province<th>len<tbody><tr><td>0<td>Argentina<td>Mendoza Province<td>3264<tr><td>1<td>Argentina<td>Other<td>536<tr><td>…<td>…<td>…<td>…<tr><td>423<td>Uruguay<td>San Jose<td>3<tr><td>424<td>Uruguay<td>Uruguay<td>24</table><p>Schließlich kann man auch nach mehreren Spalten gleichzeitig sortieren:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">countries_reviewed</span><span class="p">.</span><span class="nf">sort_values</span><span class="p">(</span><span class="n">by</span><span class="o">=</span><span class="p">[</span><span class="sh">'</span><span class="s">country</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">len</span><span class="sh">'</span><span class="p">])</span>
</pre></div></div><h2 id="lektion-5-datentypen-und-fehlende-werte">Lektion 5. Datentypen und fehlende Werte</h2><p>Reale Daten sind selten perfekt bereinigt. Meistens muss man Datentypen konvertieren und mit fehlenden Werten umgehen. In vielen Projekten ist genau dieser Schritt die größte Hürde.</p><h3 id="datentypen">Datentypen</h3><p>Der Datentyp einer DataFrame‑Spalte bzw. Series heißt in Pandas der <strong>dtype</strong>. Über das Attribut <code class="language-plaintext highlighter-rouge">dtype</code> ermittelt man den Typ einer Spalte. Beispiel: der <code class="language-plaintext highlighter-rouge">dtype</code> der Spalte <code class="language-plaintext highlighter-rouge">price</code> im DataFrame <code class="language-plaintext highlighter-rouge">reviews</code>.</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">reviews</span><span class="p">.</span><span class="n">price</span><span class="p">.</span><span class="n">dtype</span>
</pre></div></div><div class="language-plaintext highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre>dtype('float64')
</pre></div></div><p>Mit dem Attribut <code class="language-plaintext highlighter-rouge">dtypes</code> bekommt man alle Spaltentypen auf einmal:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">reviews</span><span class="p">.</span><span class="n">dtypes</span>
</pre></div></div><div class="language-plaintext highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
</pre><td class="rouge-code"><pre>country        object
description    object
                ...  
variety        object
winery         object
Length: 13, dtype: object
</pre></div></div><p>Der Datentyp gibt an, wie Pandas die Werte intern speichert: <code class="language-plaintext highlighter-rouge">float64</code> für 64‑Bit‑Gleitkommazahlen, <code class="language-plaintext highlighter-rouge">int64</code> für 64‑Bit‑Integer usw.</p><p>Eine Besonderheit: Spalten, die ausschließlich Strings enthalten, besitzen keinen eigenen String‑Typ, sondern sind vom Typ <code class="language-plaintext highlighter-rouge">object</code>.</p><p>Mit <a href="https://pandas.pydata.org/docs/reference/api/pandas.Series.astype.html"><code class="language-plaintext highlighter-rouge">astype()</code></a> lassen sich Spalten in andere Typen konvertieren. So kann man etwa die <code class="language-plaintext highlighter-rouge">int64</code>‑Spalte <code class="language-plaintext highlighter-rouge">points</code> in <code class="language-plaintext highlighter-rouge">float64</code> konvertieren:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">reviews</span><span class="p">.</span><span class="n">points</span><span class="p">.</span><span class="nf">astype</span><span class="p">(</span><span class="sh">'</span><span class="s">float64</span><span class="sh">'</span><span class="p">)</span>
</pre></div></div><div class="language-plaintext highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
</pre><td class="rouge-code"><pre>0         87.0
1         87.0
          ... 
129969    90.0
129970    90.0
Name: points, Length: 129971, dtype: float64
</pre></div></div><p>Auch der Index eines DataFrames oder einer Series hat einen eigenen Datentyp:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">reviews</span><span class="p">.</span><span class="n">index</span><span class="p">.</span><span class="n">dtype</span>
</pre></div></div><div class="language-plaintext highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre>dtype('int64')
</pre></div></div><p>Daneben unterstützt Pandas externe Typen wie Kategoriedaten und Zeitreihen.</p><h3 id="fehlende-werte">Fehlende Werte</h3><p>Leere Einträge (ohne Wert) werden als <code class="language-plaintext highlighter-rouge">NaN</code> („Not a Number“) markiert. Aus technischen Gründen ist <code class="language-plaintext highlighter-rouge">NaN</code> stets vom Typ <code class="language-plaintext highlighter-rouge">float64</code>.</p><p>Pandas bietet spezielle Funktionen für Missing Values. <a href="/de/posts/summary-of-kaggle-pandas-course-1/#bedingte-auswahl">Ähnlich wie bereits kurz gesehen</a> gibt es neben Methoden auch unabhängige Funktionen: <a href="https://pandas.pydata.org/docs/reference/api/pandas.isna.html"><code class="language-plaintext highlighter-rouge">pd.isna</code></a> und <a href="https://pandas.pydata.org/docs/reference/api/pandas.notna.html"><code class="language-plaintext highlighter-rouge">pd.notna</code></a>. Sie liefern, je nach Eingabe, einen booleschen Einzelwert oder ein boolesches Array und lassen sich so einsetzen:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">reviews</span><span class="p">[</span><span class="n">pd</span><span class="p">.</span><span class="nf">isna</span><span class="p">(</span><span class="n">reviews</span><span class="p">.</span><span class="n">country</span><span class="p">)]</span>
</pre></div></div><p>Oft prüft man zunächst, ob Missing Values vorhanden sind, und füllt sie anschließend sinnvoll. Eine Strategie ist <a href="https://pandas.pydata.org/docs/reference/api/pandas.Series.fillna.html"><code class="language-plaintext highlighter-rouge">fillna()</code></a>: fehlende Werte durch einen geeigneten Ersatzwert auffüllen. Beispiel: alle <code class="language-plaintext highlighter-rouge">NaN</code> in <code class="language-plaintext highlighter-rouge">reviews.region_2</code> durch <code class="language-plaintext highlighter-rouge">"Unknown"</code> ersetzen.</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">reviews</span><span class="p">.</span><span class="n">region_2</span><span class="p">.</span><span class="nf">fillna</span><span class="p">(</span><span class="sh">"</span><span class="s">Unknown</span><span class="sh">"</span><span class="p">)</span>
</pre></div></div><p>Alternativ kann man mit dem jeweils nächstliegenden gültigen Wert aus der Vergangenheit/Zukunft auffüllen (Forward/Backward Fill): <a href="https://pandas.pydata.org/docs/reference/api/pandas.Series.ffill.html"><code class="language-plaintext highlighter-rouge">ffill()</code></a> bzw. <a href="https://pandas.pydata.org/docs/reference/api/pandas.Series.bfill.html"><code class="language-plaintext highlighter-rouge">bfill()</code></a>.</p><blockquote class="prompt-danger"><p>Früher konnte man <code class="language-plaintext highlighter-rouge">fillna()</code> auch mit dem Parameter <code class="language-plaintext highlighter-rouge">method</code> und den Strings <code class="language-plaintext highlighter-rouge">'ffill'</code>/<code class="language-plaintext highlighter-rouge">'bfill'</code> verwenden; seit Pandas 2.1.0 ist das deprecatet. Stattdessen sollten situativ <code class="language-plaintext highlighter-rouge">ffill()</code> bzw. <code class="language-plaintext highlighter-rouge">bfill()</code> genutzt werden.</p></blockquote><p>Mitunter möchte man Werte – auch wenn sie nicht fehlend sind – pauschal durch andere ersetzen. Im Originalkurs wird z. B. ein geänderter Twitter‑Handle einer/s Rezensent:in erwähnt. Ein anderes Beispiel (hierzulande vielleicht greifbarer):</p><p>Angenommen, in Südkorea würde der nördliche Teil der Provinz Gyeonggi als neue Verwaltungseinheit abgetrennt und als <strong>Gyeonggibuk-do</strong> eingeführt, und ein Datensatz verwendet schon diesen Namen. Nun kommt jemand auf die „glorreiche“ Idee, <strong>Gyeonggibuk-do</strong> in <strong>Pyeonghwanuri Special Self-Governing Province</strong> umzubenennen – und setzt es tatsächlich durch. Dann müsste man im bestehenden Datensatz <code class="language-plaintext highlighter-rouge">"Gyeonggibuk-do"</code> durch <code class="language-plaintext highlighter-rouge">"Pyeonghwanuri State"</code> bzw. <code class="language-plaintext highlighter-rouge">"Pyeonghwanuri Special Self-Governing Province"</code> ersetzen. In Pandas bietet sich dafür die Methode <a href="https://pandas.pydata.org/docs/reference/api/pandas.Series.replace.html"><code class="language-plaintext highlighter-rouge">replace()</code></a> an.</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">rok_2030_census</span><span class="p">.</span><span class="n">province</span><span class="p">.</span><span class="nf">replace</span><span class="p">(</span><span class="sh">"</span><span class="s">Gyeonggibuk-do</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">Pyeonghwanuri Special Self-Governing Province</span><span class="sh">"</span><span class="p">)</span>
</pre></div></div><p>Mit dem obigen Code ersetzt man in der Spalte <code class="language-plaintext highlighter-rouge">province</code> des DataFrames <code class="language-plaintext highlighter-rouge">rok_2030_census</code> alle Vorkommen von <code class="language-plaintext highlighter-rouge">"Gyeonggibuk-do"</code> durch den langen neuen Namen.</p><p>Solche String‑Ersetzungen sind auch bei der Datenbereinigung hilfreich: Missing Values erscheinen in der Praxis oft nicht als <code class="language-plaintext highlighter-rouge">NaN</code>, sondern als Strings wie <code class="language-plaintext highlighter-rouge">"Unknown"</code>, <code class="language-plaintext highlighter-rouge">"Undisclosed"</code> oder <code class="language-plaintext highlighter-rouge">"Invalid"</code>. Insbesondere bei OCR‑Erfassung älterer Dokumente ist das eher die Regel als die Ausnahme.</p><h2 id="lektion-6-umbenennen-und-kombinieren">Lektion 6. Umbenennen und Kombinieren</h2><p>Mitunter möchte man Spalten- oder Indexnamen ändern. Häufig muss man auch mehrere DataFrames/Series zusammenführen.</p><h3 id="umbenennen">Umbenennen</h3><p>Mit <a href="https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.rename.html"><code class="language-plaintext highlighter-rouge">rename()</code></a> lassen sich Spalten- oder Indexnamen anpassen. <code class="language-plaintext highlighter-rouge">rename()</code> akzeptiert verschiedene Eingabeformen; am bequemsten ist meist ein Python‑Dict. Beispiel: Im DataFrame <code class="language-plaintext highlighter-rouge">reviews</code> die Spalte <code class="language-plaintext highlighter-rouge">points</code> in <code class="language-plaintext highlighter-rouge">score</code> umbenennen sowie die Indexwerte <code class="language-plaintext highlighter-rouge">0</code>, <code class="language-plaintext highlighter-rouge">1</code> in <code class="language-plaintext highlighter-rouge">firstEntry</code>, <code class="language-plaintext highlighter-rouge">secondEntry</code>:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">reviews</span><span class="p">.</span><span class="nf">rename</span><span class="p">(</span><span class="n">columns</span><span class="o">=</span><span class="p">{</span><span class="sh">'</span><span class="s">points</span><span class="sh">'</span><span class="p">:</span> <span class="sh">'</span><span class="s">score</span><span class="sh">'</span><span class="p">})</span>
</pre></div></div><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">reviews</span><span class="p">.</span><span class="nf">rename</span><span class="p">(</span><span class="n">index</span><span class="o">=</span><span class="p">{</span><span class="mi">0</span><span class="p">:</span> <span class="sh">'</span><span class="s">firstEntry</span><span class="sh">'</span><span class="p">,</span> <span class="mi">1</span><span class="p">:</span> <span class="sh">'</span><span class="s">secondEntry</span><span class="sh">'</span><span class="p">})</span>
</pre></div></div><p>Spaltennamen ändert man recht häufig; Indexwerte umzubenennen ist selten und für solche Zwecke nutzt man meist – <a href="/de/posts/summary-of-kaggle-pandas-course-1/#mit-dem-index-arbeiten">wie zuvor gesehen</a> – die Methode <a href="https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.set_index.html"><code class="language-plaintext highlighter-rouge">set_index()</code></a>.</p><p>Zeilen- und Spaltenachsen besitzen jeweils ein eigenes <code class="language-plaintext highlighter-rouge">name</code>‑Attribut; mit <code class="language-plaintext highlighter-rouge">rename_axis()</code> kann man diese Achsennamen setzen. Beispielsweise lässt sich die Zeilenachse <code class="language-plaintext highlighter-rouge">wines</code> und die Spaltenachse <code class="language-plaintext highlighter-rouge">fields</code> nennen:</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre><td class="rouge-code"><pre><span class="n">reviews</span><span class="p">.</span><span class="nf">rename_axis</span><span class="p">(</span><span class="sh">"</span><span class="s">wines</span><span class="sh">"</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="sh">'</span><span class="s">index</span><span class="sh">'</span><span class="p">).</span><span class="nf">rename_axis</span><span class="p">(</span><span class="sh">"</span><span class="s">fields</span><span class="sh">"</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="sh">'</span><span class="s">columns</span><span class="sh">'</span><span class="p">)</span>
</pre></div></div><h3 id="datensätze-kombinieren">Datensätze kombinieren</h3><p>Häufig gilt es, DataFrames oder Series zu kombinieren. Pandas bietet dafür drei zentrale Werkzeuge – vom Einfachen zum Komplexen: <a href="https://pandas.pydata.org/docs/reference/api/pandas.concat.html"><code class="language-plaintext highlighter-rouge">concat()</code></a>, <a href="https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.join.html"><code class="language-plaintext highlighter-rouge">join()</code></a> und <a href="https://pandas.pydata.org/docs/reference/api/pandas.merge.html"><code class="language-plaintext highlighter-rouge">merge()</code></a>. Der Kaggle‑Kurs konzentriert sich auf <code class="language-plaintext highlighter-rouge">concat()</code> und <code class="language-plaintext highlighter-rouge">join()</code>, weil sich vieles, was mit <code class="language-plaintext highlighter-rouge">merge()</code> möglich ist, mit <code class="language-plaintext highlighter-rouge">join()</code> einfacher erledigen lässt.</p><p><code class="language-plaintext highlighter-rouge">concat()</code> ist am einfachsten: Es hängt mehrere DataFrames/Series entlang einer Achse aneinander. Besonders nützlich, wenn die zu kombinierenden Objekte dieselben Felder (Spalten) haben. Standardmäßig wird entlang der Indexachse (Zeilen) verkettet; mit <code class="language-plaintext highlighter-rouge">axis=1</code> bzw. <code class="language-plaintext highlighter-rouge">axis='columns'</code> entlang der Spalten.</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
</pre><td class="rouge-code"><pre><span class="o">&gt;&gt;&gt;</span> <span class="n">s1</span> <span class="o">=</span> <span class="n">pd</span><span class="p">.</span><span class="nc">Series</span><span class="p">([</span><span class="sh">'</span><span class="s">a</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">b</span><span class="sh">'</span><span class="p">])</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">s2</span> <span class="o">=</span> <span class="n">pd</span><span class="p">.</span><span class="nc">Series</span><span class="p">([</span><span class="sh">'</span><span class="s">c</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">d</span><span class="sh">'</span><span class="p">])</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">pd</span><span class="p">.</span><span class="nf">concat</span><span class="p">([</span><span class="n">s1</span><span class="p">,</span> <span class="n">s2</span><span class="p">])</span>
<span class="mi">0</span>    <span class="n">a</span>
<span class="mi">1</span>    <span class="n">b</span>
<span class="mi">0</span>    <span class="n">c</span>
<span class="mi">1</span>    <span class="n">d</span>
<span class="n">dtype</span><span class="p">:</span> <span class="nb">object</span>
</pre></div></div><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
</pre><td class="rouge-code"><pre><span class="o">&gt;&gt;&gt;</span> <span class="n">df1</span> <span class="o">=</span> <span class="n">pd</span><span class="p">.</span><span class="nc">DataFrame</span><span class="p">([[</span><span class="sh">'</span><span class="s">a</span><span class="sh">'</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="sh">'</span><span class="s">b</span><span class="sh">'</span><span class="p">,</span> <span class="mi">2</span><span class="p">]],</span>
<span class="p">...</span>                    <span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="sh">'</span><span class="s">letter</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">number</span><span class="sh">'</span><span class="p">])</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">df1</span>
  <span class="n">letter</span>  <span class="n">number</span>
<span class="mi">0</span>      <span class="n">a</span>       <span class="mi">1</span>
<span class="mi">1</span>      <span class="n">b</span>       <span class="mi">2</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">df2</span> <span class="o">=</span> <span class="n">pd</span><span class="p">.</span><span class="nc">DataFrame</span><span class="p">([[</span><span class="sh">'</span><span class="s">c</span><span class="sh">'</span><span class="p">,</span> <span class="mi">3</span><span class="p">],</span> <span class="p">[</span><span class="sh">'</span><span class="s">d</span><span class="sh">'</span><span class="p">,</span> <span class="mi">4</span><span class="p">]],</span>
<span class="p">...</span>                    <span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="sh">'</span><span class="s">letter</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">number</span><span class="sh">'</span><span class="p">])</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">df2</span>
  <span class="n">letter</span>  <span class="n">number</span>
<span class="mi">0</span>      <span class="n">c</span>       <span class="mi">3</span>
<span class="mi">1</span>      <span class="n">d</span>       <span class="mi">4</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">pd</span><span class="p">.</span><span class="nf">concat</span><span class="p">([</span><span class="n">df1</span><span class="p">,</span> <span class="n">df2</span><span class="p">])</span>
  <span class="n">letter</span>  <span class="n">number</span>
<span class="mi">0</span>      <span class="n">a</span>       <span class="mi">1</span>
<span class="mi">1</span>      <span class="n">b</span>       <span class="mi">2</span>
<span class="mi">0</span>      <span class="n">c</span>       <span class="mi">3</span>
<span class="mi">1</span>      <span class="n">d</span>       <span class="mi">4</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">df4</span> <span class="o">=</span> <span class="n">pd</span><span class="p">.</span><span class="nc">DataFrame</span><span class="p">([[</span><span class="sh">'</span><span class="s">bird</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">polly</span><span class="sh">'</span><span class="p">],</span> <span class="p">[</span><span class="sh">'</span><span class="s">monkey</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">george</span><span class="sh">'</span><span class="p">]],</span>
<span class="p">...</span>                    <span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="sh">'</span><span class="s">animal</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">name</span><span class="sh">'</span><span class="p">])</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">df4</span>
   <span class="n">animal</span>    <span class="n">name</span>
<span class="mi">0</span>    <span class="n">bird</span>   <span class="n">polly</span>
<span class="mi">1</span>  <span class="n">monkey</span>  <span class="n">george</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">pd</span><span class="p">.</span><span class="nf">concat</span><span class="p">([</span><span class="n">df1</span><span class="p">,</span> <span class="n">df4</span><span class="p">],</span> <span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
  <span class="n">letter</span>  <span class="n">number</span>  <span class="n">animal</span>    <span class="n">name</span>
<span class="mi">0</span>      <span class="n">a</span>       <span class="mi">1</span>    <span class="n">bird</span>   <span class="n">polly</span>
<span class="mi">1</span>      <span class="n">b</span>       <span class="mi">2</span>  <span class="n">monkey</span>  <span class="n">george</span>
</pre></div></div><blockquote class="prompt-tip"><p>Laut <a href="(https://pandas.pydata.org/docs/reference/api/pandas.concat.html)">Pandas‑Doku</a> sollte man viele Zeilen nicht in einer Schleife einzeln an einen DataFrame anhängen. Stattdessen die Zeilen in einer Liste sammeln und einmalig mit <code class="language-plaintext highlighter-rouge">concat()</code> zusammenfügen.</p></blockquote><p><code class="language-plaintext highlighter-rouge">join()</code> ist etwas komplexer: Es hängt einen DataFrame anhand des Index an einen anderen an. Falls Spaltennamen kollidieren, müssen mit den Parametern <code class="language-plaintext highlighter-rouge">lsuffix</code> und <code class="language-plaintext highlighter-rouge">rsuffix</code> Suffixe angegeben werden, die an die jeweiligen Spaltennamen angehängt werden.</p><div class="language-python highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
</pre><td class="rouge-code"><pre><span class="o">&gt;&gt;&gt;</span> <span class="n">df</span> <span class="o">=</span> <span class="n">pd</span><span class="p">.</span><span class="nc">DataFrame</span><span class="p">({</span><span class="sh">'</span><span class="s">key</span><span class="sh">'</span><span class="p">:</span> <span class="p">[</span><span class="sh">'</span><span class="s">K0</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">K1</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">K2</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">K3</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">K4</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">K5</span><span class="sh">'</span><span class="p">],</span>
<span class="p">...</span>                    <span class="sh">'</span><span class="s">A</span><span class="sh">'</span><span class="p">:</span> <span class="p">[</span><span class="sh">'</span><span class="s">A0</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">A1</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">A2</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">A3</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">A4</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">A5</span><span class="sh">'</span><span class="p">]})</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">df</span>
  <span class="n">key</span>   <span class="n">A</span>
<span class="mi">0</span>  <span class="n">K0</span>  <span class="n">A0</span>
<span class="mi">1</span>  <span class="n">K1</span>  <span class="n">A1</span>
<span class="mi">2</span>  <span class="n">K2</span>  <span class="n">A2</span>
<span class="mi">3</span>  <span class="n">K3</span>  <span class="n">A3</span>
<span class="mi">4</span>  <span class="n">K4</span>  <span class="n">A4</span>
<span class="mi">5</span>  <span class="n">K5</span>  <span class="n">A5</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">other</span> <span class="o">=</span> <span class="n">pd</span><span class="p">.</span><span class="nc">DataFrame</span><span class="p">({</span><span class="sh">'</span><span class="s">key</span><span class="sh">'</span><span class="p">:</span> <span class="p">[</span><span class="sh">'</span><span class="s">K0</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">K1</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">K2</span><span class="sh">'</span><span class="p">],</span>
<span class="p">...</span>                       <span class="sh">'</span><span class="s">B</span><span class="sh">'</span><span class="p">:</span> <span class="p">[</span><span class="sh">'</span><span class="s">B0</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">B1</span><span class="sh">'</span><span class="p">,</span> <span class="sh">'</span><span class="s">B2</span><span class="sh">'</span><span class="p">]})</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">other</span>
  <span class="n">key</span>   <span class="n">B</span>
<span class="mi">0</span>  <span class="n">K0</span>  <span class="n">B0</span>
<span class="mi">1</span>  <span class="n">K1</span>  <span class="n">B1</span>
<span class="mi">2</span>  <span class="n">K2</span>  <span class="n">B2</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">df</span><span class="p">.</span><span class="nf">join</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">lsuffix</span><span class="o">=</span><span class="sh">'</span><span class="s">_caller</span><span class="sh">'</span><span class="p">,</span> <span class="n">rsuffix</span><span class="o">=</span><span class="sh">'</span><span class="s">_other</span><span class="sh">'</span><span class="p">)</span>
  <span class="n">key_caller</span>   <span class="n">A</span> <span class="n">key_other</span>    <span class="n">B</span>
<span class="mi">0</span>         <span class="n">K0</span>  <span class="n">A0</span>        <span class="n">K0</span>   <span class="n">B0</span>
<span class="mi">1</span>         <span class="n">K1</span>  <span class="n">A1</span>        <span class="n">K1</span>   <span class="n">B1</span>
<span class="mi">2</span>         <span class="n">K2</span>  <span class="n">A2</span>        <span class="n">K2</span>   <span class="n">B2</span>
<span class="mi">3</span>         <span class="n">K3</span>  <span class="n">A3</span>       <span class="n">NaN</span>  <span class="n">NaN</span>
<span class="mi">4</span>         <span class="n">K4</span>  <span class="n">A4</span>       <span class="n">NaN</span>  <span class="n">NaN</span>
<span class="mi">5</span>         <span class="n">K5</span>  <span class="n">A5</span>       <span class="n">NaN</span>  <span class="n">NaN</span>
</pre></div></div>]]> </content> </entry> <entry><title xml:lang="de">Web-Performance-Kennzahlen (Web Vitals)</title><link href="https://www.yunseo.kim/de/posts/about-web-vitals/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/about-web-vitals/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/about-web-vitals/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/about-web-vitals/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/about-web-vitals/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/about-web-vitals/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/about-web-vitals/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/about-web-vitals/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/about-web-vitals/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/about-web-vitals/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/about-web-vitals/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/about-web-vitals/" rel="alternate" type="text/html" hreflang="am" /><published>2025-08-05T00:00:00+09:00</published> <updated>2025-08-28T18:22:07+09:00</updated> <id>https://www.yunseo.kim/de/posts/about-web-vitals/</id> <author> <name>Yunseo Kim</name> </author> <category term="Dev" /> <category term="Web Dev" /> <summary xml:lang="de">Überblick über Web Vitals und die Lighthouse-Mess- und Bewertungskriterien: Bedeutung der einzelnen Leistungskennzahlen, wie sie gemessen werden und wie man sie optimiert.</summary> <content type="html" xml:lang="de"> <![CDATA[<p>Überblick über Web Vitals und die Lighthouse-Mess- und Bewertungskriterien: Bedeutung der einzelnen Leistungskennzahlen, wie sie gemessen werden und wie man sie optimiert.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="faktoren-die-die-web-performance-bestimmen">Faktoren, die die Web-Performance bestimmen</h2><p>Bei der Optimierung der Web-Performance lassen sich die entscheidenden Faktoren grob in zwei Kategorien einteilen: <em>Ladeleistung</em> und <em>Renderingleistung</em>.</p><h3 id="html-ladeleistung">HTML-Ladeleistung</h3><ul><li>Zeitspanne vom ersten Seitenaufruf über das Netzwerk bis zu dem Moment, in dem der Browser mit dem Rendern beginnt<li>Bestimmt, wie schnell die Seite sichtbar zu werden beginnt<li>Optimierung durch Minimierung von Redirects, Caching der HTML-Antwort, Komprimierung von Ressourcen, passenden CDN-Einsatz u. a.</ul><h3 id="renderingleistung">Renderingleistung</h3><ul><li>Zeit, die der Browser benötigt, um das sichtbare UI zu zeichnen und interaktiv zu machen<li>Bestimmt, wie flüssig und schnell der Bildschirm aufgebaut wird<li>Optimierung durch Entfernen unnötigen CSS und JS, Vermeiden verzögerten Ladens von Schriftarten und Thumbnails, Auslagern rechenintensiver Aufgaben in einen separaten Web Worker zur Entlastung des Main Threads, Optimierung von Animationen u. a.</ul><h2 id="web-performance-kennzahlen-web-vitals">Web-Performance-Kennzahlen (Web Vitals)</h2><p>Die Beschreibung folgt den Leitlinien von <a href="https://web.dev/performance?hl=de">web.dev</a> und der <a href="https://developer.chrome.com/docs/lighthouse/performance/performance-scoring?hl=de">Chrome-Entwicklerdokumentation</a>. Ohne besonderen Grund sollte man sich nicht auf eine einzige Metrik fixieren, sondern eine ganzheitliche Verbesserung anstreben und identifizieren, wo die Engpässe der zu optimierenden Seite liegen. Liegen reale Nutzungsdaten vor, empfiehlt es sich zudem, weniger auf Durchschnitts- oder Spitzenwerte zu schauen, sondern eher auf das untere Quartil (Q1), um sicherzustellen, dass auch in diesen Fällen die Zielwerte erreicht werden.</p><h3 id="zentrale-web-performance-kennzahlen-core-web-vitals">Zentrale Web-Performance-Kennzahlen (Core Web Vitals)</h3><p>Es gibt mehrere Web-Performance-Kennzahlen (Web Vitals). Unter ihnen betrachtet Google die folgenden drei, die besonders eng mit der User Experience verknüpft sind und in realen Umgebungen (nicht nur im Labor) messbar sind, als besonders wichtig – die <a href="https://web.dev/articles/vitals?hl=de#core-web-vitals">Core Web Vitals</a>. Da Google diese Kennzahlen auch in die Reihenfolge der Suchergebnisse seiner Suchmaschine einfließen lässt, sollten Website-Betreiber sie auch im Hinblick auf Suchmaschinenoptimierung (SEO) sorgfältig beobachten.</p><ul><li><a href="#lcp-largest-contentful-paint">Largest Contentful Paint (LCP)</a>: spiegelt die <em>Ladeleistung</em> wider, Zielwert ≤ 2,5 s<li><a href="https://web.dev/articles/inp?hl=de">Interaction to Next Paint (INP)</a>: spiegelt die <em>Reaktionsfähigkeit</em> wider, Zielwert ≤ 200 ms<li><a href="#cls-cumulative-layout-shift">Cumulative Layout Shift (CLS)</a>: spiegelt die <em>visuelle Stabilität</em> wider, Zielwert ≤ 0,1</ul><p>Core Web Vitals sind grundsätzlich für Messungen in realen Umgebungen konzipiert. Zwei davon (außer INP) lassen sich aber auch in Laborumgebungen wie den Chrome DevTools oder Lighthouse messen. INP erfordert reale Nutzereingaben und kann deshalb nicht im Labor gemessen werden; in solchen Fällen kann <a href="#tbt-total-blocking-time">TBT</a> als nahe korrelierende, ähnliche Metrik herangezogen werden – <a href="https://web.dev/articles/vitals?hl=de#lab_tools_to_measure_core_web_vitals">in der Regel verbessert sich INP, wenn man TBT verbessert</a>.</p><h3 id="gewichtung-der-leistungsbewertung-in-lighthouse-10">Gewichtung der Leistungsbewertung in Lighthouse 10</h3><p><a href="https://developer.chrome.com/docs/lighthouse/performance/performance-scoring?hl=de">Die Lighthouse-Leistungsbewertung ist ein gewogener Durchschnitt der Teilmetriken; die folgenden Gewichte werden verwendet</a>.</p><table><thead><tr><th>Messwert<th>Gewichtung<tbody><tr><td><a href="#fcp-first-contentful-paint">First Contentful Paint</a><td>10%<tr><td><a href="#si-speed-index">Speed Index</a><td>10%<tr><td><a href="#lcp-largest-contentful-paint">Largest Contentful Paint</a><td>25%<tr><td><a href="#tbt-total-blocking-time">Total Blocking Time</a><td>30%<tr><td><a href="#cls-cumulative-layout-shift">Cumulative Layout Shift</a><td>25%</table><h3 id="fcp-first-contentful-paint">FCP (First Contentful Paint)</h3><ul><li>Misst die Zeit bis zur ersten Darstellung eines DOM-Inhalts nach dem Seitenaufruf<li>Als DOM-Inhalt gelten Bilder, nicht-weiße <code class="language-plaintext highlighter-rouge">&lt;canvas&gt;</code>-Elemente, SVG usw.; Inhalte in <code class="language-plaintext highlighter-rouge">iframe</code>s werden nicht berücksichtigt</ul><blockquote class="prompt-tip"><p>Einer der Faktoren mit besonders großem Einfluss auf FCP ist die Schriftladezeit. Für entsprechende Optimierungen empfiehlt die <a href="https://developer.chrome.com/docs/lighthouse/performance/first-contentful-paint/?hl=de">Chrome-Entwicklerdokumentation</a> den <a href="https://developer.chrome.com/docs/lighthouse/performance/font-display?hl=de">zugehörigen Beitrag</a> als Einstieg.</p></blockquote><h4 id="lighthouse-bewertungskriterien">Lighthouse-Bewertungskriterien</h4><p><a href="https://developer.chrome.com/docs/lighthouse/performance/first-contentful-paint/?hl=de">Laut der Chrome-Entwicklerdokumentation</a> gelten folgende Schwellen:</p><table><thead><tr><th>Farbstufe<th>FCP mobil (s)<th>FCP Desktop (s)<tbody><tr><td>Grün (schnell)<td>0–1,8<td>0–0,9<tr><td>Orange (mittel)<td>1,8–3<td>0,9–1,6<tr><td>Rot (langsam)<td>&gt; 3<td>&gt; 1,6</table><h3 id="lcp-largest-contentful-paint">LCP (Largest Contentful Paint)</h3><ul><li>Misst die Zeit bis zur Darstellung des größten Elements (Bild, Textblock, Video usw.) innerhalb des anfänglich sichtbaren Bereichs (Viewport), wenn eine Seite erstmals geöffnet wird<li>Je größer die sichtbare Fläche eines Elements ist, desto eher wird es vom Nutzer als Hauptinhalt wahrgenommen<li>Ist der LCP ein Bild, lässt sich die Dauer in vier Teilabschnitte gliedern. Wichtig ist zu ermitteln, wo der Engpass liegt:<ol><li>Time to First Byte (TTFB): Zeit vom Ladebeginn der Seite bis zum Eintreffen des ersten Bytes der HTML-Antwort<li>Ladeverzögerung (Load Delay): Differenz zwischen dem Start der LCP-Ressourcenanforderung durch den Browser und dem TTFB<li>Ladezeit (Load Time): Zeit zum Laden der LCP-Ressource selbst<li>Renderverzögerung (Render Delay): Zeit vom Abschluss des Ladens der LCP-Ressource bis zur vollständigen Darstellung des LCP-Elements</ol></ul><h4 id="lighthouse-bewertungskriterien-1">Lighthouse-Bewertungskriterien</h4><p><a href="https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/?hl=de">Laut der Chrome-Entwicklerdokumentation</a> gelten folgende Schwellen:</p><table><thead><tr><th>Farbstufe<th>LCP mobil (s)<th>LCP Desktop (s)<tbody><tr><td>Grün (schnell)<td>0–2,5<td>0–1,2<tr><td>Orange (mittel)<td>2,5–4<td>1,2–2,4<tr><td>Rot (langsam)<td>&gt; 4<td>&gt; 2,4</table><h3 id="tbt-total-blocking-time">TBT (Total Blocking Time)</h3><ul><li>Misst die gesamte Zeit, in der eine Seite nicht auf Nutzereingaben wie Mausklicks, Touches oder Tastatureingaben reagieren kann<li>Zwischen FCP und <a href="https://developer.chrome.com/docs/lighthouse/performance/interactive?hl=de">TTI (Time to Interactive)</a>* werden alle Tasks, die ≥ 50 ms dauern, als <a href="https://web.dev/articles/long-tasks-devtools?hl=de">Long Tasks</a> betrachtet. Von der Dauer jeder langen Aufgabe wird der Anteil oberhalb von 50 ms als <em>Blockierungsanteil (blocking portion)</em> bezeichnet; die Summe aller Blockierungsanteile ist der TBT.</ul><blockquote class="prompt-info"><p>* TTI reagiert übermäßig empfindlich auf Ausreißer bei Netzwerkantworten und auf lange Aufgaben, ist daher inkonsistent und stark variabel; entsprechend <a href="https://developer.chrome.com/blog/lighthouse-10-0#scoring-changes">wurde TTI seit Lighthouse 10 aus der Leistungsbewertung entfernt</a>.</p></blockquote><blockquote class="prompt-tip"><p>Häufigste Ursache langer Aufgaben sind unnötiges oder ineffizientes Laden, Parsen und Ausführen von JavaScript. Die <a href="https://developer.chrome.com/docs/lighthouse/performance/lighthouse-total-blocking-time/?hl=de">Chrome-Entwicklerdokumentation</a> und <a href="https://web.dev/articles/long-tasks-devtools#what_is_causing_my_long_tasks?hl=de">web.dev von Google</a> empfehlen, durch <a href="https://web.dev/articles/reduce-javascript-payloads-with-code-splitting?hl=de">Code-Splitting</a> die JS-Payload so zu reduzieren, dass einzelne Blöcke in ≤ 50 ms ausführbar sind, und bei Bedarf Arbeit vom Main Thread in einen separaten Service Worker auszulagern, um sie multithreaded auszuführen.</p></blockquote><h4 id="lighthouse-bewertungskriterien-2">Lighthouse-Bewertungskriterien</h4><p><a href="https://developer.chrome.com/docs/lighthouse/performance/lighthouse-total-blocking-time/?hl=de">Laut der Chrome-Entwicklerdokumentation</a> gelten folgende Schwellen:</p><table><thead><tr><th>Farbstufe<th>TBT mobil (ms)<th>TBT Desktop (ms)<tbody><tr><td>Grün (schnell)<td>0–200<td>0–150<tr><td>Orange (mittel)<td>200–600<td>150–350<tr><td>Rot (langsam)<td>&gt; 600<td>&gt; 350</table><h3 id="cls-cumulative-layout-shift">CLS (Cumulative Layout Shift)</h3><p> <video class="embed-video file" controls="" autoplay="" loop=""> <source src="https://web.dev/static/articles/cls/video/web-dev-assets/layout-instability-api/layout-instability2.webm" type="video/webm" /> Your browser does not support the video tag. Here is a <a href="https://web.dev/static/articles/cls/video/web-dev-assets/layout-instability-api/layout-instability2.webm">link to the video file</a> instead. </video> <em>Beispiel für eine plötzliche Layoutänderung</em></p><blockquote><p>Videoquelle: <a href="https://web.dev/articles/cls?hl=de">Cumulative Layout Shift (CLS) | Articles | web.dev</a></p></blockquote><p><del>In der Bewegung des Cursors spürt man tiefe Wut.</del></p><ul><li>Unerwartete Layoutverschiebungen verschlechtern die User Experience auf vielfältige Weise: Text springt und man verliert die Leseposition, Links/Buttons werden versehentlich geklickt usw.<li>Die genaue Berechnung des CLS-Scores ist auf <a href="https://web.dev/articles/cls">web.dev</a> beschrieben.<li>Wie in der folgenden Grafik ersichtlich, sollte der Zielwert ≤ 0,1 sein.</ul><p><img src="https://web.dev/static/articles/cls/image/good-cls-values.svg" alt="Was ist ein guter CLS-Wert?" width="640" height="480" /></p><blockquote><p>Bildquelle: <a href="https://web.dev/articles/cls#what-is-a-good-cls-score?hl=de">Cumulative Layout Shift (CLS) | Articles | web.dev</a></p></blockquote><h3 id="si-speed-index">SI (Speed Index)</h3><ul><li>Misst, wie schnell während des Ladens einer Seite Inhalte sichtbar werden<li>Lighthouse zeichnet den Ladevorgang als Video auf, analysiert die Fortschritte zwischen den Frames und berechnet daraus mithilfe des <a href="https://github.com/paulirish/speedline">Speedline-Node.js-Moduls</a> den SI-Score</ul><blockquote class="prompt-tip"><p>Maßnahmen zur Beschleunigung des Seitenladens – einschließlich dessen, was wir bei <a href="#fcp-first-contentful-paint">FCP</a>, <a href="#lcp-largest-contentful-paint">LCP</a> und <a href="#tbt-total-blocking-time">TBT</a> besprochen haben – wirken sich in der Regel auch positiv auf den SI aus. Der SI ist weniger Repräsentant eines einzelnen Teilschritts als vielmehr eine Metrik, die den gesamten Ladeprozess in gewissem Maß abbildet.</p></blockquote><h4 id="lighthouse-bewertungskriterien-3">Lighthouse-Bewertungskriterien</h4><p><a href="https://developer.chrome.com/docs/lighthouse/performance/speed-index/?hl=de">Laut der Chrome-Entwicklerdokumentation</a> gelten folgende Schwellen:</p><table><thead><tr><th>Farbstufe<th>SI mobil (s)<th>SI Desktop (s)<tbody><tr><td>Grün (schnell)<td>0–3,4<td>0–1,3<tr><td>Orange (mittel)<td>3,4–5,8<td>1,3–2,3<tr><td>Rot (langsam)<td>&gt; 5,8<td>&gt; 2,3</table>]]> </content> </entry> <entry><title xml:lang="de">Gravitationsfeld und Gravitationspotential</title><link href="https://www.yunseo.kim/de/posts/gravitational-field-and-potential/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/gravitational-field-and-potential/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/gravitational-field-and-potential/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/gravitational-field-and-potential/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/gravitational-field-and-potential/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/gravitational-field-and-potential/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/gravitational-field-and-potential/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/gravitational-field-and-potential/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/gravitational-field-and-potential/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/gravitational-field-and-potential/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/gravitational-field-and-potential/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/gravitational-field-and-potential/" rel="alternate" type="text/html" hreflang="am" /><published>2025-05-17T00:00:00+09:00</published> <updated>2025-10-30T12:44:56+09:00</updated> <id>https://www.yunseo.kim/de/posts/gravitational-field-and-potential/</id> <author> <name>Yunseo Kim</name> </author> <category term="Physics" /> <category term="Classical Dynamics" /> <summary xml:lang="de">Wir lernen die Definition des Gravitationsfeldvektors und des Gravitationspotentials nach Newtons Gravitationsgesetz kennen und behandeln zwei wichtige Beispiele: das Schalentheorem und die galaktische Rotationskurve.</summary> <content type="html" xml:lang="de"> <![CDATA[<p>Wir lernen die Definition des Gravitationsfeldvektors und des Gravitationspotentials nach Newtons Gravitationsgesetz kennen und behandeln zwei wichtige Beispiele: das Schalentheorem und die galaktische Rotationskurve.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="tldr">TL;DR</h2><blockquote class="prompt-info"><ul><li>Newtons Gravitationsgesetz: $\mathbf{F} = -G\cfrac{mM}{r^2}\mathbf{e}_r$<li>Für kontinuierliche Massenverteilungen und Objekte mit Ausdehnung: $\mathbf{F} = -Gm\int_V \cfrac{dM}{r^2}\mathbf{e}_r = -Gm\int_V \cfrac{\rho(\mathbf{r^\prime})\mathbf{e}_r}{r^2} dv^{\prime}$<ul><li>$\rho(\mathbf{r^{\prime}})$: Massendichte am Punkt mit Positionsvektor $\mathbf{r^{\prime}}$ von einem beliebigen Ursprung<li>$dv^{\prime}$: Volumenelement am Punkt mit Positionsvektor $\mathbf{r^{\prime}}$ von einem beliebigen Ursprung</ul><li><strong>Gravitationsfeldvektor</strong>:<ul><li>Vektor, der die Kraft pro Masseneinheit darstellt, die ein Teilchen in einem von einem Objekt der Masse $M$ erzeugten Feld erfährt<li>$\mathbf{g} = \cfrac{\mathbf{F}}{m} = - G \cfrac{M}{r^2}\mathbf{e}_r = - G \int_V \cfrac{\rho(\mathbf{r^\prime})\mathbf{e}_r}{r^2}dv^\prime$<li>Hat die Dimension von <em>Kraft pro Masseneinheit</em> oder <em>Beschleunigung</em></ul><li><strong>Gravitationspotential</strong>:<ul><li>$\mathbf{g} \equiv -\nabla \Phi$<li>Hat die Dimension von (<em>Kraft pro Masseneinheit</em>) $\times$ (<em>Entfernung</em>) oder <em>Energie pro Masseneinheit</em><li>$\Phi = -G\cfrac{M}{r}$<li>Nur die relative Differenz des Gravitationspotentials ist bedeutsam, nicht der spezifische Wert selbst<li>Üblicherweise wird die Bedingung $\Phi \to 0$ für $r \to \infty$ willkürlich gesetzt, um die Mehrdeutigkeit zu beseitigen<li>$U = m\Phi, \quad \mathbf{F} = -\nabla U$</ul><li><strong>Gravitationspotential innerhalb und außerhalb einer Kugelschale (Schalentheorem)</strong><ul><li>Für $R&gt;a$:<ul><li>$\Phi(R&gt;a) = -\cfrac{GM}{R}$<li>Bei der Berechnung des Gravitationspotentials an einem äußeren Punkt aufgrund einer kugelsymmetrischen Massenverteilung kann das entsprechende Objekt als Punktmasse betrachtet werden</ul><li>Für $R&lt;b$:<ul><li>$\Phi(R&lt;b) = -2\pi\rho G(a^2 - b^2)$<li>Innerhalb einer kugelsymmetrischen Massenschale ist das Gravitationspotential unabhängig von der Position konstant, und die wirkende Gravitation ist $0$</ul><li>Für $b&lt;R&lt;a$: $\Phi(b&lt;R&lt;a) = -4\pi\rho G \left( \cfrac{a^2}{2} - \cfrac{b^3}{3R} - \cfrac{R^2}{6} \right)$</ul></ul></blockquote><h2 id="gravitationsfeld">Gravitationsfeld</h2><h3 id="newtons-gravitationsgesetz">Newtons Gravitationsgesetz</h3><p>Newton hatte bereits vor 11666 HE das Gravitationsgesetz systematisiert und numerisch verifiziert. Dennoch dauerte es weitere 20 Jahre, bis er 11687 HE seine Ergebnisse in seinem Werk <em>Principia</em> veröffentlichte. Der Grund dafür war, dass er die Berechnungsmethode, bei der Erde und Mond als ausdehnungslose Punktmassen angenommen wurden, nicht rechtfertigen konnte. Glücklicherweise können wir mit der Infinitesimalrechnung, die Newton später selbst erfand, dieses Problem, das für Newton in den 1600er Jahren nicht einfach war, <a href="#für-ra">viel leichter beweisen</a>.</p><p>Nach Newtons Gravitationsgesetz (Newton’s law of universal gravitation) <em>zieht jedes Massenteilchen alle anderen Teilchen im Universum an, wobei die Kraft proportional zum Produkt der beiden Massen und umgekehrt proportional zum Quadrat ihres Abstands ist.</em> Mathematisch ausgedrückt:</p>\[\mathbf{F} = -G\frac{mM}{r^2}\mathbf{e}_r \label{eqn:law_of_gravitation}\tag{1}\]<p><img src="https://upload.wikimedia.org/wikipedia/commons/0/0e/NewtonsLawOfUniversalGravitation.svg" alt="Newton's law of universal gravitation" /></p><blockquote><p><em>Bildquelle</em></p><ul><li>Autor: Wikimedia-Benutzer <a href="https://commons.wikimedia.org/wiki/User:Dna-webmaster">Dennis Nilsson</a><li>Lizenz: <a href="https://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a></ul></blockquote><p>Der Einheitsvektor $\mathbf{e}_r$ zeigt von $M$ in Richtung $m$, und das negative Vorzeichen zeigt an, dass die Kraft eine Anziehungskraft ist. Das heißt, $m$ wird zu $M$ hingezogen.</p><h3 id="cavendishs-experiment">Cavendishs Experiment</h3><p>Die experimentelle Verifikation dieses Gesetzes und die Bestimmung des $G$-Werts wurde 11798 HE vom britischen Physiker Henry Cavendish durchgeführt. Cavendishs Experiment verwendete eine Torsionswaage, die aus zwei kleinen Kugeln bestand, die an beiden Enden eines leichten Stabs befestigt waren. Diese beiden Kugeln wurden jeweils zu zwei anderen großen Kugeln in ihrer Nähe hingezogen. Der bis heute ermittelte offizielle $G$-Wert beträgt $6.673 \pm 0.010 \times 10^{-11} \mathrm{N\cdot m^2/kg^2}$.</p><blockquote class="prompt-tip"><p>Obwohl $G$ eine der am längsten bekannten Fundamentalkonstanten ist, kennen wir sie mit geringerer Präzision als die meisten anderen Fundamentalkonstanten wie $e$, $c$, $\hbar$. Auch heute noch wird viel geforscht, um den $G$-Wert mit höherer Präzision zu bestimmen.</p></blockquote><h3 id="fall-von-objekten-mit-ausdehnung">Fall von Objekten mit Ausdehnung</h3><p>Das Gesetz in Gleichung ($\ref{eqn:law_of_gravitation}$) kann streng genommen nur auf <em>Punktteilchen</em> angewendet werden. Wenn eine oder beide Seiten Objekte mit einer gewissen Ausdehnung sind, muss zusätzlich angenommen werden, dass das Gravitationsfeld ein <em>lineares Feld</em> ist, um die Kraft zu berechnen. Das heißt, es wird angenommen, dass die gesamte Gravitation, die ein Teilchen der Masse $m$ von mehreren anderen Teilchen erfährt, durch Vektoraddition der einzelnen Kräfte berechnet werden kann. Bei Objekten mit kontinuierlicher Massenverteilung wird die Summe wie folgt durch ein Integral ersetzt:</p>\[\mathbf{F} = -Gm\int_V \frac{dM}{r^2}\mathbf{e}_r = -Gm\int_V \frac{\rho(\mathbf{r^\prime})\mathbf{e}_r}{r^2} dv^{\prime} \label{eqn:integral_form}\tag{2}\]<ul><li>$\rho(\mathbf{r^{\prime}})$: Massendichte am Punkt mit Positionsvektor $\mathbf{r^{\prime}}$ von einem beliebigen Ursprung<li>$dv^{\prime}$: Volumenelement am Punkt mit Positionsvektor $\mathbf{r^{\prime}}$ von einem beliebigen Ursprung</ul><p>Wenn sowohl das Objekt der Masse $M$ als auch das Objekt der Masse $m$ eine Ausdehnung haben, ist zur Berechnung der gesamten Gravitation auch ein zweites Volumenintegral über $m$ erforderlich.</p><h3 id="gravitationsfeldvektor">Gravitationsfeldvektor</h3><p>Der <strong>Gravitationsfeldvektor</strong> $\mathbf{g}$ wird als Vektor definiert, der die Kraft pro Masseneinheit darstellt, die ein Teilchen in einem von einem Objekt der Masse $M$ erzeugten Feld erfährt:</p>\[\mathbf{g} = \frac{\mathbf{F}}{m} = - G \frac{M}{r^2}\mathbf{e}_r \label{eqn:g_vector}\tag{3}\]<p>oder</p>\[\boxed{\mathbf{g} = - G \int_V \frac{\rho(\mathbf{r^\prime})\mathbf{e}_r}{r^2}dv^\prime} \tag{4}\]<p>Hier ändert sich die Richtung von $\mathbf{e}_r$ je nach $\mathbf{r^\prime}$.</p><p>Diese Größe $\mathbf{g}$ hat die Dimension von <em>Kraft pro Masseneinheit</em> oder <em>Beschleunigung</em>. Der Betrag des Gravitationsfeldvektors $\mathbf{g}$ nahe der Erdoberfläche entspricht der Größe, die wir <strong>Gravitationsbeschleunigungskonstante</strong> nennen, mit $|\mathbf{g}| \approx 9.80\mathrm{m/s^2}$.</p><h2 id="gravitationspotential">Gravitationspotential</h2><h3 id="definition">Definition</h3><p>Der Gravitationsfeldvektor $\mathbf{g}$ ändert sich mit $1/r^2$ und erfüllt daher die Bedingung ($\nabla \times \mathbf{g} \equiv 0$) für die Darstellung als Gradient einer Skalarfunktion (Potential). Daher kann geschrieben werden:</p>\[\mathbf{g} \equiv -\nabla \Phi \label{eqn:gradient_phi}\tag{5}\]<p>Hier wird $\Phi$ als <strong>Gravitationspotential</strong> bezeichnet und hat die Dimension von (<em>Kraft pro Masseneinheit</em>) $\times$ (<em>Entfernung</em>) oder <em>Energie pro Masseneinheit</em>.</p><p>Da $\mathbf{g}$ nur vom Radius abhängt, ändert sich auch $\Phi$ nur mit $r$. Aus den Gleichungen ($\ref{eqn:g_vector}$) und ($\ref{eqn:gradient_phi}$) folgt:</p>\[\nabla\Phi = \frac{d\Phi}{dr}\mathbf{e}_r = G\frac{M}{r^2}\mathbf{e}_r\]<p>Integration ergibt:</p>\[\boxed{\Phi = -G\frac{M}{r}} \label{eqn:g_potential}\tag{6}\]<p>Da nur die relative Differenz des Gravitationspotentials bedeutsam ist und nicht der spezifische Wert selbst, kann die Integrationskonstante weggelassen werden. Üblicherweise wird die Bedingung $\Phi \to 0$ für $r \to \infty$ willkürlich gesetzt, um die Mehrdeutigkeit zu beseitigen, und Gleichung ($\ref{eqn:g_potential}$) erfüllt auch diese Bedingung.</p><p>Das Gravitationspotential bei kontinuierlicher Massenverteilung ist:</p>\[\Phi = -G\int_V \frac{\rho(\mathbf{r\prime})}{r}dv^\prime \label{eqn:g_potential_v}\tag{7}\]<p>Bei Oberflächenverteilung der Masse in einer dünnen Schale:</p>\[\Phi = -G\int_S \frac{\rho_s}{r}da^\prime. \label{eqn:g_potential_s}\tag{8}\]<p>Und für eine lineare Massenquelle mit Liniendichte $\rho_l$:</p>\[\Phi = -G\int_\Gamma \frac{\rho_l}{r}ds^\prime. \label{eqn:g_potential_l}\tag{9}\]<h3 id="physikalische-bedeutung">Physikalische Bedeutung</h3><p>Betrachten wir die Arbeit pro Masseneinheit $dW^\prime$, die ein Objekt verrichtet, wenn es sich um $d\mathbf{r}$ in einem Gravitationsfeld bewegt.</p>\[\begin{align*} dW^\prime &amp;= -\mathbf{g}\cdot d\mathbf{r} = (\nabla \Phi)\cdot d\mathbf{r} \\ &amp;= \sum_i \frac{\partial \Phi}{\partial x_i}dx_i = d\Phi \label{eqn:work}\tag{10} \end{align*}\]<p>In dieser Gleichung ist $\Phi$ nur eine Funktion der Ortskoordinaten, dargestellt als $\Phi=\Phi(x_1, x_2, x_3) = \Phi(x_i)$. Daher ist die Arbeit pro Masseneinheit, die ein Objekt verrichtet, wenn es von einem Punkt zu einem anderen in einem Gravitationsfeld bewegt wird, gleich der Potentialdifferenz zwischen diesen beiden Punkten.</p><p>Wenn das Gravitationspotential an unendlich entfernten Orten als $0$ definiert wird, kann $\Phi$ an einem beliebigen Punkt als die Arbeit pro Masseneinheit interpretiert werden, die erforderlich ist, um das Objekt von unendlich entfernten Orten zu diesem Punkt zu bewegen. Da die potentielle Energie eines Objekts gleich dem Produkt seiner Masse und des Gravitationspotentials $\Phi$ ist, gilt für die potentielle Energie $U$:</p>\[U = m\Phi. \label{eqn:potential_e}\tag{11}\]<p>Daher wird die Gravitation, die auf ein Objekt wirkt, durch Hinzufügen eines negativen Vorzeichens zum Gradienten der potentiellen Energie des Objekts erhalten:</p>\[\mathbf{F} = -\nabla U \label{eqn:force_and_potential}\tag{12}\]<p>Wenn sich ein Objekt in einem von einer Masse erzeugten Gravitationsfeld befindet, entsteht immer eine potentielle Energie. Diese potentielle Energie befindet sich streng genommen im Feld selbst, wird aber konventionell als potentielle Energie des Objekts bezeichnet.</p><h2 id="beispiel-gravitationspotential-innerhalb-und-außerhalb-einer-kugelschale-schalentheorem">Beispiel: Gravitationspotential innerhalb und außerhalb einer Kugelschale (Schalentheorem)</h2><h3 id="koordinatensystem--darstellung-des-gravitationspotentials-als-integral">Koordinatensystem &amp; Darstellung des Gravitationspotentials als Integral</h3><p>Berechnen wir das Gravitationspotential innerhalb und außerhalb einer gleichmäßigen Kugelschale mit innerem Radius $b$ und äußerem Radius $a$. Die Gravitation durch eine Kugelschale kann auch durch direkte Berechnung der Kraftkomponenten, die auf eine Masseneinheit im Feld wirken, erhalten werden, aber die Potentialmethode ist einfacher.</p><p><img src="/assets/img/gravitational-field-and-potential/spherical-shell.png" alt="Spherical shell" /></p><p>Berechnen wir das Potential am Punkt $P$ in der Entfernung $R$ vom Zentrum in der obigen Abbildung. Bei gleichmäßiger Massenverteilung der Schale ist $\rho(r^\prime)=\rho$, und aufgrund der Symmetrie bezüglich des Azimuthwinkels $\phi$ um die Linie, die das Zentrum der Kugel mit Punkt $P$ verbindet:</p>\[\begin{align*} \Phi &amp;= -G\int_V \frac{\rho(r^\prime)}{r}dv^\prime \\ &amp;= -\rho G \int_0^{2\pi} \int_0^\pi \int_b^a \frac{1}{r}(dr^\prime)(r^\prime d\theta)(r^\prime \sin\theta\, d\phi) \\ &amp;= -\rho G \int_0^{2\pi} d\phi \int_b^a {r^\prime}^2 dr^\prime \int_0^\pi \frac{\sin\theta}{r}d\theta \\ &amp;= -2\pi\rho G \int_b^a {r^\prime}^2 dr^\prime \int_0^\pi \frac{\sin\theta}{r}d\theta. \label{eqn:spherical_shell_1}\tag{13} \end{align*}\]<p>Nach dem Kosinussatz:</p>\[r^2 = {r^\prime}^2 + R^2 - 2r^\prime R \cos\theta \label{eqn:law_of_cosines}\tag{14}\]<p>Da $R$ konstant ist, ergibt die Differentiation dieser Gleichung nach $r^\prime$:</p>\[2rdr = 2r^\prime R \sin\theta d\theta\] \[\frac{\sin\theta}{r}d\theta = \frac{dr}{r^\prime R} \tag{15}\]<p>Einsetzen in Gleichung ($\ref{eqn:spherical_shell_1}$):</p>\[\Phi = -\frac{2\pi\rho G}{R} \int_b^a r^\prime dr^\prime \int_{r_\mathrm{min}}^{r_\mathrm{max}} dr. \label{eqn:spherical_shell_2}\tag{16}\]<p>Hier werden $r_\mathrm{max}$ und $r_\mathrm{min}$ durch die Position des Punktes $P$ bestimmt.</p><h3 id="für-ra">Für $R&gt;a$</h3>\[\begin{align*} \Phi(R&gt;a) &amp;= -\frac{2\pi\rho G}{R} \int_b^a r^\prime dr^\prime \int_{R-r^\prime}^{R+r^\prime} dr \\ &amp;= - \frac{4\pi\rho G}{R} \int_b^a {r^\prime}^2 dr^\prime \\ &amp;= - \frac{4}{3}\frac{\pi\rho G}{R}(a^3 - b^3). \label{eqn:spherical_shell_outside_1}\tag{17} \end{align*}\]<p>Die Masse $M$ der Kugelschale ist:</p>\[M = \frac{4}{3}\pi\rho(a^3 - b^3) \label{eqn:mass_of_shell}\tag{18}\]<p>Daher ist das Potential:</p>\[\boxed{\Phi(R&gt;a) = -\frac{GM}{R}} \label{eqn:spherical_shell_outside_2}\tag{19}\]<blockquote class="prompt-info"><p>Vergleicht man das Gravitationspotential einer Punktmasse der Masse $M$ aus Gleichung ($\ref{eqn:g_potential}$) mit dem gerade erhaltenen Ergebnis ($\ref{eqn:spherical_shell_outside_2}$), stellt man fest, dass sie identisch sind. Dies bedeutet, dass bei der Berechnung des Gravitationspotentials an einem äußeren Punkt aufgrund einer kugelsymmetrischen Massenverteilung davon ausgegangen werden kann, dass die gesamte Masse im Zentrum konzentriert ist. Die meisten kugelförmigen Himmelskörper einer bestimmten Größe wie Erde oder Mond fallen in diese Kategorie, da sie wie <a href="https://de.wikipedia.org/wiki/Matrjoschka">Matroschka-Puppen</a> als unendlich viele Kugelschalen mit demselben Zentrum aber unterschiedlichen Durchmessern betrachtet werden können. Dies ist die <a href="#newtons-gravitationsgesetz">Grundlage für die Gültigkeit der Annahme, Himmelskörper wie Erde oder Mond als ausdehnungslose Punktmassen zu betrachten</a>, die am Anfang dieses Artikels erwähnt wurde.</p></blockquote><h3 id="für-rb">Für $R&lt;b$</h3>\[\begin{align*} \Phi(R&lt;b) &amp;= -\frac{2\pi\rho G}{R} \int_b^a r^\prime dr^\prime \int_{r^\prime - R}^{r^\prime + R}dr \\ &amp;= -4\pi\rho G \int_b^a r^\prime dr^\prime \\ &amp;= -2\pi\rho G(a^2 - b^2). \label{eqn:spherical_shell_inside}\tag{20} \end{align*}\]<blockquote class="prompt-info"><p>Innerhalb einer kugelsymmetrischen Massenschale ist das Gravitationspotential unabhängig von der Position konstant, und die wirkende Gravitation ist $0$.</p></blockquote><blockquote class="prompt-tip"><p>Dies ist auch ein Hauptgrund dafür, dass die “Hohlerde-Theorie”, eine der typischen Pseudowissenschaften, Unsinn ist. Wenn die Erde, wie die Hohlerde-Theorie behauptet, die Form einer Kugelschale hätte und innen hohl wäre, würde die Erdgravitation auf alle Objekte innerhalb dieser Höhlung nicht wirken. Angesichts der Masse und des Volumens der Erde kann es keine Erdhöhlung geben, und selbst wenn es eine gäbe, würden die Lebewesen dort nicht mit der Innenseite der Kugelschale als Boden leben, sondern wie in einer Raumstation in einem schwerelosen Zustand schweben.<br /> <a href="https://youtu.be/VD6xJq8NguY?si=szgtuLkuk6rPJag3">Mikroorganismen können durchaus einige Kilometer tief in unterirdischen Schichten leben</a>, aber zumindest nicht in der Form, wie die Hohlerde-Theorie behauptet. Ich mag Jules Vernes Roman “Reise zum Mittelpunkt der Erde” und den Film “Die Reise zum Mittelpunkt der Erde” sehr, aber fiktive Werke sollten als Fiktion genossen werden, nicht ernsthaft geglaubt.</p></blockquote><h3 id="für-bra">Für $b&lt;R&lt;a$</h3>\[\begin{align*} \Phi(b&lt;R&lt;a) &amp;= -\frac{4\pi\rho G}{3R}(R^3 - b^3) - 2\pi\rho G(a^2 - R^2) \\ &amp;= -4\pi\rho G \left( \frac{a^2}{2} - \frac{b^3}{3R} - \frac{R^2}{6} \right) \label{eqn:within_spherical_shell}\tag{21} \end{align*}\]<h3 id="ergebnisse">Ergebnisse</h3><p>Die zuvor berechneten Gravitationspotentiale $\Phi$ in den drei Bereichen und die entsprechenden Beträge der Gravitationsfeldvektoren $|\mathbf{g}|$ als Funktion der Entfernung $R$ sind grafisch wie folgt dargestellt:</p><p><img src="/physics-visualizations/figs/shell-theorem-gravitational-potential.png" alt="Gravitational Potential as a Function of R" /><br /> <img src="/physics-visualizations/figs/shell-theorem-field-vector.png" alt="Magnitude of the Field Vector as a Function of R" /></p><blockquote><ul><li>Python-Visualisierungscode: <a href="https://github.com/yunseo-kim/physics-visualizations/blob/main/src/shell_theorem.py">yunseo-kim/physics-visualizations Repository</a><li>Lizenz: <a href="https://github.com/yunseo-kim/physics-visualizations?tab=readme-ov-file#license">Siehe hier</a></ul></blockquote><p>Man kann sehen, dass das Gravitationspotential und der Betrag des Gravitationsfeldvektors stetig sind. Wenn das Gravitationspotential an einem Punkt unstetig wäre, würde der Gradient des Potentials, also die Gravitationsstärke, an diesem Punkt unendlich werden, was physikalisch nicht sinnvoll ist. Daher muss die Potentialfunktion an allen Punkten stetig sein. Die <em>Ableitung</em> des Gravitationsfeldvektors ist jedoch an der Innen- und Außenseite der Schale unstetig.</p><h2 id="beispiel-galaktische-rotationskurve">Beispiel: Galaktische Rotationskurve</h2><p>Astronomischen Beobachtungen zufolge ist die meiste beobachtbare Masse in vielen rotierenden Spiralgalaxien wie der Milchstraße oder der Andromeda-Galaxie hauptsächlich in der Nähe des Zentrums konzentriert. Die Orbitalgeschwindigkeiten der Massen in solchen Spiralgalaxien stimmen jedoch, wie im folgenden Diagramm zu sehen ist, stark mit den theoretisch aus der beobachtbaren Massenverteilung vorhergesagten Werten nicht überein und sind ab einer bestimmten Entfernung nahezu konstant.</p><p><img src="https://upload.wikimedia.org/wikipedia/commons/b/b9/GalacticRotation2.svg" alt="Galactic Rotation" width="972" /></p><blockquote><p><em>Bildquelle</em></p><ul><li>Autor: Wikipedia-Benutzer <a href="https://en.wikipedia.org/wiki/User:PhilHibbs">PhilHibbs</a><li>Lizenz: Public Domain</ul></blockquote><p> <video class="embed-video file" controls="" autoplay="" loop=""> <source src="https://cdn.jsdelivr.net/gh/yunseo-kim/yunseo-kim.github.io/assets/video/gravitational-field-and-potential/Galaxy_rotation_under_the_influence_of_dark_matter.webm" type="video/webm" /> <source src="https://cdn.jsdelivr.net/gh/yunseo-kim/yunseo-kim.github.io/assets/video/gravitational-field-and-potential/Galaxy_rotation_under_the_influence_of_dark_matter.ogg" type="video/ogg" /> Your browser does not support the video tag. Here is a <a href="https://cdn.jsdelivr.net/gh/yunseo-kim/yunseo-kim.github.io/assets/video/gravitational-field-and-potential/Galaxy_rotation_under_the_influence_of_dark_matter.webm">link to the video file</a> instead. </video> <em>Links: Aus der beobachtbaren Masse vorhergesagte Galaxienrotation | Rechts: Tatsächlich beobachtete Galaxienrotation.</em></p><blockquote><p><em>Videoquelle</em></p><ul><li>Link zur Originaldatei (Ogg-Theora-Video): <a href="https://commons.wikimedia.org/wiki/File:Galaxy_rotation_under_the_influence_of_dark_matter.ogv">https://commons.wikimedia.org/wiki/File:Galaxy_rotation_under_the_influence_of_dark_matter.ogv</a><li>Autor: <a href="https://beltoforion.de/en/index.php">Ingo Berg</a><li>Lizenz: <a href="https://creativecommons.org/licenses/by-sa/3.0/deed.en">CC BY-SA 3.0</a><li>Verwendete Simulationsmethode und Code: <a href="https://beltoforion.de/en/spiral_galaxy_renderer/">https://beltoforion.de/en/spiral_galaxy_renderer/</a></ul></blockquote><blockquote class="prompt-danger"><p>Die auf dieser Seite zuvor eingebettete Bilddatei <code class="language-plaintext highlighter-rouge">Rotation curve of spiral galaxy Messier 33 (Triangulum).png</code> wurde als von <a href="https://markwhittle.uvacreate.virginia.edu/">Professor Mark Whittle (University of Virginia)</a> stammendes, nichtfreies Werk, das vom Wikimedia-Benutzer <a href="https://commons.wikimedia.org/wiki/User:Accrama">Mario De Leo</a> ohne angemessene Quellenangabe plagiiert und als Derivat hochgeladen wurde, eingestuft und <a href="https://commons.wikimedia.org/wiki/Commons:Deletion_requests/File:Rotation_curve_of_spiral_galaxy_Messier_33_(Triangulum).png">daher aus Wikimedia Commons gelöscht</a>; folglich wurde sie auch auf dieser Seite entfernt.</p></blockquote><p>Lassen Sie uns die Orbitalgeschwindigkeit in Abhängigkeit von der Entfernung vorhersagen, wenn die Masse der Galaxie im Zentrum konzentriert ist, bestätigen, dass diese Vorhersage nicht mit den Beobachtungsergebnissen übereinstimmt, und zeigen, dass die Masse $M(R)$, die innerhalb der Entfernung $R$ vom galaktischen Zentrum verteilt ist, proportional zu $R$ sein muss, um die Beobachtungsergebnisse zu erklären.</p><p>Zunächst berechnen wir die Orbitalgeschwindigkeit in der Entfernung $R$, wenn die galaktische Masse $M$ im Zentrum konzentriert ist:</p>\[\frac{GMm}{R^2} = \frac{mv^2}{R}\] \[v = \sqrt{\frac{GM}{R}} \propto \frac{1}{\sqrt{R}}.\]<p>In diesem Fall wird eine Orbitalgeschwindigkeit vorhergesagt, die wie die gestrichelten Linien in den beiden obigen Diagrammen mit $1/\sqrt{R}$ abnimmt. Den Beobachtungsergebnissen zufolge ist die Orbitalgeschwindigkeit $v$ jedoch nahezu konstant, unabhängig von der Entfernung $R$, sodass Vorhersage und Beobachtung nicht übereinstimmen. Diese Beobachtungsergebnisse können nur erklärt werden, wenn $M(R)\propto R$ gilt.</p><p>Setzt man mit der Proportionalitätskonstante $k$ $M(R) = kR$, so ergibt sich:</p>\[v = \sqrt{\frac{GM(R)}{R}} = \sqrt{Gk}\ \text{(konstant)}.\]<p>Daraus schließen Astrophysiker, dass es in vielen Galaxien unentdeckte “Dunkle Materie” geben muss und diese Dunkle Materie mehr als 90% der Masse des Universums ausmachen muss. Die Identität der Dunklen Materie ist jedoch noch nicht eindeutig geklärt, und obwohl es nicht die Haupttheorie ist, gibt es auch Versuche wie die Modifizierte Newtonsche Dynamik (Modified Newtonian Dynamics, MOND), die die Beobachtungsergebnisse ohne die Annahme der Existenz Dunkler Materie zu erklären versuchen. Heute stehen solche Forschungsgebiete an der Spitze der Astrophysik.</p>]]> </content> </entry> <entry><title xml:lang="de">Die Methode der unbestimmten Koeffizienten</title><link href="https://www.yunseo.kim/de/posts/method-of-undetermined-coefficients/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/method-of-undetermined-coefficients/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/method-of-undetermined-coefficients/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/method-of-undetermined-coefficients/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/method-of-undetermined-coefficients/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/method-of-undetermined-coefficients/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/method-of-undetermined-coefficients/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/method-of-undetermined-coefficients/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/method-of-undetermined-coefficients/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/method-of-undetermined-coefficients/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/method-of-undetermined-coefficients/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/method-of-undetermined-coefficients/" rel="alternate" type="text/html" hreflang="am" /><published>2025-04-20T00:00:00+09:00</published> <updated>2025-07-09T19:24:14+09:00</updated> <id>https://www.yunseo.kim/de/posts/method-of-undetermined-coefficients/</id> <author> <name>Yunseo Kim</name> </author> <category term="Mathematics" /> <category term="Differential Equation" /> <summary xml:lang="de">Die Methode der unbestimmten Koeffizienten vereinfacht die Lösung von Anfangswertproblemen für bestimmte inhomogene lineare DGLs mit konstanten Koeffizienten. Sie ist besonders nützlich in der Technik für Modelle wie Schwingungssysteme oder RLC-Schaltkreise.</summary> <content type="html" xml:lang="de"> <![CDATA[<p>Die Methode der unbestimmten Koeffizienten vereinfacht die Lösung von Anfangswertproblemen für bestimmte inhomogene lineare DGLs mit konstanten Koeffizienten. Sie ist besonders nützlich in der Technik für Modelle wie Schwingungssysteme oder RLC-Schaltkreise.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="tldr">TL;DR</h2><blockquote class="prompt-info"><ul><li><strong>Anwendungsbereich der Methode der unbestimmten Koeffizienten</strong>:<ul><li>Lineare gewöhnliche Differentialgleichungen der Form $y^{\prime\prime} + ay^{\prime} + by = r(x)$<li>mit <strong>konstanten Koeffizienten $a$ und $b$</strong>,<li>und einer Inhomogenität $r(x)$, die aus Exponentialfunktionen, Potenzen von $x$, $\cos$ oder $\sin$ oder Summen und Produkten solcher Funktionen besteht.</ul><li><strong>Ansatzregeln für die Methode der unbestimmten Koeffizienten</strong><ul><li><strong>(a) Grundregel</strong>: Wenn $r(x)$ in Gleichung ($\ref{eqn:linear_ode_with_constant_coefficients}$) einer der Funktionen in der ersten Spalte der Tabelle entspricht, wählen Sie den Ansatz $y_p$ aus derselben Zeile und bestimmen Sie die unbestimmten Koeffizienten, indem Sie $y_p$ und seine Ableitungen in die Gleichung ($\ref{eqn:linear_ode_with_constant_coefficients}$) einsetzen.<li><strong>(b) Modifikationsregel</strong>: Wenn ein Term im gewählten Ansatz für $y_p$ eine Lösung der zugehörigen homogenen DGL $y^{\prime\prime} + ay^{\prime} + by = 0$ ist, multiplizieren Sie diesen Term mit $x$ (oder mit $x^2$, falls diese Lösung einer doppelten Wurzel der charakteristischen Gleichung der homogenen DGL entspricht).<li><strong>(c) Summenregel</strong>: Wenn $r(x)$ eine Summe von Funktionen aus der ersten Spalte der Tabelle ist, wählen Sie für $y_p$ die Summe der entsprechenden Funktionen aus der zweiten Spalte.</ul></ul><table><thead><tr><th style="text-align: left">Term in $r(x)$<th style="text-align: left">Ansatz für $y_p(x)$<tbody><tr><td style="text-align: left">$ke^{\gamma x}$<td style="text-align: left">$Ce^{\gamma x}$<tr><td style="text-align: left">$kx^n\ (n=0,1,\cdots)$<td style="text-align: left">$K_nx^n + K_{n-1}x^{n-1} + \cdots + K_1x + K_0$<tr><td style="text-align: left">$k\cos{\omega x}$<br />$k\sin{\omega x}$<td style="text-align: left">$K\cos{\omega x} + M\sin{\omega x}$<tr><td style="text-align: left">$ke^{\alpha x}\cos{\omega x}$<br />$ke^{\alpha x}\sin{\omega x}$<td style="text-align: left">$e^{\alpha x}(K\cos{\omega x} + M\sin{\omega x})$</table></blockquote><h2 id="voraussetzungen">Voraussetzungen</h2><ul><li><a href="/de/posts/homogeneous-linear-odes-of-second-order/">Homogene lineare DGL zweiter Ordnung</a><li><a href="/de/posts/homogeneous-linear-odes-with-constant-coefficients/">Homogene lineare DGL zweiter Ordnung mit konstanten Koeffizienten</a><li><a href="/de/posts/euler-cauchy-equation/">Die Euler-Cauchy-Gleichung</a><li><a href="/de/posts/wronskian-existence-and-uniqueness-of-solutions/">Wronski-Determinante, Existenz und Eindeutigkeit von Lösungen</a><li><a href="/de/posts/nonhomogeneous-linear-odes-of-second-order/">Inhomogene lineare DGL zweiter Ordnung</a><li>Vektorräume, Lineare Hülle (Lineare Algebra)</ul><h2 id="die-methode-der-unbestimmten-koeffizienten">Die Methode der unbestimmten Koeffizienten</h2><p>Betrachten wir eine inhomogene lineare Differentialgleichung zweiter Ordnung mit $r(x) \not\equiv 0$</p>\[y^{\prime\prime} + p(x)y^{\prime} + q(x)y = r(x) \label{eqn:nonhomogeneous_linear_ode}\tag{1}\]<p>und die zugehörige homogene Differentialgleichung</p>\[y^{\prime\prime} + p(x)y^{\prime} + q(x)y = 0 \label{eqn:homogeneous_linear_ode}\tag{2}\]<p>Wie wir im Beitrag über <a href="/de/posts/nonhomogeneous-linear-odes-of-second-order/">inhomogene lineare DGL zweiter Ordnung</a> gesehen haben, müssen wir zur Lösung eines Anfangswertproblems für die inhomogene lineare DGL ($\ref{eqn:nonhomogeneous_linear_ode}$) zunächst die homogene DGL ($\ref{eqn:homogeneous_linear_ode}$) lösen, um $y_h$ zu finden, und dann eine spezielle Lösung $y_p$ der Gleichung ($\ref{eqn:nonhomogeneous_linear_ode}$) finden, um die allgemeine Lösung</p>\[y(x) = y_h(x) + y_p(x) \label{eqn:general_sol}\tag{3}\]<p>zu erhalten. Wie findet man also $y_p$? Eine allgemeine Methode zur Bestimmung von $y_p$ ist die <strong>Methode der Variation der Konstanten</strong>, aber in bestimmten Fällen kann die viel einfachere <strong>Methode der unbestimmten Koeffizienten</strong> angewendet werden. Insbesondere ist sie eine in der Technik häufig verwendete Methode, da sie auf Schwingungssysteme und RLC-Schaltkreis-Modelle anwendbar ist.</p><p>Die Methode der unbestimmten Koeffizienten eignet sich für lineare Differentialgleichungen mit <strong>konstanten Koeffizienten $a$ und $b$</strong> und einer Inhomogenität $r(x)$, die aus Exponentialfunktionen, Potenzen von $x$, $\cos$ oder $\sin$ oder Summen und Produkten solcher Funktionen besteht:</p>\[y^{\prime\prime} + ay^{\prime} + by = r(x) \label{eqn:linear_ode_with_constant_coefficients}\tag{4}\]<p>Der Kern der Methode der unbestimmten Koeffizienten liegt darin, dass solche Funktionen $r(x)$ Ableitungen haben, die ihnen selbst ähneln. Um die Methode anzuwenden, wählt man einen Ansatz für $y_p$, der eine ähnliche Form wie $r(x)$ hat, aber unbestimmte Koeffizienten enthält, die durch Einsetzen von $y_p$ und seinen Ableitungen in die gegebene Differentialgleichung bestimmt werden. Die Regeln für die Wahl eines geeigneten Ansatzes für $y_p$ für praktisch wichtige Formen von $r(x)$ in der Technik lauten wie folgt.</p><blockquote class="prompt-info"><p><strong>Ansatzregeln für die Methode der unbestimmten Koeffizienten</strong><br /> <strong>(a) Grundregel</strong>: Wenn $r(x)$ in Gleichung ($\ref{eqn:linear_ode_with_constant_coefficients}$) einer der Funktionen in der ersten Spalte der Tabelle entspricht, wählen Sie den Ansatz $y_p$ aus derselben Zeile und bestimmen Sie die unbestimmten Koeffizienten, indem Sie $y_p$ und seine Ableitungen in die Gleichung ($\ref{eqn:linear_ode_with_constant_coefficients}$) einsetzen.<br /> <strong>(b) Modifikationsregel</strong>: Wenn ein Term im gewählten Ansatz für $y_p$ eine Lösung der zugehörigen homogenen DGL $y^{\prime\prime} + ay^{\prime} + by = 0$ ist, multiplizieren Sie diesen Term mit $x$ (oder mit $x^2$, falls diese Lösung einer doppelten Wurzel der charakteristischen Gleichung der homogenen DGL entspricht).<br /> <strong>(c) Summenregel</strong>: Wenn $r(x)$ eine Summe von Funktionen aus der ersten Spalte der Tabelle ist, wählen Sie für $y_p$ die Summe der entsprechenden Funktionen aus der zweiten Spalte.</p><table><thead><tr><th style="text-align: left">Term in $r(x)$<th style="text-align: left">Ansatz für $y_p(x)$<tbody><tr><td style="text-align: left">$ke^{\gamma x}$<td style="text-align: left">$Ce^{\gamma x}$<tr><td style="text-align: left">$kx^n\ (n=0,1,\cdots)$<td style="text-align: left">$K_nx^n + K_{n-1}x^{n-1} + \cdots + K_1x + K_0$<tr><td style="text-align: left">$k\cos{\omega x}$<br />$k\sin{\omega x}$<td style="text-align: left">$K\cos{\omega x} + M\sin{\omega x}$<tr><td style="text-align: left">$ke^{\alpha x}\cos{\omega x}$<br />$ke^{\alpha x}\sin{\omega x}$<td style="text-align: left">$e^{\alpha x}(K\cos{\omega x} + M\sin{\omega x})$</table></blockquote><p>Diese Methode ist nicht nur einfach, sondern auch selbstkorrigierend. Wenn man einen falschen Ansatz für $y_p$ wählt oder zu wenige Terme verwendet, führt dies zu einem Widerspruch. Wählt man zu viele Terme, werden die Koeffizienten der überflüssigen Terme zu $0$, was zum richtigen Ergebnis führt. Selbst wenn bei der Anwendung der Methode etwas schief geht, wird man es im Laufe der Lösung bemerken. Solange man also einen einigermaßen vernünftigen Ansatz für $y_p$ gemäß den obigen Regeln wählt, kann man es ohne Bedenken versuchen.</p><h3 id="beweis-der-summenregel">Beweis der Summenregel</h3><p>Betrachten wir eine inhomogene lineare Differentialgleichung der Form $r(x) = r_1(x) + r_2(x)$:</p>\[y^{\prime\prime} + ay^{\prime} + by = r_1(x) + r_2(x)\]<p>Nehmen wir nun an, die folgenden beiden Gleichungen mit derselben linken Seite und den Inhomogenitäten $r_1$ bzw. $r_2$</p>\[\begin{gather*} y^{\prime\prime} + ay^{\prime} + by = r_1(x) \\ y^{\prime\prime} + ay^{\prime} + by = r_2(x) \end{gather*}\]<p>haben die partikulären Lösungen ${y_p}_1$ bzw. ${y_p}_2$. Bezeichnen wir die linke Seite der gegebenen Gleichung mit $L[y]$, so gilt aufgrund der Linearität von $L[y]$ für $y_p = {y_p}_1 + {y_p}_2$ die folgende Beziehung, womit die Summenregel bewiesen ist.</p>\[L[y_p] = L[{y_p}_1 + {y_p}_2] = L[{y_p}_1] + L[{y_p}_2] = r_1 + r_2 = r. \ \blacksquare\]<h2 id="beispiel-yprimeprime--ayprime--by--kegamma-x">Beispiel: $y^{\prime\prime} + ay^{\prime} + by = ke^{\gamma x}$</h2><p>Nach der Grundregel (a) setzen wir $y_p = Ce^{\gamma x}$ in die gegebene Gleichung $y^{\prime\prime} + ay^{\prime} + by = ke^{\gamma x}$ ein:</p>\[\gamma^2 Ce^{\gamma x} + \gamma aCe^{\gamma x} + bCe^{\gamma x} = ke^{\gamma x}\] \[C(\gamma^2 + a\gamma + b)e^{\gamma x} = ke^{\gamma x}\] \[C(\gamma^2 + a\gamma + b) = k.\]<h3 id="fall-gamma2--agamma--b-neq-0">Fall $\gamma^2 + a\gamma + b \neq 0$</h3><p>Wir können den unbestimmten Koeffizienten $C$ bestimmen und $y_p$ wie folgt finden:</p>\[C = \frac{k}{\gamma^2 + a\gamma + b}\] \[y_p = Ce^{\gamma x} = \frac{k}{\gamma^2 + a\gamma + b} e^{\gamma x}.\]<h3 id="fall-gamma2--agamma--b--0">Fall $\gamma^2 + a\gamma + b = 0$</h3><p>In diesem Fall müssen wir die Modifikationsregel (b) anwenden. Zuerst bestimmen wir die Wurzeln der charakteristischen Gleichung der homogenen DGL $y^{\prime\prime} + ay^{\prime} + by = 0$, indem wir $b = -\gamma^2 - a\gamma = -\gamma(a + \gamma)$ verwenden.</p>\[y^{\prime\prime} + ay^{\prime} - \gamma(a + \gamma)y = 0\] \[\lambda^2 + a\lambda - \gamma(a + \gamma) = 0\] \[(\lambda + (a + \gamma))(\lambda - \gamma) = 0\] \[\lambda = \gamma, -a -\gamma.\]<p>Daraus erhalten wir die Basis der homogenen DGL:</p>\[y_1 = e^{\gamma x}, \quad y_2 = e^{(-a - \gamma)x}\]<h4 id="fall-gamma-neq--a-gamma">Fall $\gamma \neq -a-\gamma$</h4><p>Da der gewählte Ansatz $y_p = Ce^{\gamma x}$ eine einfache (nicht doppelte) Wurzel der charakteristischen Gleichung der zugehörigen homogenen DGL ist, multiplizieren wir diesen Term gemäß der Modifikationsregel (b) mit $x$ und setzen $y_p = Cxe^{\gamma x}$.</p><p>Setzen wir nun den modifizierten Ansatz $y_p$ wieder in die gegebene Gleichung $y^{\prime\prime} + ay^{\prime} - \gamma(a + \gamma)y = ke^{\gamma x}$ ein:</p>\[C(2\gamma + \gamma^2 x)e^{\gamma x} + aC(1 + \gamma x)e^{\gamma x} - \gamma(a + \gamma)Cxe^{\gamma x} = ke^{\gamma x}\] \[C \left[\left\{\gamma^2 + a\gamma -\gamma(a + \gamma)\right\}x + 2\gamma + a \right]e^{\gamma x} = ke^{\gamma x}\] \[C(2\gamma + a)e^{\gamma x} = ke^{\gamma x}\] \[C(2\gamma + a) = k\] \[\therefore C = \frac{k}{2\gamma + a}, \quad y_p = Cxe^{\gamma x} = \frac{k}{2\gamma + a}xe^{\gamma x}.\]<h4 id="fall-gamma---a-gamma">Fall $\gamma = -a-\gamma$</h4><p>In diesem Fall ist der gewählte Ansatz $y_p = Ce^{\gamma x}$ eine doppelte Wurzel der charakteristischen Gleichung der zugehörigen homogenen DGL. Gemäß der Modifikationsregel (b) multiplizieren wir diesen Term mit $x^2$ und setzen $y_p = Cx^2 e^{\gamma x}$.</p><p>Setzen wir nun den modifizierten Ansatz $y_p$ wieder in die gegebene Gleichung $y^{\prime\prime} - 2\gamma y^{\prime} + \gamma^2 y = ke^{\gamma x}$ ein:</p>\[C(2 + 4\gamma x + \gamma^2 x^2)e^{\gamma x} + C(-4\gamma x - 2\gamma^2 x^2)e^{\gamma x} + C(\gamma^2 x^2)e^{\gamma x} = ke^{\gamma x}\] \[2Ce^{\gamma x} = ke^{\gamma x}\] \[2C = k\] \[\therefore C = \frac{k}{2}, \quad y_p = Cx^2 e^{\gamma x} = \frac{k}{2}x^2 e^{\gamma x}.\]<h2 id="erweiterung-der-methode-rx-als-produkt-von-funktionen">Erweiterung der Methode: $r(x)$ als Produkt von Funktionen</h2><p>Betrachten wir eine inhomogene lineare Differentialgleichung der Form $r(x) = k x^n e^{\alpha x}\cos(\omega x)$:</p>\[y^{\prime\prime} + ay^{\prime} + by = C x^n e^{\alpha x}\cos(\omega x)\]<p>Wir werden zeigen, dass wenn $r(x)$ ein Produkt oder eine Summe von Funktionen wie der Exponentialfunktion $e^{\alpha x}$, einer Potenz von $x$ ($x^m$) und $\cos{\omega x}$ oder $\sin{\omega x}$ ist (hier nehmen wir $\cos$ an, ohne an Allgemeinheit zu verlieren), also wenn $r(x)$ als Summe und Produkt von Funktionen aus der ersten Spalte der obigen Tabelle ausgedrückt werden kann, eine Lösung $y_p$ der Gleichung existiert, die eine Summe und ein Produkt von Funktionen aus der zweiten Spalte derselben Tabelle ist.</p><blockquote class="prompt-tip"><p>Für einen rigorosen Beweis werden Teile mit Konzepten aus der linearen Algebra beschrieben, die mit einem * markiert sind. Sie können diese Abschnitte überspringen und trotzdem ein grundlegendes Verständnis erlangen.</p></blockquote><h3 id="definition-des-vektorraums-v">Definition des Vektorraums $V$*</h3><p>Für ein $r(x)$ der Form \(\begin{align*} r(x) &amp;= C_1x^{n_1}e^{\alpha_1 x} \times C_2x^{n_2}e^{\alpha_2 x}\cos(\omega x) \times \cdots \\ &amp;= C x^n e^{\alpha x}\cos(\omega x) \end{align*}\)</p><p>können wir einen Vektorraum $V$ so definieren, dass $r(x) \in V$:</p>\[V = \mathrm{span}\left\{x^k e^{\alpha x}\cos(\omega x), \; x^k e^{\alpha x}\sin(\omega x) \bigm| k=0,1,\dots,n \right\}\]<h3 id="ableitungsformen-von-exponential--polynom--und-trigonometrischen-funktionen">Ableitungsformen von Exponential-, Polynom- und trigonometrischen Funktionen</h3><p>Die Ableitungsformen der Grundfunktionen aus der ersten Spalte der obigen Tabelle sind wie folgt:</p><ul><li>Exponentialfunktion: $\cfrac{d}{dx}e^{\alpha x} = \alpha e^{\alpha x}$<li>Polynomfunktion: $\cfrac{d}{dx}x^m = mx^{m-1}$<li>Trigonometrische Funktionen: $\cfrac{d}{dx}\cos\omega x = -\omega\sin\omega x, \quad \cfrac{d}{dx}\sin\omega x = \omega\cos\omega x$</ul><p>Die durch Differenzieren dieser Funktionen erhaltenen Ableitungen werden ebenfalls als <u>Summe von Funktionen desselben Typs</u> ausgedrückt.</p><p>Wenn also die Funktionen $f$ und $g$ die oben genannten Funktionen oder deren Summen sind, ergibt die Anwendung der Produktregel auf $r(x) = f(x)g(x)$:</p>\[\begin{align*} (fg)^{\prime} &amp;= f^{\prime}g + fg^{\prime}, \\ (fg)^{\prime\prime} &amp;= f^{\prime\prime}g + 2f^{\prime}g^{\prime} + fg^{\prime\prime} \end{align*}\]<p>Hier können $f$, $f^{\prime}$, $f^{\prime\prime}$ und $g$, $g^{\prime}$, $g^{\prime\prime}$ alle als Summen oder skalare Vielfache von Exponential-, Polynom- und trigonometrischen Funktionen geschrieben werden. Daher können auch $r^{\prime}(x) = (fg)^{\prime}$ und $r^{\prime\prime}(x) = (fg)^{\prime\prime}$ wie $r(x)$ als Summe und Produkt dieser Funktionen ausgedrückt werden.</p><h3 id="invarianz-von-v-unter-dem-differenzialoperator-d-und-der-linearen-transformation-l">Invarianz von $V$ unter dem Differenzialoperator $D$ und der linearen Transformation $L$*</h3><p>Das bedeutet, nicht nur $r(x)$ selbst, sondern auch $r^{\prime}(x)$ und $r^{\prime\prime}(x)$ sind Linearkombinationen von Termen der Form $x^k e^{\alpha x}\cos(\omega x)$ und $x^k e^{\alpha x}\sin(\omega x)$.</p>\[r(x) \in V \implies r^{\prime}(x) \in V,\ r^{\prime\prime}(x) \in V.\]<p>Wenn wir dies nicht auf $r(x)$ beschränken, sondern allgemeiner für alle Elemente des zuvor definierten Vektorraums $V$ unter Verwendung des Differenzialoperators $D$ ausdrücken, ist <em>der Vektorraum $V$ unter dem Differenzialoperator $D$ abgeschlossen</em>. Bezeichnen wir die linke Seite der gegebenen Gleichung $y^{\prime\prime} + ay^{\prime} + by$ mit $L[y]$, so ist <em>$V$ invariant unter $L$</em>.</p>\[D^2(V)\subseteq V,\quad aD(V)\subseteq V,\quad b\,V\subseteq V \implies L(V)\subseteq V.\]<p>Da $r(x) \in V$ und $V$ invariant unter $L$ ist, existiert ein weiteres Element $y_p \in V$, das $L[y_p] = r$ erfüllt.</p>\[\exists y_p \in V: L[y_p] = r\]<h3 id="ansatz">Ansatz</h3><p>Daher, wenn wir einen geeigneten Ansatz für $y_p$ als Summe aller möglichen Produktterme mit unbestimmten Koeffizienten $A_0, A_1, \dots, A_n$ und $K, M$ wie folgt wählen, können wir die unbestimmten Koeffizienten bestimmen, indem wir $y_p$ (oder $xy_p$, $x^2y_p$) und seine Ableitungen gemäß der Grundregel (a) und der Modifikationsregel (b) in die gegebene Gleichung einsetzen. Dabei wird $n$ entsprechend dem Grad von $x$ in $r(x)$ bestimmt.</p>\[y_p = e^{\alpha x}(A_nx^n + A_{n-1}x^{n-1} + \cdots + A_1x + A_0)(K\cos{\omega x} + M \sin{\omega x}).\]<p>$\blacksquare$</p><blockquote class="prompt-warning"><p>Wenn die gegebene Inhomogenität $r(x)$ verschiedene Werte für $\alpha_i$ und $\omega_j$ enthält, muss der Ansatz für $y_p$ so gewählt werden, dass er alle möglichen Terme der Form $x^{k}e^{\alpha_i x}\cos(\omega_j x)$ und $x^{k}e^{\alpha_i x}\sin(\omega_j x)$ für jeden Wert von $\alpha_i$ und $\omega_j$ enthält.<br /> Der Vorteil der Methode der unbestimmten Koeffizienten liegt in ihrer Einfachheit. Wenn der Ansatz zu kompliziert wird und dieser Vorteil verloren geht, ist es möglicherweise besser, die später zu behandelnde Methode der Variation der Konstanten anzuwenden.</p></blockquote><h2 id="erweiterung-der-methode-die-euler-cauchy-gleichung">Erweiterung der Methode: Die Euler-Cauchy-Gleichung</h2><p>Die Methode der unbestimmten Koeffizienten kann nicht nur auf <a href="/de/posts/homogeneous-linear-odes-with-constant-coefficients/">homogene lineare DGL zweiter Ordnung mit konstanten Koeffizienten</a>, sondern auch auf die <a href="/de/posts/euler-cauchy-equation/">Euler-Cauchy-Gleichung</a> angewendet werden:</p>\[x^2y^{\prime\prime} + axy^{\prime} + by = r(x) \label{eqn:euler_cauchy}\tag{5}\]<h3 id="variablensubstitution">Variablensubstitution</h3><p>Durch die <a href="/de/posts/euler-cauchy-equation/#transformation-in-eine-homogene-lineare-gdgl-mit-konstanten-koeffizienten">Transformation in eine homogene lineare DGL mit konstanten Koeffizienten durch Substitution von $x = e^t$</a> mit</p>\[\frac{d}{dx} = \frac{1}{x}\frac{d}{dt}, \quad \frac{d^2}{dx^2} = \frac{1}{x^2}\left(\frac{d^2}{dt^2} - \frac{d}{dt} \right)\]<p>kann die Euler-Cauchy-Gleichung, wie wir bereits gesehen haben, in die folgende homogene lineare DGL mit konstanten Koeffizienten bezüglich $t$ umgewandelt werden:</p>\[y^{\prime\prime} + (a-1)y^{\prime} + by = r(e^t). \label{eqn:substituted}\tag{6}\]<p>Nun können wir die <a href="#die-methode-der-unbestimmten-koeffizienten">zuvor besprochene Methode der unbestimmten Koeffizienten</a> auf die Gleichung ($\ref{eqn:substituted}$) anwenden, um sie für $t$ zu lösen, und schließlich die Lösung für $x$ finden, indem wir $t = \ln x$ verwenden.</p><h3 id="fall-in-dem-rx-aus-potenzen-von-x-natürlichen-logarithmen-oder-summen-und-produkten-solcher-funktionen-besteht">Fall, in dem $r(x)$ aus Potenzen von $x$, natürlichen Logarithmen oder Summen und Produkten solcher Funktionen besteht</h3><p>Insbesondere wenn die Inhomogenität $r(x)$ aus Potenzen von $x$, natürlichen Logarithmen oder Summen und Produkten solcher Funktionen besteht, kann ein geeigneter Ansatz für $y_p$ direkt gemäß den folgenden Ansatzregeln für die Euler-Cauchy-Gleichung gewählt werden.</p><blockquote class="prompt-info"><p><strong>Ansatzregeln für die Methode der unbestimmten Koeffizienten: Euler-Cauchy-Gleichung</strong><br /> <strong>(a) Grundregel</strong>: Wenn $r(x)$ in Gleichung ($\ref{eqn:euler_cauchy}$) einer der Funktionen in der ersten Spalte der Tabelle entspricht, wählen Sie den Ansatz $y_p$ aus derselben Zeile und bestimmen Sie die unbestimmten Koeffizienten, indem Sie $y_p$ und seine Ableitungen in die Gleichung ($\ref{eqn:euler_cauchy}$) einsetzen.<br /> <strong>(b) Modifikationsregel</strong>: Wenn ein Term im gewählten Ansatz für $y_p$ eine Lösung der zugehörigen homogenen DGL $x^2y^{\prime\prime} + axy^{\prime} + by = 0$ ist, multiplizieren Sie diesen Term mit $\ln{x}$ (oder mit $(\ln{x})^2$, falls diese Lösung einer doppelten Wurzel der charakteristischen Gleichung der homogenen DGL entspricht).<br /> <strong>(c) Summenregel</strong>: Wenn $r(x)$ eine Summe von Funktionen aus der ersten Spalte der Tabelle ist, wählen Sie für $y_p$ die Summe der entsprechenden Funktionen aus der zweiten Spalte.</p><table><thead><tr><th style="text-align: left">Term in $r(x)$<th style="text-align: left">Ansatz für $y_p(x)$<tbody><tr><td style="text-align: left">$kx^m\ (m=0,1,\cdots)$<td style="text-align: left">$Ax^m$<tr><td style="text-align: left">$kx^m \ln{x}\ (m=0,1,\cdots)$<td style="text-align: left">$x^m(B\ln x + C)$<tr><td style="text-align: left">$k(\ln{x})^s\ (s=0,1,\cdots)$<td style="text-align: left">$D_0 + D_1\ln{x} + \cdots + D_{s-1}(\ln{x})^{s-1} + D_s(\ln{x})^s$<tr><td style="text-align: left">$kx^m (\ln{x})^s$<br />$(m=0,1,\cdots ;\; s=0,1,\cdots)$<td style="text-align: left">$x^m \left( D_0 + D_1\ln{x} + \cdots + D_{s-1}(\ln{x})^{s-1} + D_s(\ln{x})^s \right)$</table></blockquote><p>Auf diese Weise kann für praktisch wichtige Formen der Inhomogenität $r(x)$ ein Ansatz für $y_p$ gefunden werden, der mit dem durch die <a href="#variablensubstitution">Variablensubstitution</a> erhaltenen identisch ist, jedoch schneller und einfacher. Man kann diese Ansatzregeln für die Euler-Cauchy-Gleichung ableiten, indem man in den <a href="#die-methode-der-unbestimmten-koeffizienten">ursprünglichen Ansatzregeln</a> $x$ durch $\ln{x}$ ersetzt.</p>]]> </content> </entry> <entry><title xml:lang="de">Inhomogene lineare DGL zweiter Ordnung</title><link href="https://www.yunseo.kim/de/posts/nonhomogeneous-linear-odes-of-second-order/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/nonhomogeneous-linear-odes-of-second-order/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/nonhomogeneous-linear-odes-of-second-order/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/nonhomogeneous-linear-odes-of-second-order/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/nonhomogeneous-linear-odes-of-second-order/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/nonhomogeneous-linear-odes-of-second-order/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/nonhomogeneous-linear-odes-of-second-order/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/nonhomogeneous-linear-odes-of-second-order/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/nonhomogeneous-linear-odes-of-second-order/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/nonhomogeneous-linear-odes-of-second-order/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/nonhomogeneous-linear-odes-of-second-order/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/nonhomogeneous-linear-odes-of-second-order/" rel="alternate" type="text/html" hreflang="am" /><published>2025-04-16T00:00:00+09:00</published> <updated>2025-07-09T19:24:14+09:00</updated> <id>https://www.yunseo.kim/de/posts/nonhomogeneous-linear-odes-of-second-order/</id> <author> <name>Yunseo Kim</name> </author> <category term="Mathematics" /> <category term="Differential Equation" /> <summary xml:lang="de">Untersuchung der allgemeinen Lösung einer inhomogenen linearen DGL zweiter Ordnung, ihrer Beziehung zur homogenen Lösung, sowie der Existenz der allgemeinen und Nichtexistenz singulärer Lösungen.</summary> <content type="html" xml:lang="de"> <![CDATA[<p>Untersuchung der allgemeinen Lösung einer inhomogenen linearen DGL zweiter Ordnung, ihrer Beziehung zur homogenen Lösung, sowie der Existenz der allgemeinen und Nichtexistenz singulärer Lösungen.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="tldr">TL;DR</h2><blockquote class="prompt-info"><ul><li><strong>Allgemeine Lösung</strong> der inhomogenen linearen DGL zweiter Ordnung $y^{\prime\prime} + p(x)y^{\prime} + q(x)y = r(x)$:<ul><li>$y(x) = y_h(x) + y_p(x)$<li>$y_h$: allgemeine Lösung der homogenen GDGL $y^{\prime\prime} + p(x)y^{\prime} + q(x)y = 0$, $y_h = c_1y_1 + c_2y_2$<li>$y_p$: eine partikuläre Lösung der inhomogenen GDGL</ul><li>Der Antwortterm $y_p$ wird nur durch die Eingabe $r(x)$ bestimmt und ändert sich nicht mit unterschiedlichen Anfangsbedingungen für dieselbe inhomogene GDGL. Die Differenz zweier partikulärer Lösungen der inhomogenen GDGL ist eine Lösung der zugehörigen homogenen GDGL.<li><strong>Existenz der allgemeinen Lösung</strong>: Wenn die Koeffizienten $p(x)$, $q(x)$ und die Eingabefunktion $r(x)$ der inhomogenen GDGL stetig sind, existiert immer eine allgemeine Lösung.<li><strong>Nichtexistenz singulärer Lösungen</strong>: Die allgemeine Lösung umfasst alle Lösungen der Gleichung (d.h. es existieren keine singulären Lösungen).</ul></blockquote><h2 id="voraussetzungen">Voraussetzungen</h2><ul><li><a href="/de/posts/homogeneous-linear-odes-of-second-order/">Homogene lineare DGL zweiter Ordnung</a><li><a href="/de/posts/wronskian-existence-and-uniqueness-of-solutions/">Wronski-Determinante, Existenz und Eindeutigkeit von Lösungen</a></ul><h2 id="allgemeine-und-partikuläre-lösung-einer-inhomogenen-linearen-dgl-zweiter-ordnung">Allgemeine und partikuläre Lösung einer inhomogenen linearen DGL zweiter Ordnung</h2><p>Betrachten wir die inhomogene lineare DGL zweiter Ordnung</p>\[y^{\prime\prime} + p(x)y^{\prime} + q(x)y = r(x) \label{eqn:nonhomogeneous_linear_ode}\tag{1}\]<p>Hierbei ist $r(x) \not\equiv 0$. Die <strong>allgemeine Lösung</strong> der Gleichung ($\ref{eqn:nonhomogeneous_linear_ode}$) auf einem offenen Intervall $I$ ist die Summe aus der allgemeinen Lösung $y_h = c_1y_1 + c_2y_2$ der zugehörigen homogenen GDGL</p>\[y^{\prime\prime} + p(x)y^{\prime} + q(x)y = 0 \label{eqn:homogeneous_linear_ode}\tag{2}\]<p>und einer partikulären Lösung $y_p$ der Gleichung ($\ref{eqn:nonhomogeneous_linear_ode}$) in der Form</p>\[y(x) = y_h(x) + y_p(x) \label{eqn:general_sol}\tag{3}\]<p>Eine <strong>partikuläre Lösung</strong> der Gleichung ($\ref{eqn:nonhomogeneous_linear_ode}$) auf dem Intervall $I$ ist eine Lösung, die man aus der allgemeinen Lösung ($\ref{eqn:general_sol}$) erhält, indem man den beliebigen Konstanten $c_1$ und $c_2$ in $y_h$ bestimmte Werte zuweist.</p><p>Das heißt, wenn zur homogenen GDGL ($\ref{eqn:homogeneous_linear_ode}$) eine nur von der unabhängigen Variablen $x$ abhängige Eingabe $r(x)$ hinzugefügt wird, wird der Antwort ein entsprechender Term $y_p$ hinzugefügt. Dieser zusätzliche Antwortterm $y_p$ wird ausschließlich durch die Eingabe $r(x)$ bestimmt und ist unabhängig von den Anfangsbedingungen. Wie wir später sehen werden, ist die Differenz zweier beliebiger Lösungen $y_1$ und $y_2$ der Gleichung ($\ref{eqn:nonhomogeneous_linear_ode}$) (d.h. die Differenz zweier partikulärer Lösungen für unterschiedliche Anfangsbedingungen) so, dass der von den Anfangsbedingungen unabhängige Teil $y_p$ sich aufhebt und nur die Differenz zwischen ${y_h}_1$ und ${y_h}_2$ übrig bleibt. Diese Differenz ist nach dem <a href="/de/posts/homogeneous-linear-odes-of-second-order/#superpositionsprinzip">Superpositionsprinzip</a> eine Lösung der Gleichung ($\ref{eqn:homogeneous_linear_ode}$).</p><h2 id="beziehung-zwischen-den-lösungen-der-inhomogenen-und-der-zugehörigen-homogenen-gdgl">Beziehung zwischen den Lösungen der inhomogenen und der zugehörigen homogenen GDGL</h2><blockquote class="prompt-info"><p><strong>Satz 1: Beziehung zwischen den Lösungen der inhomogenen GDGL ($\ref{eqn:nonhomogeneous_linear_ode}$) und der homogenen GDGL ($\ref{eqn:homogeneous_linear_ode}$)</strong><br /> <strong>(a)</strong> Die Summe einer Lösung $y$ der inhomogenen GDGL ($\ref{eqn:nonhomogeneous_linear_ode}$) und einer Lösung $\tilde{y}$ der homogenen GDGL ($\ref{eqn:homogeneous_linear_ode}$) auf einem offenen Intervall $I$ ist eine Lösung der Gleichung ($\ref{eqn:nonhomogeneous_linear_ode}$) auf dem Intervall $I$. Insbesondere ist die Gleichung ($\ref{eqn:general_sol}$) eine Lösung der Gleichung ($\ref{eqn:nonhomogeneous_linear_ode}$) auf dem Intervall $I$.<br /> <strong>(b)</strong> Die Differenz zweier Lösungen der inhomogenen GDGL ($\ref{eqn:nonhomogeneous_linear_ode}$) auf dem Intervall $I$ ist eine Lösung der homogenen GDGL ($\ref{eqn:homogeneous_linear_ode}$) auf dem Intervall $I$.</p></blockquote><h3 id="beweis">Beweis</h3><h4 id="a">(a)</h4><p>Bezeichnen wir die linke Seite der Gleichungen ($\ref{eqn:nonhomogeneous_linear_ode}$) und ($\ref{eqn:homogeneous_linear_ode}$) mit $L[y]$. Dann gilt für eine beliebige Lösung $y$ der Gleichung ($\ref{eqn:nonhomogeneous_linear_ode}$) und eine beliebige Lösung $\tilde{y}$ der Gleichung ($\ref{eqn:homogeneous_linear_ode}$) auf dem Intervall $I$:</p>\[L[y + \tilde{y}] = L[y] + L[\tilde{y}] = r + 0 = r.\]<h4 id="b">(b)</h4><p>Für zwei beliebige Lösungen $y$ und $y^*$ der Gleichung ($\ref{eqn:nonhomogeneous_linear_ode}$) auf dem Intervall $I$ gilt:</p>\[L[y - y^*] = L[y] - L[y^*] = r - r = 0.\ \blacksquare\]<h2 id="die-allgemeine-lösung-der-inhomogenen-gdgl-umfasst-alle-lösungen">Die allgemeine Lösung der inhomogenen GDGL umfasst alle Lösungen</h2><p>Für die homogene GDGL ($\ref{eqn:homogeneous_linear_ode}$) wissen wir bereits, dass <a href="/de/posts/wronskian-existence-and-uniqueness-of-solutions/#die-allgemeine-lösung-umfasst-alle-lösungen">die allgemeine Lösung alle Lösungen umfasst</a>. Zeigen wir nun, dass dasselbe auch für die inhomogene GDGL ($\ref{eqn:nonhomogeneous_linear_ode}$) gilt.</p><blockquote class="prompt-info"><p><strong>Satz 2: Die allgemeine Lösung der inhomogenen GDGL umfasst alle Lösungen</strong><br /> Wenn die Koeffizienten $p(x)$, $q(x)$ und die Eingabefunktion $r(x)$ der Gleichung ($\ref{eqn:nonhomogeneous_linear_ode}$) auf einem offenen Intervall $I$ stetig sind, dann kann jede Lösung der Gleichung ($\ref{eqn:nonhomogeneous_linear_ode}$) auf dem Intervall $I$ durch geeignete Wahl der beliebigen Konstanten $c_1$ und $c_2$ in $y_h$ der allgemeinen Lösung ($\ref{eqn:general_sol}$) der Gleichung ($\ref{eqn:nonhomogeneous_linear_ode}$) auf dem Intervall $I$ erhalten werden.</p></blockquote><h3 id="beweis-1">Beweis</h3><p>Sei $y^*$ eine beliebige Lösung der Gleichung ($\ref{eqn:nonhomogeneous_linear_ode}$) auf $I$ und sei $x_0$ ein beliebiger Punkt im Intervall $I$. Nach dem <a href="/de/posts/wronskian-existence-and-uniqueness-of-solutions/#existenz-einer-allgemeinen-lösung">Satz über die Existenz einer allgemeinen Lösung</a> existiert $y_h = c_1y_1 + c_2y_2$, und durch die später zu besprechende <strong>Methode der Variation der Konstanten</strong> existiert auch $y_p$, sodass die allgemeine Lösung ($\ref{eqn:general_sol}$) der Gleichung ($\ref{eqn:nonhomogeneous_linear_ode}$) auf dem Intervall $I$ existiert. Nach dem zuvor bewiesenen Satz <a href="#beziehung-zwischen-den-lösungen-der-inhomogenen-und-der-zugehörigen-homogenen-gdgl">1(b)</a> ist $Y = y^* - y_p$ eine Lösung der homogenen GDGL ($\ref{eqn:homogeneous_linear_ode}$) auf dem Intervall $I$, und bei $x_0$ gilt:</p>\[\begin{gather*} Y(x_0) = y^*(x_0) - y_p(x_0) \\ Y^{\prime}(x_0) = {y^*}^{\prime}(x_0) - y_p^{\prime}(x_0) \end{gather*}\]<p>Gemäß dem <a href="/de/posts/wronskian-existence-and-uniqueness-of-solutions/#existenz--und-eindeutigkeitssatz-für-anfangswertprobleme">Existenz- und Eindeutigkeitssatz für Anfangswertprobleme</a> existiert auf dem Intervall $I$ eine eindeutige partikuläre Lösung $Y$ der homogenen GDGL ($\ref{eqn:homogeneous_linear_ode}$), die durch geeignete Wahl von $c_1$ und $c_2$ in $y_h$ für die obigen Anfangsbedingungen erhalten werden kann. Da $y^* = Y + y_p$ ist, haben wir gezeigt, dass jede beliebige partikuläre Lösung $y^*$ der inhomogenen GDGL ($\ref{eqn:nonhomogeneous_linear_ode}$) aus der allgemeinen Lösung ($\ref{eqn:general_sol}$) abgeleitet werden kann. $\blacksquare$</p>]]> </content> </entry> <entry><title xml:lang="de">Wronski-Determinante, Existenz und Eindeutigkeit von Lösungen</title><link href="https://www.yunseo.kim/de/posts/wronskian-existence-and-uniqueness-of-solutions/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/wronskian-existence-and-uniqueness-of-solutions/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/wronskian-existence-and-uniqueness-of-solutions/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/wronskian-existence-and-uniqueness-of-solutions/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/wronskian-existence-and-uniqueness-of-solutions/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/wronskian-existence-and-uniqueness-of-solutions/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/wronskian-existence-and-uniqueness-of-solutions/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/wronskian-existence-and-uniqueness-of-solutions/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/wronskian-existence-and-uniqueness-of-solutions/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/wronskian-existence-and-uniqueness-of-solutions/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/wronskian-existence-and-uniqueness-of-solutions/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/wronskian-existence-and-uniqueness-of-solutions/" rel="alternate" type="text/html" hreflang="am" /><published>2025-04-06T00:00:00+09:00</published> <updated>2025-07-11T21:22:11+09:00</updated> <id>https://www.yunseo.kim/de/posts/wronskian-existence-and-uniqueness-of-solutions/</id> <author> <name>Yunseo Kim</name> </author> <category term="Mathematics" /> <category term="Differential Equation" /> <summary xml:lang="de">Für eine homogene lineare DGL zweiter Ordnung mit stetigen, variablen Koeffizienten untersuchen wir den Existenz- und Eindeutigkeitssatz für Anfangswertprobleme und die Bestimmung der linearen Abhängigkeit/Unabhängigkeit von Lösungen mittels der Wronski-Determinante. Wir zeigen auch, dass solche Gleichungen immer eine allgemeine Lösung besitzen, die alle möglichen Lösungen umfasst.</summary> <content type="html" xml:lang="de"> <![CDATA[<p>Für eine homogene lineare DGL zweiter Ordnung mit stetigen, variablen Koeffizienten untersuchen wir den Existenz- und Eindeutigkeitssatz für Anfangswertprobleme und die Bestimmung der linearen Abhängigkeit/Unabhängigkeit von Lösungen mittels der Wronski-Determinante. Wir zeigen auch, dass solche Gleichungen immer eine allgemeine Lösung besitzen, die alle möglichen Lösungen umfasst.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="tldr">TL;DR</h2><blockquote class="prompt-info"><p>Für eine homogene lineare gewöhnliche Differentialgleichung zweiter Ordnung mit stetigen, variablen Koeffizienten $p$ und $q$ auf einem Intervall $I$</p>\[y^{\prime\prime} + p(x)y^{\prime} + q(x)y = 0\]<p>und den Anfangsbedingungen</p>\[y(x_0)=K_0, \qquad y^{\prime}(x_0)=K_1\]<p>gelten die folgenden vier Sätze.</p><ol><li><strong>Existenz- und Eindeutigkeitssatz für Anfangswertprobleme</strong>: Das durch die gegebene Gleichung und die Anfangsbedingungen definierte Anfangswertproblem hat eine eindeutige Lösung $y(x)$ auf dem Intervall $I$.<li><strong>Bestimmung der linearen Abhängigkeit/Unabhängigkeit von Lösungen mittels der Wronski-Determinante</strong>: Für zwei Lösungen $y_1$ und $y_2$ der Gleichung sind diese linear abhängig, wenn es ein $x_0$ im Intervall $I$ gibt, für das die <strong>Wronski-Determinante</strong> $W(y_1, y_2) = y_1y_2^{\prime} - y_2y_1^{\prime}$ gleich $0$ ist. Wenn es ein $x_1$ im Intervall $I$ gibt, für das $W\neq 0$ ist, sind die beiden Lösungen linear unabhängig.<li><strong>Existenz einer allgemeinen Lösung</strong>: Die gegebene Gleichung besitzt eine allgemeine Lösung auf dem Intervall $I$.<li><strong>Nichtexistenz singulärer Lösungen</strong>: Diese allgemeine Lösung umfasst alle Lösungen der Gleichung (d.h., es gibt keine singulären Lösungen).</ol></blockquote><h2 id="voraussetzungen">Voraussetzungen</h2><ul><li><a href="/de/posts/Solution-of-First-Order-Linear-ODE/">Lösung linearer DGL erster Ordnung</a><li><a href="/de/posts/homogeneous-linear-odes-of-second-order/">Homogene lineare DGL zweiter Ordnung</a><li><a href="/de/posts/homogeneous-linear-odes-with-constant-coefficients/">Homogene lineare DGL zweiter Ordnung mit konstanten Koeffizienten</a><li><a href="/de/posts/euler-cauchy-equation/">Euler-Cauchy-Gleichung</a><li>Inverse Matrizen, singuläre Matrizen und Determinanten</ul><h2 id="homogene-lineare-gdgl-mit-stetigen-variablen-koeffizienten">Homogene lineare GDGL mit stetigen variablen Koeffizienten</h2><p>Zuvor haben wir die allgemeine Lösung für <a href="/de/posts/homogeneous-linear-odes-with-constant-coefficients/">homogene lineare DGL zweiter Ordnung mit konstanten Koeffizienten</a> und die <a href="/de/posts/euler-cauchy-equation/">Euler-Cauchy-Gleichung</a> untersucht. In diesem Beitrag erweitern wir die Diskussion auf einen allgemeineren Fall und untersuchen die Existenz und Form der allgemeinen Lösung einer homogenen linearen gewöhnlichen Differentialgleichung zweiter Ordnung mit beliebigen stetigen <strong>variablen Koeffizienten</strong> $p$ und $q$:</p>\[y^{\prime\prime} + p(x)y^{\prime} + q(x)y = 0 \label{eqn:homogeneous_linear_ode_with_var_coefficients}\tag{1}\]<p>Darüber hinaus werden wir die Eindeutigkeit des <a href="/de/posts/homogeneous-linear-odes-of-second-order/#anfangswertproblem-und-anfangsbedingungen">Anfangswertproblems</a> untersuchen, das aus der gewöhnlichen Differentialgleichung ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) und den folgenden beiden Anfangsbedingungen besteht:</p>\[y(x_0)=K_0, \qquad y^{\prime}(x_0)=K_1 \label{eqn:initial_conditions}\tag{2}\]<p>Um es vorwegzunehmen: Der Kern des hier behandelten Themas ist, dass eine <u>lineare</u> gewöhnliche Differentialgleichung mit stetigen Koeffizienten keine <em>singuläre Lösung</em> (eine Lösung, die nicht aus der allgemeinen Lösung abgeleitet werden kann) besitzt.</p><h2 id="existenz--und-eindeutigkeitssatz-für-anfangswertprobleme">Existenz- und Eindeutigkeitssatz für Anfangswertprobleme</h2><blockquote class="prompt-info"><p><strong>Existenz- und Eindeutigkeitssatz für Anfangswertprobleme</strong><br /> Wenn $p(x)$ und $q(x)$ stetige Funktionen auf einem offenen Intervall $I$ sind und $x_0$ in diesem Intervall $I$ liegt, dann hat das durch die Gleichungen ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) und ($\ref{eqn:initial_conditions}$) definierte Anfangswertproblem eine eindeutige Lösung $y(x)$ auf dem Intervall $I$.</p></blockquote><p>Der Beweis der Existenz wird hier nicht behandelt; wir werden uns nur den Beweis der Eindeutigkeit ansehen. In der Regel ist der Beweis der Eindeutigkeit einfacher als der Beweis der Existenz.<br /> Wenn Sie nicht am Beweis interessiert sind, können Sie diesen Abschnitt überspringen und zu <a href="#lineare-abhängigkeit-und-unabhängigkeit-von-lösungen">Lineare Abhängigkeit und Unabhängigkeit von Lösungen</a> übergehen.</p><h3 id="beweis-der-eindeutigkeit">Beweis der Eindeutigkeit</h3><p>Nehmen wir an, das Anfangswertproblem, bestehend aus der gewöhnlichen Differentialgleichung ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) und den Anfangsbedingungen ($\ref{eqn:initial_conditions}$), hat zwei Lösungen $y_1(x)$ und $y_2(x)$ auf dem Intervall $I$. Wenn wir zeigen können, dass die Differenz dieser beiden Lösungen</p>\[y(x) = y_1(x) - y_2(x)\]<p>auf dem Intervall $I$ identisch null ist, bedeutet dies, dass $y_1 \equiv y_2$ auf dem Intervall $I$ gilt, was die Eindeutigkeit der Lösung beweist.</p><p>Da die Gleichung ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) eine homogene lineare gewöhnliche Differentialgleichung ist, ist die Linearkombination $y$ von $y_1$ und $y_2$ ebenfalls eine Lösung der Gleichung auf $I$. Da $y_1$ und $y_2$ die gleichen Anfangsbedingungen ($\ref{eqn:initial_conditions}$) erfüllen, erfüllt $y$ die Bedingungen</p>\[\begin{align*} &amp; y(x_0) = y_1(x_0) - y_2(x_0) = 0, \\ &amp; y^{\prime}(x_0) = y_1^{\prime}(x_0) - y_2^{\prime}(x_0) = 0 \end{align*} \label{eqn:initial_conditions_*}\tag{3}\]<p>Betrachten wir nun die Funktion</p>\[z(x) = y(x)^2 + y^{\prime}(x)^2\]<p>und ihre Ableitung</p>\[z^{\prime} = 2yy^{\prime} + 2y^{\prime}y^{\prime\prime}\]<p>Aus der gewöhnlichen Differentialgleichung erhalten wir</p>\[y^{\prime\prime} = -py^{\prime} - qy\]<p>und setzen dies in die Gleichung für $z^{\prime}$ ein, um</p>\[z^{\prime} = 2yy^{\prime} - 2p{y^{\prime}}^2 - 2qyy^{\prime} \label{eqn:z_prime}\tag{4}\]<p>zu erhalten. Da $y$ und $y^{\prime}$ reell sind, gilt</p>\[(y\pm y^{\prime})^2 = y^2 \pm 2yy^{\prime} + {y^{\prime}}^2 \geq 0\]<p>Daraus und aus der Definition von $z$ erhalten wir zwei Ungleichungen</p>\[(a)\ 2yy^{\prime} \leq y^2 + {y^{\prime}}^2 = z, \qquad (b)\ 2yy^{\prime} \geq -(y^2 + {y^{\prime}}^2) = -z \label{eqn:inequalities}\tag{5}\]<table><tbody><tr><td>Aus diesen beiden Ungleichungen können wir schließen, dass $<td>2yy^{\prime}<td>\leq z$. Dann gilt für den letzten Term in Gleichung ($\ref{eqn:z_prime}$) die folgende Ungleichung:</table>\[\pm2qyy^{\prime} \leq |\pm 2qyy^{\prime}| = |q||2yy^{\prime}| \leq |q|z.\]<table><tbody><tr><td>Unter Verwendung dieses Ergebnisses und der Tatsache, dass $-p \leq<td>p<td>$, und durch Anwendung von Gleichung ($\ref{eqn:inequalities}$a) auf den Term $2yy^{\prime}$ in Gleichung ($\ref{eqn:z_prime}$) erhalten wir</table>\[z^{\prime} \leq z + 2|p|{y^{\prime}}^2 + |q|z\]<p>Da ${y^{\prime}}^2 \leq y^2 + {y^{\prime}}^2 = z$ ist, ergibt sich daraus</p>\[z^{\prime} \leq (1 + 2|p| + |q|)z\]<table><tbody><tr><td>und wenn wir die Funktion in der Klammer als $h = 1 + 2<td>p<td>+<td>q<td>$ setzen, haben wir</table>\[z^{\prime} \leq hz \quad \forall x \in I \label{eqn:inequality_6a}\tag{6a}\]<p>Auf die gleiche Weise erhalten wir aus den Gleichungen ($\ref{eqn:z_prime}$) und ($\ref{eqn:inequalities}$)</p>\[\begin{align*} -z^{\prime} &amp;= -2yy^{\prime} + 2p{y^{\prime}}^2 + 2qyy^{\prime} \\ &amp;\leq z + 2|p|z + |q|z = hz \end{align*} \label{eqn:inequality_6b}\tag{6b}\]<p>Diese beiden Ungleichungen ($\ref{eqn:inequality_6a}$), ($\ref{eqn:inequality_6b}$) sind äquivalent zu den folgenden Ungleichungen</p>\[z^{\prime} - hz \leq 0, \qquad z^{\prime} + hz \geq 0 \label{eqn:inequalities_7}\tag{7}\]<p>und die <a href="/de/posts/Solution-of-First-Order-Linear-ODE/#inhomogene-lineare-gewöhnliche-differentialgleichungen">integrierenden Faktoren</a> für die linken Seiten der beiden Gleichungen sind</p>\[F_1 = e^{-\int h(x)\ dx} \qquad \text{und} \qquad F_2 = e^{\int h(x)\ dx}\]<p>Da $h$ stetig ist, existiert das unbestimmte Integral $\int h(x)\ dx$, und da $F_1$ und $F_2$ positiv sind, erhalten wir aus Gleichung ($\ref{eqn:inequalities_7}$)</p>\[F_1(z^{\prime} - hz) = (F_1 z)^{\prime} \leq 0, \qquad F_2(z^{\prime} + hz) = (F_2 z)^{\prime} \geq 0\]<p>Dies bedeutet, dass $F_1 z$ auf dem Intervall $I$ nicht zunimmt und $F_2 z$ nicht abnimmt. Gemäß Gleichung ($\ref{eqn:initial_conditions_*}$) ist $z(x_0) = 0$, also</p>\[\begin{cases} \left(F_1 z \geq (F_1 z)_{x_0} = 0\right)\ \&amp; \ \left(F_2 z \leq (F_2 z)_{x_0} = 0\right) &amp; (x \leq x_0) \\ \left(F_1 z \leq (F_1 z)_{x_0} = 0\right)\ \&amp; \ \left(F_2 z \geq (F_2 z)_{x_0} = 0\right) &amp; (x \geq x_0) \end{cases}\]<p>Schließlich können wir die Eindeutigkeit der Lösung zeigen, indem wir beide Seiten der Ungleichungen durch die positiven Zahlen $F_1$ und $F_2$ teilen:</p>\[(z \leq 0) \ \&amp; \ (z \geq 0) \quad \forall x \in I\] \[z = y^2 + {y^{\prime}}^2 = 0 \quad \forall x \in I\] \[\therefore y \equiv y_1 - y_2 \equiv 0 \quad \forall x \in I. \ \blacksquare\]<h2 id="lineare-abhängigkeit-und-unabhängigkeit-von-lösungen">Lineare Abhängigkeit und Unabhängigkeit von Lösungen</h2><p>Erinnern wir uns kurz an den Inhalt des Beitrags über <a href="/de/posts/homogeneous-linear-odes-of-second-order/#basis-und-allgemeine-lösung">lineare homogene DGL zweiter Ordnung</a>. Die allgemeine Lösung auf einem offenen Intervall $I$ wird aus einer <strong>Basis</strong> $y_1$, $y_2$ auf $I$ gebildet, d.h. aus einem Paar linear unabhängiger Lösungen. Dass $y_1$ und $y_2$ auf dem Intervall $I$ <strong>linear unabhängig</strong> sind, bedeutet, dass für alle $x$ im Intervall Folgendes gilt:</p>\[k_1y_1(x) + k_2y_2(x) = 0 \Leftrightarrow k_1=0\text{ und }k_2=0 \label{eqn:linearly_independent}\tag{8}\]<p>Wenn dies nicht erfüllt ist und $k_1y_1(x) + k_2y_2(x) = 0$ für mindestens ein nicht-null $k_1$ oder $k_2$ gilt, sind $y_1$ und $y_2$ auf dem Intervall $I$ <strong>linear abhängig</strong>. In diesem Fall gilt für alle $x$ im Intervall $I$</p>\[\text{(a) } y_1 = ky_2 \quad \text{oder} \quad \text{(b) } y_2 = ly_1 \label{eqn:linearly_dependent}\tag{9}\]<p>sodass $y_1$ und $y_2$ proportional sind.</p><p>Betrachten wir nun das folgende Kriterium zur Bestimmung der linearen Unabhängigkeit/Abhängigkeit von Lösungen.</p><blockquote class="prompt-info"><p><strong>Bestimmung der linearen Abhängigkeit/Unabhängigkeit von Lösungen mittels der Wronski-Determinante</strong><br /> <strong>i.</strong> Wenn die gewöhnliche Differentialgleichung ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) auf einem offenen Intervall $I$ stetige Koeffizienten $p(x)$ und $q(x)$ hat, dann ist die notwendige und hinreichende Bedingung dafür, dass zwei Lösungen $y_1$ und $y_2$ der Gleichung ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) auf dem Intervall $I$ linear abhängig sind, dass ihre <em>Wronski-Determinante</em>, kurz <strong>Wronski-Determinante</strong> genannt,</p>\[W(y_1, y_2) = \begin{vmatrix} y_1 &amp; y_2 \\ y_1^{\prime} &amp; y_2^{\prime} \\ \end{vmatrix} = y_1y_2^{\prime} - y_2y_1^{\prime} \label{eqn:wronskian}\tag{10}\]<p>an einem Punkt $x_0$ im Intervall $I$ null wird.</p>\[\exists x_0 \in I: W(x_0)=0 \iff y_1 \text{ und } y_2 \text{ sind linear abhängig}\]<p><strong>ii.</strong> Wenn $W=0$ an einem Punkt $x=x_0$ im Intervall $I$ ist, dann ist $W=0$ für alle $x$ im Intervall $I$.</p>\[\exists x_0 \in I: W(x_0)=0 \implies \forall x \in I: W(x)=0\]<p>Mit anderen Worten, wenn es ein $x_1$ im Intervall $I$ gibt, für das $W\neq 0$ ist, dann sind $y_1$ und $y_2$ in diesem Intervall $I$ linear unabhängig.</p>\[\begin{align*} \exists x_1 \in I: W(x_1)\neq 0 &amp;\implies \forall x \in I: W(x)\neq 0 \\ &amp;\implies y_1 \text{ und } y_2 \text{ sind linear unabhängig} \end{align*}\]</blockquote><blockquote class="prompt-tip"><p>Die Wronski-Determinante wurde erstmals vom polnischen Mathematiker Józef Maria Hoene-Wroński eingeführt und nach seinem Tod im Jahr 11882 HE vom schottischen Mathematiker Sir Thomas Muir benannt.</p></blockquote><h3 id="beweis">Beweis</h3><h4 id="i-a">i. (a)</h4><p>Nehmen wir an, $y_1$ und $y_2$ sind auf dem Intervall $I$ linear abhängig. Dann gilt auf dem Intervall $I$ entweder Gleichung ($\ref{eqn:linearly_dependent}$a) oder ($\ref{eqn:linearly_dependent}$b). Wenn Gleichung ($\ref{eqn:linearly_dependent}$a) gilt, dann ist</p>\[W(y_1, y_2) = y_1y_2^{\prime} - y_2y_1^{\prime} = ky_2y_2^{\prime} - y_2(ky_2^{\prime}) = 0\]<p>und ebenso, wenn Gleichung ($\ref{eqn:linearly_dependent}$b) gilt,</p>\[W(y_1, y_2) = y_1y_2^{\prime} - y_2y_1^{\prime} = y_1(ly_1^{\prime}) - ly_1y_1^{\prime} = 0\]<p>Daher können wir bestätigen, dass die Wronski-Determinante $W(y_1, y_2)=0$ <u>für alle $x$ im Intervall $I$</u> ist.</p><h4 id="i-b">i. (b)</h4><p>Umgekehrt wollen wir zeigen, dass, wenn $W(y_1, y_2)=0$ für ein $x = x_0$ gilt, $y_1$ und $y_2$ auf dem Intervall $I$ linear abhängig sind. Betrachten wir das lineare Gleichungssystem für die Unbekannten $k_1$, $k_2$:</p>\[\begin{gather*} k_1y_1(x_0) + k_2y_2(x_0) = 0 \\ k_1y_1^{\prime}(x_0) + k_2y_2^{\prime}(x_0) = 0 \end{gather*} \label{eqn:linear_system}\tag{11}\]<p>Dies kann in Vektorform wie folgt ausgedrückt werden:</p>\[\left[\begin{matrix} y_1(x_0) &amp; y_2(x_0) \\ y_1^{\prime}(x_0) &amp; y_2^{\prime}(x_0) \end{matrix}\right] \left[\begin{matrix} k_1 \\ k_2 \end{matrix}\right] = 0 \label{eqn:vector_equation}\tag{12}\]<p>Die Koeffizientenmatrix dieser Vektorgleichung ist</p>\[A = \left[\begin{matrix} y_1(x_0) &amp; y_2(x_0) \\ y_1^{\prime}(x_0) &amp; y_2^{\prime}(x_0) \end{matrix}\right]\]<p>und die Determinante dieser Matrix ist $W(y_1(x_0), y_2(x_0))$. Da $\det(A) = W=0$ ist, ist $A$ eine <strong>singuläre Matrix</strong>, die keine <strong>inverse Matrix</strong> besitzt. Daher hat das Gleichungssystem ($\ref{eqn:linear_system}$) eine nichttriviale Lösung $(c_1, c_2)$, bei der mindestens einer der Werte $k_1$ und $k_2$ nicht null ist. Führen wir nun die Funktion</p>\[y(x) = c_1y_1(x) + c_2y_2(x)\]<p>ein. Da die Gleichung ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) linear und homogen ist, ist diese Funktion nach dem <a href="/de/posts/homogeneous-linear-odes-of-second-order/#superpositionsprinzip">Superpositionsprinzip</a> eine Lösung von ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) auf dem Intervall $I$. Aus Gleichung ($\ref{eqn:linear_system}$) wissen wir, dass diese Lösung die Anfangsbedingungen $y(x_0)=0$, $y^{\prime}(x_0)=0$ erfüllt.</p><p>Andererseits existiert die triviale Lösung $y^* \equiv 0$, die die gleichen Anfangsbedingungen $y^*(x_0)=0$, ${y^*}^{\prime}(x_0)=0$ erfüllt. Da die Koeffizienten $p$ und $q$ der Gleichung ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) stetig sind, ist die Eindeutigkeit der Lösung durch den <a href="#existenz--und-eindeutigkeitssatz-für-anfangswertprobleme">Existenz- und Eindeutigkeitssatz für Anfangswertprobleme</a> gewährleistet, und daher ist $y \equiv y^*$. Das heißt, auf dem Intervall $I$ gilt</p>\[c_1y_1 + c_2y_2 \equiv 0\]<p>Da mindestens einer der Werte $c_1$ und $c_2$ nicht null ist, ist ($\ref{eqn:linearly_independent}$) nicht erfüllt, was bedeutet, dass $y_1$ und $y_2$ auf dem Intervall $I$ linear abhängig sind.</p><h4 id="ii">ii.</h4><p>Wenn an einem Punkt $x_0$ im Intervall $I$ $W(x_0)=0$ ist, dann sind $y_1$ und $y_2$ nach <a href="#i-b">i.(b)</a> auf dem Intervall $I$ linear abhängig, und dann ist nach <a href="#i-a">i.(a)</a> $W\equiv 0$. Daher, wenn es auch nur einen Punkt $x_1$ im Intervall $I$ gibt, an dem $W(x_1)\neq 0$ ist, sind $y_1$ und $y_2$ linear unabhängig. $\blacksquare$</p><h2 id="die-allgemeine-lösung-umfasst-alle-lösungen">Die allgemeine Lösung umfasst alle Lösungen</h2><h3 id="existenz-einer-allgemeinen-lösung">Existenz einer allgemeinen Lösung</h3><blockquote class="prompt-info"><p>Wenn $p(x)$ und $q(x)$ auf einem offenen Intervall $I$ stetig sind, dann besitzt die Gleichung ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) eine allgemeine Lösung auf dem Intervall $I$.</p></blockquote><h4 id="beweis-1">Beweis</h4><p>Nach dem <a href="#existenz--und-eindeutigkeitssatz-für-anfangswertprobleme">Existenz- und Eindeutigkeitssatz für Anfangswertprobleme</a> hat die gewöhnliche Differentialgleichung ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) eine Lösung $y_1(x)$, die die Anfangsbedingungen</p>\[y_1(x_0) = 1, \qquad y_1^{\prime}(x_0) = 0\]<p>auf dem Intervall $I$ erfüllt, und eine Lösung $y_2(x)$, die die Anfangsbedingungen</p>\[y_2(x_0) = 0, \qquad y_2^{\prime}(x_0) = 1\]<p>auf dem Intervall $I$ erfüllt. Die Wronski-Determinante dieser beiden Lösungen hat bei $x=x_0$ einen Wert ungleich null:</p>\[W(y_1(x_0), y_2(x_0)) = y_1(x_0)y_2^{\prime}(x_0) - y_2(x_0)y_1^{\prime}(x_0) = 1\cdot 1 - 0\cdot 0 = 1\]<p>Daher sind $y_1$ und $y_2$ nach dem Kriterium der <a href="#lineare-abhängigkeit-und-unabhängigkeit-von-lösungen">Bestimmung der linearen Abhängigkeit/Unabhängigkeit von Lösungen mittels der Wronski-Determinante</a> auf dem Intervall $I$ linear unabhängig. Folglich bilden diese beiden Lösungen eine Basis für die Lösungen der Gleichung ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) auf dem Intervall $I$, und es existiert notwendigerweise eine allgemeine Lösung $y = c_1y_1 + c_2y_2$ mit beliebigen Konstanten $c_1$, $c_2$ auf dem Intervall $I$. $\blacksquare$</p><h3 id="nichtexistenz-singulärer-lösungen">Nichtexistenz singulärer Lösungen</h3><blockquote class="prompt-info"><p>Wenn die gewöhnliche Differentialgleichung ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) auf einem offenen Intervall $I$ stetige Koeffizienten $p(x)$ und $q(x)$ hat, dann hat jede Lösung $y=Y(x)$ der Gleichung ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) auf dem Intervall $I$ die Form</p>\[Y(x) = C_1y_1(x) + C_2y_2(x) \label{eqn:particular_solution}\tag{13}\]<p>wobei $y_1$, $y_2$ eine Basis von Lösungen der Gleichung ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) auf dem Intervall $I$ ist und $C_1$, $C_2$ geeignete Konstanten sind.<br /> Das heißt, die Gleichung ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) hat keine <strong>singuläre Lösung</strong>, die nicht aus der allgemeinen Lösung abgeleitet werden kann.</p></blockquote><h4 id="beweis-2">Beweis</h4><p>Sei $y=Y(x)$ eine beliebige Lösung der Gleichung ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) auf dem Intervall $I$. Nach dem <a href="#existenz-einer-allgemeinen-lösung">Satz über die Existenz einer allgemeinen Lösung</a> hat die gewöhnliche Differentialgleichung ($\ref{eqn:homogeneous_linear_ode_with_var_coefficients}$) eine allgemeine Lösung auf dem Intervall $I$:</p>\[y(x) = c_1y_1(x) + c_2y_2(x) \label{eqn:general_solution}\tag{14}\]<p>Wir müssen nun zeigen, dass für jedes beliebige $Y(x)$ Konstanten $c_1$, $c_2$ existieren, sodass $y(x)=Y(x)$ auf dem Intervall $I$ gilt. Zeigen wir zunächst, dass wir Werte für $c_1$, $c_2$ finden können, sodass für ein beliebiges $x_0$ im Intervall $I$ gilt: $y(x_0)=Y(x_0)$ und $y^{\prime}(x_0)=Y^{\prime}(x_0)$. Aus Gleichung ($\ref{eqn:general_solution}$) erhalten wir</p>\[\begin{gather*} \left[\begin{matrix} y_1(x_0) &amp; y_2(x_0) \\ y_1^{\prime}(x_0) &amp; y_2^{\prime}(x_0) \end{matrix}\right] \left[\begin{matrix} c_1 \\ c_2 \end{matrix}\right] = \left[\begin{matrix} Y(x_0) \\ Y^{\prime}(x_0) \end{matrix}\right] \end{gather*} \label{eqn:vector_equation_2}\tag{15}\]<p>Da $y_1$ und $y_2$ eine Basis bilden, ist die Determinante der Koeffizientenmatrix, $W(y_1(x_0), y_2(x_0))$, ungleich null. Daher kann die Gleichung ($\ref{eqn:vector_equation_2}$) nach $c_1$ und $c_2$ aufgelöst werden. Nennen wir die Lösung $(c_1, c_2) = (C_1, C_2)$. Wenn wir dies in Gleichung ($\ref{eqn:general_solution}$) einsetzen, erhalten wir die folgende partikuläre Lösung:</p>\[y^*(x) = C_1y_1(x) + C_2y_2(x).\]<p>Da $C_1$, $C_2$ die Lösung von Gleichung ($\ref{eqn:vector_equation_2}$) sind, gilt</p>\[y^*(x_0) = Y(x_0), \qquad {y^*}^{\prime}(x_0) = Y^{\prime}(x_0)\]<p>Aufgrund der Eindeutigkeit aus dem <a href="#existenz--und-eindeutigkeitssatz-für-anfangswertprobleme">Existenz- und Eindeutigkeitssatz für Anfangswertprobleme</a> gilt $y^* \equiv Y$ für alle $x$ im Intervall $I$. $\blacksquare$</p>]]> </content> </entry> <entry><title xml:lang="de">Die Euler-Cauchy-Gleichung</title><link href="https://www.yunseo.kim/de/posts/euler-cauchy-equation/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/euler-cauchy-equation/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/euler-cauchy-equation/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/euler-cauchy-equation/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/euler-cauchy-equation/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/euler-cauchy-equation/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/euler-cauchy-equation/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/euler-cauchy-equation/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/euler-cauchy-equation/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/euler-cauchy-equation/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/euler-cauchy-equation/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/euler-cauchy-equation/" rel="alternate" type="text/html" hreflang="am" /><published>2025-03-28T00:00:00+09:00</published> <updated>2025-07-09T19:24:14+09:00</updated> <id>https://www.yunseo.kim/de/posts/euler-cauchy-equation/</id> <author> <name>Yunseo Kim</name> </author> <category term="Mathematics" /> <category term="Differential Equation" /> <summary xml:lang="de">Untersuchung der allgemeinen Lösung der Euler-Cauchy-Gleichung basierend auf dem Vorzeichen der Diskriminante der charakteristischen Gleichung. Die drei Fälle werden behandelt.</summary> <content type="html" xml:lang="de"> <![CDATA[<p>Untersuchung der allgemeinen Lösung der Euler-Cauchy-Gleichung basierend auf dem Vorzeichen der Diskriminante der charakteristischen Gleichung. Die drei Fälle werden behandelt.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="tldr">TL;DR</h2><blockquote class="prompt-info"><ul><li>Euler-Cauchy-Gleichung: $x^2y^{\prime\prime} + axy^{\prime} + by = 0$<li><strong>Charakteristische Gleichung</strong>: $m^2 + (a-1)m + b = 0$<li>Je nach Vorzeichen der Diskriminante der charakteristischen Gleichung, $(1-a)^2 - 4b$, kann die Form der allgemeinen Lösung wie in der Tabelle in drei Fälle unterteilt werden:</ul><table><thead><tr><th style="text-align: center">Fall<th style="text-align: center">Lösungen der charakteristischen Gleichung<th style="text-align: center">Basis der Lösungen der Euler-Cauchy-Gleichung<th style="text-align: center">Allgemeine Lösung der Euler-Cauchy-Gleichung<tbody><tr><td style="text-align: center">I<td style="text-align: center">Zwei verschiedene reelle Wurzeln<br />$m_1$, $m_2$<td style="text-align: center">$x^{m_1}$, $x^{m_2}$<td style="text-align: center">$y = c_1 x^{m_1} + c_2 x^{m_2}$<tr><td style="text-align: center">II<td style="text-align: center">Reelle doppelte Wurzel<br /> $m = \cfrac{1-a}{2}$<td style="text-align: center">$x^{(1-a)/2}$, $x^{(1-a)/2}\ln{x}$<td style="text-align: center">$y = (c_1 + c_2 \ln x)x^m$<tr><td style="text-align: center">III<td style="text-align: center">Konjugiert komplexe Wurzeln<br /> $m_1 = \cfrac{1}{2}(1-a) + i\omega$, <br /> $m_2 = \cfrac{1}{2}(1-a) - i\omega$<td style="text-align: center">$x^{(1-a)/2}\cos{(\omega \ln{x})}$, <br /> $x^{(1-a)/2}\sin{(\omega \ln{x})}$<td style="text-align: center">$y = x^{(1-a)/2}[A\cos{(\omega \ln{x})} + B\sin{(\omega \ln{x})}]$</table></blockquote><h2 id="voraussetzungen">Voraussetzungen</h2><ul><li><a href="/de/posts/homogeneous-linear-odes-of-second-order/">Homogene lineare DGL zweiter Ordnung</a><li><a href="/de/posts/homogeneous-linear-odes-with-constant-coefficients/">Homogene lineare DGL zweiter Ordnung mit konstanten Koeffizienten</a><li>Eulersche Formel</ul><h2 id="die-charakteristische-gleichung">Die charakteristische Gleichung</h2><p>Die <strong>Euler-Cauchy-Gleichung</strong> ist eine gewöhnliche Differentialgleichung der Form</p>\[x^2y^{\prime\prime} + axy^{\prime} + by = 0 \label{eqn:euler_cauchy_eqn}\tag{1}\]<p>mit gegebenen Konstanten $a$ und $b$ und einer unbekannten Funktion $y(x)$. Setzt man</p>\[y=x^m, \qquad y^{\prime}=mx^{m-1}, \qquad y^{\prime\prime}=m(m-1)x^{m-2}\]<p>in die Gleichung ($\ref{eqn:euler_cauchy_eqn}$) ein, erhält man</p>\[x^2m(m-1)x^{m-2} + axmx^{m-1} + bx^m = 0,\]<p>also</p>\[[m(m-1) + am + b]x^m = 0\]<p>Daraus ergibt sich die charakteristische Gleichung</p>\[m^2 + (a-1)m + b = 0 \label{eqn:auxiliary_eqn}\tag{2}\]<p>und die notwendige und hinreichende Bedingung dafür, dass $y=x^m$ eine Lösung der Euler-Cauchy-Gleichung ($\ref{eqn:euler_cauchy_eqn}$) ist, ist, dass $m$ eine Lösung der charakteristischen Gleichung ($\ref{eqn:auxiliary_eqn}$) ist.</p><p>Die Lösungen der quadratischen Gleichung ($\ref{eqn:auxiliary_eqn}$) sind</p>\[\begin{align*} m_1 &amp;= \frac{1}{2}\left[(1-a) + \sqrt{(1-a)^2 - 4b} \right], \\ m_2 &amp;= \frac{1}{2}\left[(1-a) - \sqrt{(1-a)^2 - 4b} \right] \end{align*}\label{eqn:m1_and_m2}\tag{3}\]<p>und daraus folgt, dass die beiden Funktionen</p>\[y_1 = x^{m_1}, \quad y_2 = x^{m_2}\]<p>Lösungen der Gleichung ($\ref{eqn:euler_cauchy_eqn}$) sind.</p><p>Analog zum Fall der <a href="/de/posts/homogeneous-linear-odes-with-constant-coefficients/">homogene lineare DGL zweiter Ordnung mit konstanten Koeffizienten</a> können wir je nach Vorzeichen der Diskriminante $(1-a)^2 - 4b$ der charakteristischen Gleichung ($\ref{eqn:auxiliary_eqn}$) drei Fälle unterscheiden.</p><ul><li>$(1-a)^2 - 4b &gt; 0$: Zwei verschiedene reelle Wurzeln<li>$(1-a)^2 - 4b = 0$: Reelle doppelte Wurzel<li>$(1-a)^2 - 4b &lt; 0$: Konjugiert komplexe Wurzeln</ul><h2 id="form-der-allgemeinen-lösung-je-nach-vorzeichen-der-diskriminante">Form der allgemeinen Lösung je nach Vorzeichen der Diskriminante</h2><h3 id="i-zwei-verschiedene-reelle-wurzeln-m_1-und-m_2">I. Zwei verschiedene reelle Wurzeln $m_1$ und $m_2$</h3><p>In diesem Fall ist die Basis der Lösungen der Gleichung ($\ref{eqn:euler_cauchy_eqn}$) auf einem beliebigen Intervall</p>\[y_1 = x^{m_1}, \quad y_2 = x^{m_2}\]<p>und die entsprechende allgemeine Lösung ist</p>\[y = c_1 x^{m_1} + c_2 x^{m_2} \label{eqn:general_sol_1}\tag{4}\]<h3 id="ii-reelle-doppelte-wurzel-m--cfrac1-a2">II. Reelle doppelte Wurzel $m = \cfrac{1-a}{2}$</h3><p>Im Fall, dass $(1-a)^2 - 4b = 0$, also $b=\cfrac{(1-a)^2}{4}$, hat die quadratische Gleichung ($\ref{eqn:auxiliary_eqn}$) nur eine einzige Lösung $m = m_1 = m_2 = \cfrac{1-a}{2}$, und somit ist eine Lösung der Form $y = x^m$, die wir daraus erhalten,</p>\[y_1 = x^{(1-a)/2}\]<p>und die Euler-Cauchy-Gleichung ($\ref{eqn:euler_cauchy_eqn}$) nimmt die Form</p>\[y^{\prime\prime} + \frac{a}{x}y^{\prime} + \frac{(1-a)^2}{4x^2}y = 0 \label{eqn:standard_form}\tag{5}\]<p>an. Nun finden wir eine weitere, linear unabhängige Lösung $y_2$ mit dem <a href="/de/posts/homogeneous-linear-odes-of-second-order/#reduktionsverfahren-reduction-of-order">Reduktionsverfahren</a>.</p><p>Wenn wir die gesuchte zweite Lösung als $y_2=uy_1$ ansetzen, erhalten wir</p>\[u = \int U, \qquad U = \frac{1}{y_1^2}\exp\left(-\int \frac{a}{x}\ dx \right)\]<p>Da $\exp \left(-\int \cfrac{a}{x}\ dx \right) = \exp (-a\ln x) = \exp(\ln{x^{-a}}) = x^{-a}$ ist,</p>\[U = \frac{x^{-a}}{y_1^2} = \frac{x^{-a}}{x^{(1-a)}} = \frac{1}{x}\]<p>und durch Integration erhält man $u = \ln x$.</p><p>Daher ist $y_2 = uy_1 = y_1 \ln x$, und da ihr Quotient keine Konstante ist, sind $y_1$ und $y_2$ linear unabhängig. Die der Basis $y_1$ und $y_2$ entsprechende allgemeine Lösung ist</p>\[y = (c_1 + c_2 \ln x)x^m \label{eqn:general_sol_2}\tag{6}\]<h3 id="iii-konjugiert-komplexe-wurzeln">III. Konjugiert komplexe Wurzeln</h3><p>In diesem Fall sind die Lösungen der charakteristischen Gleichung ($\ref{eqn:auxiliary_eqn}$) $m = \cfrac{1}{2}(1-a) \pm i\sqrt{b - \frac{1}{4}(1-a)^2}$, und die entsprechenden beiden komplexen Lösungen der Gleichung ($\ref{eqn:euler_cauchy_eqn}$) können unter Verwendung von $x=e^{\ln x}$ wie folgt geschrieben werden.</p>\[\begin{align*} x^{m_1} &amp;= x^{(1-a)/2 + i\sqrt{b - \frac{1}{4}(1-a)^2}} \\ &amp;= x^{(1-a)/2}(e^{\ln x})^{i\sqrt{b - \frac{1}{4}(1-a)^2}} \\ &amp;= x^{(1-a)/2}e^{i(\sqrt{b - \frac{1}{4}(1-a)^2}\ln x)}, \\ x^{m_2} &amp;= x^{(1-a)/2 - i\sqrt{b - \frac{1}{4}(1-a)^2}} \\ &amp;= x^{(1-a)/2}(e^{\ln x})^{-i\sqrt{b - \frac{1}{4}(1-a)^2}} \\ &amp;= x^{(1-a)/2}e^{i(-\sqrt{b - \frac{1}{4}(1-a)^2}\ln x)}. \end{align*} \tag{7}\]<p>Setzt man $t=\sqrt{b - \frac{1}{4}(1-a)^2}\ln x$ und verwendet die Eulersche Formel $e^{it} = \cos{t} + i\sin{t}$, so sieht man, dass</p>\[\begin{align*} x^{m_1} &amp;= x^{(1-a)/2}\left[\cos\left(\sqrt{b - \tfrac{1}{4}(1-a)^2}\ln x \right) + i\sin\left(\sqrt{b - \tfrac{1}{4}(1-a)^2}\ln x \right) \right], \\ x^{m_2} &amp;= x^{(1-a)/2}\left[\cos\left(\sqrt{b - \tfrac{1}{4}(1-a)^2}\ln x \right) - i\sin\left(\sqrt{b - \tfrac{1}{4}(1-a)^2}\ln x \right) \right] \end{align*} \tag{8}\]<p>und daraus erhält man die folgenden beiden reellen Lösungen</p>\[\begin{align*} \frac{x^{m_1} + x^{m_2}}{2} &amp;= x^{(1-a)/2}\cos\left(\sqrt{b - \tfrac{1}{4}(1-a)^2}\ln x \right), \\ \frac{x^{m_1} - x^{m_2}}{2i} &amp;= x^{(1-a)/2}\sin\left(\sqrt{b - \tfrac{1}{4}(1-a)^2}\ln x \right) \end{align*} \tag{9}\]<p>Da ihr Quotient $\cos\left(\sqrt{b - \frac{1}{4}(1-a)^2}\ln x \right)$ keine Konstante ist, sind die beiden obigen Lösungen linear unabhängig und bilden daher nach dem <a href="/de/posts/homogeneous-linear-odes-of-second-order/#superpositionsprinzip">Superpositionsprinzip</a> eine Basis für die Euler-Cauchy-Gleichung ($\ref{eqn:euler_cauchy_eqn}$). Daraus erhalten wir die folgende reelle allgemeine Lösung.</p>\[y = x^{(1-a)/2} \left[ A\cos\left(\sqrt{b - \tfrac{1}{4}(1-a)^2}\ln x \right) + B\sin\left(\sqrt{b - \tfrac{1}{4}(1-a)^2}\ln x \right) \right]. \label{eqn:general_sol_3}\tag{10}\]<p>Allerdings ist der Fall, dass die charakteristische Gleichung der Euler-Cauchy-Gleichung konjugiert komplexe Wurzeln hat, von geringerer praktischer Bedeutung.</p><h2 id="transformation-in-eine-homogene-lineare-gdgl-mit-konstanten-koeffizienten">Transformation in eine homogene lineare GDGL mit konstanten Koeffizienten</h2><p>Die Euler-Cauchy-Gleichung kann durch eine Variablensubstitution in eine <a href="/de/posts/homogeneous-linear-odes-with-constant-coefficients/">homogene lineare DGL zweiter Ordnung mit konstanten Koeffizienten</a> umgewandelt werden.</p><p>Durch die Substitution $x = e^t$ erhält man</p>\[\frac{d}{dx} = \frac{1}{x}\frac{d}{dt}, \quad \frac{d^2}{dx^2} = \frac{1}{x^2}\left(\frac{d^2}{dt^2} - \frac{d}{dt} \right)\]<p>wodurch die Euler-Cauchy-Gleichung ($\ref{eqn:euler_cauchy_eqn}$) in die folgende homogene lineare GDGL mit konstanten Koeffizienten bezüglich $t$ umgewandelt wird.</p>\[y^{\prime\prime}(t) + (a-1)y^{\prime}(t) + by(t) = 0. \label{eqn:substituted}\tag{11}\]<p>Löst man die Gleichung ($\ref{eqn:substituted}$) für $t$ mit der Methode für <a href="/de/posts/homogeneous-linear-odes-with-constant-coefficients/">homogene lineare DGL zweiter Ordnung mit konstanten Koeffizienten</a> und transformiert die so erhaltene Lösung unter Verwendung von $t = \ln{x}$ zurück in eine Lösung für $x$, erhält man <a href="#form-der-allgemeinen-lösung-je-nach-vorzeichen-der-diskriminante">die gleichen Ergebnisse wie zuvor</a>.</p>]]> </content> </entry> <entry><title xml:lang="de">Konvergenz/Divergenz-Tests für Reihen (Testing for Convergence or Divergence of a Series)</title><link href="https://www.yunseo.kim/de/posts/testing-for-convergence-or-divergence-of-a-series/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/testing-for-convergence-or-divergence-of-a-series/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/testing-for-convergence-or-divergence-of-a-series/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/testing-for-convergence-or-divergence-of-a-series/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/testing-for-convergence-or-divergence-of-a-series/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/testing-for-convergence-or-divergence-of-a-series/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/testing-for-convergence-or-divergence-of-a-series/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/testing-for-convergence-or-divergence-of-a-series/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/testing-for-convergence-or-divergence-of-a-series/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/testing-for-convergence-or-divergence-of-a-series/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/testing-for-convergence-or-divergence-of-a-series/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/testing-for-convergence-or-divergence-of-a-series/" rel="alternate" type="text/html" hreflang="am" /><published>2025-03-18T00:00:00+09:00</published> <updated>2025-05-13T16:24:07+09:00</updated> <id>https://www.yunseo.kim/de/posts/testing-for-convergence-or-divergence-of-a-series/</id> <author> <name>Yunseo Kim</name> </author> <category term="Mathematics" /> <category term="Calculus" /> <summary xml:lang="de">Eine umfassende Betrachtung verschiedener Methoden zur Bestimmung der Konvergenz oder Divergenz von Reihen.</summary> <content type="html" xml:lang="de"> <![CDATA[<p>Eine umfassende Betrachtung verschiedener Methoden zur Bestimmung der Konvergenz oder Divergenz von Reihen.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="tldr">TL;DR</h2><blockquote class="prompt-info"><ul><li><strong>n-ter Glied-Test für Divergenz</strong>: $\lim_{n\to\infty} a_n \neq 0 \Rightarrow \text{Die Reihe }\sum a_n \text{ divergiert}$<li><strong>Konvergenz/Divergenz geometrischer Reihen</strong>: Die geometrische Reihe $\sum ar^{n-1}$<ul><li>konvergiert, wenn $|r| &lt; 1$<li>divergiert, wenn $|r| \geq 1$</ul><li><strong>Konvergenz/Divergenz von $p$-Reihen</strong>: Die $p$-Reihe $\sum \cfrac{1}{n^p}$<ul><li>konvergiert, wenn $p&gt;1$<li>divergiert, wenn $p\leq 1$</ul><li><strong>Vergleichstest</strong>: Wenn $0 \leq a_n \leq b_n$, dann gilt:<ul><li>$\sum b_n &lt; \infty \ \Rightarrow \ \sum a_n &lt; \infty$<li>$\sum a_n = \infty \ \Rightarrow \ \sum b_n = \infty$</ul><li><strong>Grenzwert-Vergleichstest</strong>: Wenn $\lim_{n\to\infty} \frac{a_n}{b_n} = c \text{ (}c\text{ ist eine endliche positive Zahl)}$, dann konvergieren oder divergieren beide Reihen $\sum a_n$ und $\sum b_n$ gemeinsam<li>Für eine Reihe positiver Terme $\sum a_n$ und eine positive Zahl $\epsilon &lt; 1$ gilt:<ul><li>Wenn für alle $n$ gilt: $\sqrt[n]{a_n}&lt; 1-\epsilon$, dann konvergiert die Reihe $\sum a_n$<li>Wenn für alle $n$ gilt: $\sqrt[n]{a_n}&gt; 1+\epsilon$, dann divergiert die Reihe $\sum a_n$</ul><li><strong>Wurzelkriterium</strong>: Für eine Reihe positiver Terme $\sum a_n$, bei der der Grenzwert $\lim_{n\to\infty} \sqrt[n]{a_n} =: r$ existiert, gilt:<ul><li>Wenn $r&lt;1$, dann konvergiert die Reihe $\sum a_n$<li>Wenn $r&gt;1$, dann divergiert die Reihe $\sum a_n$</ul><li><strong>Quotientenkriterium</strong>: Für eine Folge positiver Zahlen $(a_n)$ und $0 &lt; r &lt; 1$ gilt:<ul><li>Wenn für alle $n$ gilt: $a_{n+1}/a_n \leq r$, dann konvergiert die Reihe $\sum a_n$<li>Wenn für alle $n$ gilt: $a_{n+1}/a_n \geq 1$, dann divergiert die Reihe $\sum a_n$</ul><li>Für eine Folge positiver Zahlen $(a_n)$, bei der der Grenzwert $\rho := \lim_{n\to\infty} \cfrac{a_{n+1}}{a_n}$ existiert, gilt:<ul><li>Wenn $\rho &lt; 1$, dann konvergiert die Reihe $\sum a_n$<li>Wenn $\rho &gt; 1$, dann divergiert die Reihe $\sum a_n$</ul><li><strong>Integraltest</strong>: Sei $f: \left[1,\infty \right) \rightarrow \mathbb{R}$ eine stetige, monoton fallende Funktion mit $f(x)&gt;0$ für alle $x$. Die Reihe $\sum f(n)$ konvergiert genau dann, wenn das Integral $\int_1^\infty f(x)\ dx := \lim_{b\to\infty} \int_1^b f(x)\ dx$ konvergiert<li><strong>Leibniz-Kriterium für alternierende Reihen</strong>: Eine alternierende Reihe $\sum a_n$ konvergiert, wenn:<ol><li>Die Vorzeichen von $a_n$ und $a_{n+1}$ für alle $n$ verschieden sind<li>Für alle $n$ gilt: $|a_n| \geq |a_{n+1}|$<li>$\lim_{n\to\infty} a_n = 0$</ol><li>Absolut konvergente Reihen konvergieren. Die Umkehrung gilt nicht.</ul></blockquote><h2 id="voraussetzungen">Voraussetzungen</h2><ul><li><a href="/de/posts/sequences-and-series/">Folgen und Reihen</a></ul><h2 id="einleitung">Einleitung</h2><p>In <a href="/de/posts/sequences-and-series/#konvergenz-und-divergenz-von-reihen">Folgen und Reihen</a> haben wir die Definition der Konvergenz und Divergenz von Reihen kennengelernt. In diesem Beitrag fassen wir verschiedene Methoden zusammen, mit denen die Konvergenz oder Divergenz von Reihen bestimmt werden kann. Im Allgemeinen ist es wesentlich einfacher, die Konvergenz oder Divergenz einer Reihe zu bestimmen, als ihre exakte Summe zu berechnen.</p><h2 id="n-ter-glied-test">n-ter Glied-Test</h2><p>Bei einer Reihe $\sum a_n$ bezeichnet man $a_n$ als das <strong>allgemeine Glied</strong> der Reihe.</p><p>Der folgende Satz ermöglicht es uns, die Divergenz bestimmter Reihen leicht zu erkennen. Daher ist es sinnvoll, diesen Test als Erstes anzuwenden, um Zeit zu sparen.</p><blockquote class="prompt-info"><p><strong>n-ter Glied-Test für Divergenz</strong><br /> Wenn eine Reihe $\sum a_n$ konvergiert, dann gilt:</p>\[\lim_{n\to\infty} a_n=0\]<p>Das bedeutet:</p>\[\lim_{n\to\infty} a_n \neq 0 \Rightarrow \text{Die Reihe }\sum a_n \text{ divergiert}\]</blockquote><h3 id="beweis">Beweis</h3><p>Sei $l$ die Summe einer konvergenten Reihe $\sum a_n$ und sei</p>\[s_n := a_1 + a_2 + \cdots + a_n\]<p>die Summe der ersten $n$ Glieder. Dann gilt:</p>\[\forall \epsilon &gt; 0,\, \exists N \in \mathbb{N}\ (n &gt; N \Rightarrow |s_n - l| &lt; \epsilon).\]<p>Für hinreichend große $n &gt; N$ gilt daher:</p>\[|a_n| = |s_n - s_{n-1}| = |(s_n - l) - (s_{n-1} - l)| \leq |s_n - l| + |s_{n-1} - l| \leq \epsilon + \epsilon = 2\epsilon\]<p>Aus der Definition der Konvergenz einer Folge folgt:</p>\[\lim_{n\to\infty} |a_n| = 0. \quad \blacksquare\]<h3 id="wichtiger-hinweis">Wichtiger Hinweis</h3><p>Die Umkehrung dieses Satzes gilt im Allgemeinen nicht. Ein klassisches Beispiel dafür ist die <strong>harmonische Reihe</strong>.</p><p>Die harmonische Reihe ist eine Reihe, deren Glieder die Kehrwerte einer <strong>arithmetischen Folge</strong> sind, also eine <strong>harmonische Folge</strong>. Die bekannteste harmonische Reihe ist:</p>\[H_n := 1 + \frac{1}{2} + \cdots + \frac{1}{n} \quad (n=1,2,3,\dots)\]<p>Diese Reihe divergiert, wie man folgendermaßen zeigen kann:</p>\[\begin{align*} \lim_{n\to\infty} H_n &amp;= 1 + \frac{1}{2} + \frac{1}{3} + \frac{1}{4} + \frac{1}{5} + \frac{1}{6} + \frac{1}{7} + \frac{1}{8} + \frac{1}{9} + \cdots + \frac{1}{16} + \cdots \\ &amp;&gt; 1 + \frac{1}{2} + \frac{1}{4} + \frac{1}{4} + \frac{1}{8} + \frac{1}{8} + \frac{1}{8} + \frac{1}{8} + \frac{1}{16} + \cdots + \frac{1}{16} + \cdots \\ &amp;= 1 + \frac{1}{2} \qquad\, + \frac{1}{2} \qquad\qquad\qquad\ \ + \frac{1}{2} \qquad\qquad\quad + \frac{1}{2} + \cdots \\ &amp;= \infty. \end{align*}\]<p>Obwohl die Reihe $H_n$ divergiert, konvergiert das allgemeine Glied $1/n$ gegen $0$.</p><blockquote class="prompt-danger"><p>Wenn $\lim_{n\to\infty} a_n \neq 0$, dann divergiert die Reihe $\sum a_n$ definitiv. Aber wenn $\lim_{n\to\infty} a_n = 0$, bedeutet das nicht automatisch, dass die Reihe $\sum a_n$ konvergiert. In diesem Fall müssen andere Methoden zur Bestimmung der Konvergenz oder Divergenz angewendet werden.</p></blockquote><h2 id="geometrische-reihen">Geometrische Reihen</h2><p>Die <strong>geometrische Reihe</strong> mit erstem Glied 1 und <strong>Quotient</strong> $r$</p>\[1 + r + r^2 + r^3 + \cdots \label{eqn:geometric_series}\tag{5}\]<p>ist eine der <u>wichtigsten und grundlegendsten Reihen</u>. Aus der Gleichung</p>\[(1-r)(1+r+\cdots + r^{n-1}) = 1 - r^n\]<p>erhalten wir</p>\[1 + r + \cdots + r^{n-1} = \frac{1-r^n}{1-r} = \frac{1}{1-r} - \frac{r^n}{1-r} \qquad (r \neq 1) \label{eqn:sum_of_geometric_series}\tag{6}\]<p>Da</p>\[\lim_{n\to\infty} r^n = 0 \quad \Leftrightarrow \quad |r| &lt; 1\]<p>wissen wir, dass die geometrische Reihe ($\ref{eqn:geometric_series}$) genau dann konvergiert, wenn $|r| &lt; 1$ ist.</p><blockquote class="prompt-info"><p><strong>Konvergenz/Divergenz geometrischer Reihen</strong><br /> Die geometrische Reihe $\sum ar^{n-1}$</p><ul><li>konvergiert, wenn $|r| &lt; 1$<li>divergiert, wenn $|r| \geq 1$</ul></blockquote><p>Daraus folgt:</p>\[1 + r + r^2 + r^3 + \cdots = \frac{1}{1-r} \qquad (|r| &lt; 1) \label{eqn:sum_of_inf_geometric_series}\tag{7}\]<h3 id="geometrische-reihen-und-näherungswerte">Geometrische Reihen und Näherungswerte</h3><p>Die Identität ($\ref{eqn:sum_of_geometric_series}$) ist nützlich, um Näherungswerte für $\cfrac{1}{1-r}$ zu finden, wenn $|r| &lt; 1$.</p><p>Wenn wir $r=-\epsilon$ und $n=2$ einsetzen, erhalten wir:</p>\[\frac{1}{1+\epsilon} - (1 - \epsilon) = \frac{\epsilon^2}{1 + \epsilon}\]<p>Für $0 &lt; \epsilon &lt; 1$ gilt daher:</p>\[0 &lt; \frac{1}{1 + \epsilon} - (1 - \epsilon) &lt; \epsilon^2\]<p>Somit:</p>\[\frac{1}{1 + \epsilon} \approx (1 - \epsilon) \pm \epsilon^2 \qquad (0 &lt; \epsilon &lt; 1)\]<p>Daraus folgt, dass für hinreichend kleine positive $\epsilon$ der Wert $\cfrac{1}{1 + \epsilon}$ durch $1 - \epsilon$ angenähert werden kann.</p><h2 id="p-reihen-test">p-Reihen-Test</h2><p>Für eine positive reelle Zahl $p$ bezeichnet man eine Reihe der folgenden Form als <strong>$p$-Reihe</strong>:</p>\[\sum_{n=1}^{\infty} \frac{1}{n^p}\]<blockquote class="prompt-info"><p><strong>Konvergenz/Divergenz von $p$-Reihen</strong><br /> Die $p$-Reihe $\sum \cfrac{1}{n^p}$</p><ul><li>konvergiert, wenn $p&gt;1$<li>divergiert, wenn $p\leq 1$</ul></blockquote><p>Für $p=1$ erhalten wir die harmonische Reihe, die, wie bereits gezeigt, divergiert.<br /> Die Berechnung des Wertes der $p$-Reihe für $p=2$, also $\sum \cfrac{1}{n^2}$, ist als “Baseler Problem” bekannt, benannt nach dem Heimatort der Bernoulli-Familie, die mehrere berühmte Mathematiker über Generationen hinweg hervorbrachte. Die Lösung dieses Problems ist bekannt als $\cfrac{\pi^2}{6}$.</p><p>Allgemeiner werden $p$-Reihen mit $p&gt;1$ als <strong>Zeta-Funktion</strong> bezeichnet. Diese wurde von Leonhard Euler im Jahr 11740 <a href="https://en.wikipedia.org/wiki/Holocene_calendar">HE</a> eingeführt und später von Riemann benannt. Sie ist definiert als:</p>\[\zeta(s) := \sum_{n=1}^{\infty} \frac{1}{n^s} \qquad (s&gt;1)\]<p>Dies geht über das Thema dieses Beitrags hinaus, und da ich Ingenieur und kein Mathematiker bin, werde ich nicht näher darauf eingehen. Leonhard Euler zeigte jedoch, dass die Zeta-Funktion auch als unendliches Produkt über Primzahlen, bekannt als <strong>Euler-Produkt</strong>, dargestellt werden kann. Die Zeta-Funktion spielt eine zentrale Rolle in verschiedenen Bereichen der analytischen Zahlentheorie. Die auf komplexe Zahlen erweiterte <strong>Riemann-Zeta-Funktion</strong> und die damit verbundene ungelöste <strong>Riemann-Hypothese</strong> sind bedeutende Themen in diesem Bereich.</p><p>Zurück zum Thema: Der Beweis des $p$-Reihen-Tests erfordert den <a href="#vergleichstest">Vergleichstest</a> und den <a href="#integraltest">Integraltest</a>, die später behandelt werden. Da die Konvergenz/Divergenz von $p$-Reihen jedoch zusammen mit geometrischen Reihen im <a href="#vergleichstest">Vergleichstest</a> nützlich sein kann, habe ich diesen Abschnitt bewusst vorangestellt.</p><h3 id="beweis-1">Beweis</h3><h4 id="i-für-p1">i) Für $p&gt;1$</h4><p>Das Integral</p>\[\int_1^\infty \frac{1}{x^p}\ dx = \left[\frac{1}{-p+1}\frac{1}{x^{p-1}} \right]^\infty_1 = \frac{1}{p-1}\]<p>konvergiert. Nach dem <a href="#integraltest">Integraltest</a> konvergiert daher auch die Reihe $\sum \cfrac{1}{n^p}$.</p><h4 id="ii-für-pleq-1">ii) Für $p\leq 1$</h4><p>In diesem Fall gilt:</p>\[0 \leq \frac{1}{n} \leq \frac{1}{n^p}\]<p>Da die harmonische Reihe $\sum \cfrac{1}{n}$ divergiert, divergiert nach dem <a href="#vergleichstest">Vergleichstest</a> auch $\sum \cfrac{1}{n^p}$.</p><h4 id="fazit">Fazit</h4><p>Aus i) und ii) folgt, dass die $p$-Reihe $\sum \cfrac{1}{n^p}$ konvergiert, wenn $p&gt;1$, und divergiert, wenn $p \leq 1$. $\blacksquare$</p><h2 id="vergleichstest">Vergleichstest</h2><p>Der <strong>Vergleichstest</strong> von Jakob Bernoulli ist nützlich zur Bestimmung der Konvergenz oder Divergenz von <strong>Reihen mit positiven Gliedern</strong>.</p><p>Eine Reihe mit positiven Gliedern $\sum a_n$ bildet eine monoton wachsende Folge. Wenn sie nicht gegen unendlich divergiert ($\sum a_n = \infty$), muss sie konvergieren. Daher bedeutet der Ausdruck</p>\[\sum a_n &lt; \infty\]<p>für Reihen mit positiven Gliedern, dass die Reihe <u>konvergiert</u>.</p><blockquote class="prompt-info"><p><strong>Vergleichstest</strong><br /> Wenn $0 \leq a_n \leq b_n$, dann gilt:</p><ul><li>$\sum b_n &lt; \infty \ \Rightarrow \ \sum a_n &lt; \infty$<li>$\sum a_n = \infty \ \Rightarrow \ \sum b_n = \infty$</ul></blockquote><p>Besonders bei Reihen mit positiven Gliedern, die ähnliche Formen wie geometrische Reihen $\sum ar^{n-1}$ oder $p$-Reihen $\sum \cfrac{1}{n^p}$ haben, wie z.B. $\sum \cfrac{1}{n^2 + n}$, $\sum \cfrac{\log n}{n^3}$, $\sum \cfrac{1}{2^n + 3^n}$, $\sum \cfrac{1}{\sqrt{n}}$ oder $\sum \sin{\cfrac{1}{n}}$, ist es ratsam, den Vergleichstest anzuwenden.</p><p>Viele der später behandelten Konvergenz- und Divergenztests können aus diesem <strong>Vergleichstest</strong> abgeleitet werden, was seine grundlegende Bedeutung unterstreicht.</p><h3 id="grenzwert-vergleichstest">Grenzwert-Vergleichstest</h3><p>Für zwei Reihen mit positiven Gliedern $\sum a_n$ und $\sum b_n$, bei denen das Verhältnis der allgemeinen Glieder $a_n/b_n$ gegen einen endlichen positiven Wert $c$ konvergiert, kann der <strong>Grenzwert-Vergleichstest</strong> angewendet werden, wenn die Konvergenz oder Divergenz von $\sum b_n$ bekannt ist.</p><blockquote class="prompt-info"><p><strong>Grenzwert-Vergleichstest</strong><br /> Wenn</p>\[\lim_{n\to\infty} \frac{a_n}{b_n} = c \text{ (}c\text{ ist eine endliche positive Zahl)}\]<p>dann konvergieren oder divergieren beide Reihen $\sum a_n$ und $\sum b_n$ gemeinsam. Das heißt, $ \sum a_n &lt; \infty \ \Leftrightarrow \ \sum b_n &lt; \infty$.</p></blockquote><h2 id="wurzelkriterium">Wurzelkriterium</h2><blockquote class="prompt-info"><p><strong>Satz</strong><br /> Für eine Reihe positiver Terme $\sum a_n$ und eine positive Zahl $\epsilon &lt; 1$ gilt:</p><ul><li>Wenn für alle $n$ gilt: $\sqrt[n]{a_n}&lt; 1-\epsilon$, dann konvergiert die Reihe $\sum a_n$<li>Wenn für alle $n$ gilt: $\sqrt[n]{a_n}&gt; 1+\epsilon$, dann divergiert die Reihe $\sum a_n$</ul></blockquote><blockquote class="prompt-info"><p><strong>Folgerung: Wurzelkriterium</strong><br /> Für eine Reihe positiver Terme $\sum a_n$, bei der der Grenzwert</p>\[\lim_{n\to\infty} \sqrt[n]{a_n} =: r\]<p>existiert, gilt:</p><ul><li>Wenn $r&lt;1$, dann konvergiert die Reihe $\sum a_n$<li>Wenn $r&gt;1$, dann divergiert die Reihe $\sum a_n$</ul></blockquote><blockquote class="prompt-warning"><p>Im Fall $r=1$ kann das Wurzelkriterium keine Aussage über Konvergenz oder Divergenz treffen, und andere Methoden müssen angewendet werden.</p></blockquote><h2 id="quotientenkriterium">Quotientenkriterium</h2><blockquote class="prompt-info"><p><strong>Quotientenkriterium</strong><br /> Für eine Folge positiver Zahlen $(a_n)$ und $0 &lt; r &lt; 1$ gilt:</p><ul><li>Wenn für alle $n$ gilt: $a_{n+1}/a_n \leq r$, dann konvergiert die Reihe $\sum a_n$<li>Wenn für alle $n$ gilt: $a_{n+1}/a_n \geq 1$, dann divergiert die Reihe $\sum a_n$</ul></blockquote><blockquote class="prompt-info"><p><strong>Folgerung</strong><br /> Für eine Folge positiver Zahlen $(a_n)$, bei der der Grenzwert $\rho := \lim_{n\to\infty} \cfrac{a_{n+1}}{a_n}$ existiert, gilt:</p><ul><li>Wenn $\rho &lt; 1$, dann konvergiert die Reihe $\sum a_n$<li>Wenn $\rho &gt; 1$, dann divergiert die Reihe $\sum a_n$</ul></blockquote><h2 id="integraltest">Integraltest</h2><p>Mit Hilfe der Integralrechnung kann die Konvergenz oder Divergenz von Reihen mit monoton fallenden positiven Gliedern bestimmt werden.</p><blockquote class="prompt-info"><p><strong>Integraltest</strong><br /> Sei $f: \left[1,\infty \right) \rightarrow \mathbb{R}$ eine stetige, monoton fallende Funktion mit $f(x)&gt;0$ für alle $x$. Die Reihe $\sum f(n)$ konvergiert genau dann, wenn das Integral</p>\[\int_1^\infty f(x)\ dx := \lim_{b\to\infty} \int_1^b f(x)\ dx\]<p>konvergiert.</p></blockquote><h3 id="beweis-2">Beweis</h3><p>Da die Funktion $f(x)$ stetig, monoton fallend und stets positiv ist, gilt die Ungleichung:</p>\[f(n+1) \leq \int_n^{n+1} f(x)\ dx \leq f(n)\]<p>Durch Summation dieser Ungleichung von $n=1$ bis zum allgemeinen Glied erhalten wir:</p>\[f(2) + \cdots + f(n+1) \leq \int_1^{n+1} f(x)\ dx \leq f(1) + \cdots + f(n)\]<p>Mit dem <a href="#vergleichstest">Vergleichstest</a> erhalten wir das gewünschte Ergebnis. $\blacksquare$</p><h2 id="alternierende-reihen">Alternierende Reihen</h2><p>Eine Reihe $\sum a_n$, bei der die Vorzeichen der aufeinanderfolgenden Glieder $a_n$ und $a_{n+1}$ verschieden sind, also positive und negative Glieder abwechselnd auftreten, nennt man <strong>alternierende Reihe</strong>.</p><p>Für alternierende Reihen kann der folgende Satz, der vom deutschen Mathematiker Gottfried Wilhelm Leibniz entdeckt wurde, zur Bestimmung der Konvergenz nützlich sein.</p><blockquote class="prompt-info"><p><strong>Leibniz-Kriterium für alternierende Reihen</strong><br /> Eine alternierende Reihe $\sum a_n$ konvergiert, wenn:</p><ol><li>Die Vorzeichen von $a_n$ und $a_{n+1}$ für alle $n$ verschieden sind,<li>Für alle $n$ gilt: $|a_n| \geq |a_{n+1}|$, und<li>$\lim_{n\to\infty} a_n = 0$.</ol></blockquote><h2 id="absolute-konvergenz">Absolute Konvergenz</h2><p>Eine Reihe $\sum a_n$ <strong>konvergiert absolut</strong>, wenn die Reihe $\sum |a_n|$ konvergiert.</p><p>Es gilt der folgende Satz:</p><blockquote class="prompt-info"><p><strong>Satz</strong><br /> Jede absolut konvergente Reihe konvergiert.</p></blockquote><blockquote class="prompt-warning"><p>Die Umkehrung dieses Satzes gilt nicht.<br /> Eine Reihe, die konvergiert, aber nicht absolut konvergiert, nennt man <strong>bedingt konvergent</strong>.</p></blockquote><h3 id="beweis-3">Beweis</h3><p>Für eine reelle Zahl $a$ definieren wir:</p>\[\begin{align*} a^+ &amp;:= \max\{a,0\} = \frac{1}{2}(|a| + a), \\ a^- &amp;:= -\min\{a,0\} = \frac{1}{2}(|a| - a) \end{align*}\]<p>Dann gilt:</p>\[a = a^+ - a^-, \qquad |a| = a^+ + a^-\]<p>Da $0 \leq a^\pm \leq |a|$, folgt aus dem <a href="#vergleichstest">Vergleichstest</a>, dass wenn die Reihe $\sum |a_n|$ konvergiert, auch die Reihen $\sum a_n^+$ und $\sum a_n^-$ konvergieren. Nach den <a href="/de/posts/sequences-and-series/#grundlegende-eigenschaften-konvergenter-reihen">grundlegenden Eigenschaften konvergenter Reihen</a> konvergiert dann auch:</p>\[\sum a_n = \sum (a_n^+ - a_n^-) = \sum a_n^+ - \sum a_n^-\]<p>$\blacksquare$</p>]]> </content> </entry> <entry><title xml:lang="de">Folgen und Reihen</title><link href="https://www.yunseo.kim/de/posts/sequences-and-series/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/sequences-and-series/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/sequences-and-series/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/sequences-and-series/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/sequences-and-series/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/sequences-and-series/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/sequences-and-series/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/sequences-and-series/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/sequences-and-series/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/sequences-and-series/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/sequences-and-series/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/sequences-and-series/" rel="alternate" type="text/html" hreflang="am" /><published>2025-03-16T00:00:00+09:00</published> <updated>2025-05-13T16:24:07+09:00</updated> <id>https://www.yunseo.kim/de/posts/sequences-and-series/</id> <author> <name>Yunseo Kim</name> </author> <category term="Mathematics" /> <category term="Calculus" /> <summary xml:lang="de">Wir betrachten grundlegende Konzepte der Infinitesimalrechnung wie die Definition von Folgen und Reihen, Konvergenz und Divergenz von Folgen, Konvergenz und Divergenz von Reihen sowie die Definition der Eulerschen Zahl e als Basis des natürlichen Logarithmus.</summary> <content type="html" xml:lang="de"> <![CDATA[<p>Wir betrachten grundlegende Konzepte der Infinitesimalrechnung wie die Definition von Folgen und Reihen, Konvergenz und Divergenz von Folgen, Konvergenz und Divergenz von Reihen sowie die Definition der Eulerschen Zahl e als Basis des natürlichen Logarithmus.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="folgen">Folgen</h2><p>In der Infinitesimalrechnung bezieht sich der Begriff <strong>Folge (sequence)</strong> hauptsächlich auf unendliche Folgen. Eine Folge ist also eine Funktion, die auf der Menge der <strong>natürlichen Zahlen (natural numbers)</strong> definiert ist:</p>\[\mathbb{N} := \{1,2,3,\dots\}\]<ul><li>Wenn die Werte dieser Funktion reelle Zahlen sind, spricht man von einer ‘reellen Folge’, bei komplexen Zahlen von einer ‘komplexen Folge’, bei Punkten von einer ‘Punktfolge’, bei Matrizen von einer ‘Matrizenfolge’, bei Funktionen von einer ‘Funktionenfolge’ und bei Mengen von einer ‘Mengenfolge’. All diese können einfach als ‘Folge’ oder ‘Zahlenfolge’ bezeichnet werden.</ul><p>Üblicherweise wird für eine Folge $\mathbf{a}: \mathbb{N} \to \mathbb{R}$ im <strong>Körper der reellen Zahlen (the field of real numbers)</strong> $\mathbb{R}$</p>\[a_1 := \mathbf{a}(1), \quad a_2 := \mathbf{a}(2), \quad a_3 := \mathbf{a}(3)\]<p>gesetzt, und diese Folge wird dargestellt als:</p>\[a_1,\, a_2,\, a_3,\, \dots\]<p>oder</p>\[\begin{gather*} (a_1,a_2,a_3,\dots), \\ (a_n: n=1,2,3,\dots), \\ (a_n)_{n=1}^{\infty}, \qquad (a_n) \end{gather*}\]<blockquote class="prompt-info"><p>*Bei der Definition einer Folge kann man statt der Menge der natürlichen Zahlen $\mathbb{N}$ auch die Menge der nicht-negativen ganzen Zahlen</p>\[\mathbb{N}_0 := \{0\} \cup \mathbb{N} = \{0,1,2,\dots\}\]<p>oder</p>\[\{2,3,4,\dots \}\]<p>als Definitionsbereich wählen. Zum Beispiel ist es bei der Theorie der Potenzreihen natürlicher, den Definitionsbereich als $\mathbb{N}_0$ zu wählen.</p></blockquote><h2 id="konvergenz-und-divergenz">Konvergenz und Divergenz</h2><p>Wenn eine Folge $(a_n)$ gegen eine reelle Zahl $l$ konvergiert, schreibt man</p>\[\lim_{n\to \infty} a_n = l\]<p>und $l$ wird als <strong>Grenzwert</strong> der Folge $(a_n)$ bezeichnet.</p><blockquote class="prompt-info"><p>Die strenge Definition unter Verwendung des <strong>Epsilon-Delta-Arguments (epsilon-delta argument)</strong> lautet wie folgt:</p>\[\lim_{n\to \infty} a_n = l \overset{def}\Longleftrightarrow \forall \epsilon &gt; 0,\, \exists N \in \mathbb{N}\ (n &gt; N \Rightarrow |a_n - l| &lt; \epsilon)\]<p>Das bedeutet, dass für jede noch so kleine positive Zahl $\epsilon$ immer eine natürliche Zahl $N$ existiert, so dass für $n&gt;N$ gilt: $|a_n - l | &lt; \epsilon$. Dies impliziert, dass für hinreichend große $n$ die Differenz zwischen $a_n$ und $l$ beliebig klein wird, und daher definiert man, dass eine Folge $(a_n)$, die diese Bedingung erfüllt, gegen die reelle Zahl $l$ konvergiert.</p></blockquote><p>Eine Folge, die nicht konvergiert, wird als <strong>divergent</strong> bezeichnet. <em>Die Konvergenz oder Divergenz einer Folge ändert sich nicht, wenn eine endliche Anzahl ihrer Glieder geändert wird.</em></p><p>Wenn die Glieder einer Folge $(a_n)$ unbegrenzt größer werden, schreibt man</p>\[\lim_{n\to \infty} a_n = \infty\]<p>und sagt, dass die Folge <em>gegen positiv unendlich divergiert</em>. Analog dazu, wenn die Glieder einer Folge $(a_n)$ unbegrenzt kleiner werden, schreibt man</p>\[\lim_{n\to \infty} a_n = -\infty\]<p>und sagt, dass die Folge <em>gegen negativ unendlich divergiert</em>.</p><h2 id="grundlegende-eigenschaften-konvergenter-folgen">Grundlegende Eigenschaften konvergenter Folgen</h2><p>Wenn sowohl die Folge $(a_n)$ als auch $(b_n)$ konvergieren (d.h. Grenzwerte haben), konvergieren auch die Folgen $(a_n + b_n)$ und $(a_n \cdot b_n)$, und es gilt:</p>\[\lim_{n\to \infty} (a_n + b_n) = \lim_{n\to \infty} a_n + \lim_{n\to \infty} b_n \label{eqn:props_of_conv_series_1}\tag{1}\] \[\lim_{n\to \infty} (a_n \cdot b_n) = \left(\lim_{n\to \infty} a_n \right) \cdot \left(\lim_{n\to \infty} b_n \right) \label{eqn:props_of_conv_series_2}\tag{2}\]<p>Außerdem gilt für jede reelle Zahl $t$:</p>\[\lim_{n\to \infty} (t a_n) = t\left(\lim_{n\to \infty} a_n \right) \label{eqn:props_of_conv_series_3}\tag{3}\]<p>Diese Eigenschaften werden als <strong>grundlegende Eigenschaften konvergenter Folgen</strong> oder <strong>grundlegende Eigenschaften von Grenzwerten</strong> bezeichnet.</p><h2 id="die-eulersche-zahl-e">Die Eulersche Zahl $e$</h2><p>Die <strong>Basis des natürlichen Logarithmus</strong> wird definiert als:</p>\[e := \lim_{n\to \infty} \left(1+\frac{1}{n} \right)^n \approx 2.718\]<p>Dies ist eine der wichtigsten Konstanten in der Mathematik.</p><blockquote class="prompt-tip"><p>Nur in Korea wird der Ausdruck ‘natürliche Konstante’ recht häufig verwendet, aber dies ist kein Standardbegriff. Der offizielle Begriff, der von der Koreanischen Mathematischen Gesellschaft im mathematischen Wörterbuch eingetragen wurde, ist <a href="https://www.kms.or.kr/mathdict/list.html?key=kname&amp;keyword=%EC%9E%90%EC%97%B0%EB%A1%9C%EA%B7%B8%EC%9D%98+%EB%B0%91">‘Basis des natürlichen Logarithmus’</a>, und der Ausdruck ‘natürliche Konstante’ ist in diesem Wörterbuch nicht zu finden. Sogar im Standardwörterbuch des Nationalen Instituts für koreanische Sprache findet man den Begriff ‘natürliche Konstante’ nicht, und in der <a href="https://stdict.korean.go.kr/search/searchView.do?pageSize=10&amp;searchKeyword=%EC%9E%90%EC%97%B0%EB%A1%9C%EA%B7%B8">Wörterbuchdefinition von ‘natürlicher Logarithmus’</a> wird nur erwähnt, dass es sich um “eine bestimmte Zahl handelt, die üblicherweise mit e bezeichnet wird”.<br /> Auch in englischsprachigen Ländern und Japan gibt es keine entsprechenden Begriffe. Im Englischen werden hauptsächlich Ausdrücke wie ‘the base of the natural logarithm’ oder kurz ‘natural base’, oder ‘Euler’s number’ bzw. ‘the number $e$’ verwendet.<br /> Da die Herkunft unklar ist, die Koreanische Mathematische Gesellschaft es nie als offiziellen Begriff anerkannt hat und es außerhalb Koreas nirgendwo auf der Welt verwendet wird, gibt es keinen Grund, an einem solchen Begriff festzuhalten. Daher werde ich hier in Zukunft den Ausdruck ‘Basis des natürlichen Logarithmus’ verwenden oder einfach $e$ schreiben.</p></blockquote><h2 id="reihen">Reihen</h2><p>Für eine Folge</p>\[\mathbf{a} = (a_1, a_2, a_3, \dots)\]<p>bezeichnet man die Folge der Partialsummen</p>\[a_1, \quad a_1 + a_2, \quad a_1 + a_2 + a_3, \quad \dots\]<p>als <strong>Reihe</strong> der Folge $\mathbf{a}$. Die Reihe der Folge $(a_n)$ wird dargestellt als:</p>\[\begin{gather*} a_1 + a_2 + a_3 + \cdots, \qquad \sum_{n=1}^{\infty}a_n, \\ \sum_{n\geq 1} a_n, \qquad \sum_n a_n, \qquad \sum a_n \end{gather*}\]<h2 id="konvergenz-und-divergenz-von-reihen">Konvergenz und Divergenz von Reihen</h2><p>Wenn die aus der Folge $(a_n)$ gebildete Reihe</p>\[a_1, \quad a_1 + a_2, \quad a_1 + a_2 + a_3, \quad \dots\]<p>gegen eine reelle Zahl $l$ konvergiert, schreibt man</p>\[\sum_{n=1}^{\infty} a_n = l\]<p>Der Grenzwert $l$ wird als <strong>Summe</strong> der Reihe $\sum a_n$ bezeichnet. Das Symbol</p>\[\sum a_n\]<p>kann je nach Kontext sowohl die <u>Reihe</u> als auch die <u>Summe der Reihe</u> bezeichnen.</p><p>Eine Reihe, die nicht konvergiert, wird als <strong>divergent</strong> bezeichnet.</p><h2 id="grundlegende-eigenschaften-konvergenter-reihen">Grundlegende Eigenschaften konvergenter Reihen</h2><p>Aus den <a href="#grundlegende-eigenschaften-konvergenter-folgen">grundlegenden Eigenschaften konvergenter Folgen</a> ergeben sich die folgenden grundlegenden Eigenschaften konvergenter Reihen. Für eine reelle Zahl $t$ und zwei konvergente Reihen $\sum a_n$, $\sum b_n$ gilt:</p>\[\sum(a_n + b_n) = \sum a_n + \sum b_n, \qquad \sum ta_n = t\sum a_n \tag{4}\]<p>Die Konvergenz einer Reihe wird nicht durch die Änderung einer endlichen Anzahl von Gliedern beeinflusst. Das heißt, wenn für zwei Folgen $(a_n)$, $(b_n)$ gilt, dass $a_n=b_n$ für alle $n$ außer einer endlichen Anzahl, dann ist die notwendige und hinreichende Bedingung für die Konvergenz der Reihe $\sum a_n$, dass die Reihe $\sum b_n$ konvergiert.</p>]]> </content> </entry> <entry><title xml:lang="de">Newtons Bewegungsgesetze</title><link href="https://www.yunseo.kim/de/posts/newtons-laws-of-motion/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/newtons-laws-of-motion/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/newtons-laws-of-motion/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/newtons-laws-of-motion/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/newtons-laws-of-motion/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/newtons-laws-of-motion/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/newtons-laws-of-motion/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/newtons-laws-of-motion/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/newtons-laws-of-motion/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/newtons-laws-of-motion/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/newtons-laws-of-motion/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/newtons-laws-of-motion/" rel="alternate" type="text/html" hreflang="am" /><published>2025-03-10T00:00:00+09:00</published> <updated>2026-02-16T05:09:10+09:00</updated> <id>https://www.yunseo.kim/de/posts/newtons-laws-of-motion/</id> <author> <name>Yunseo Kim</name> </author> <category term="Physics" /> <category term="Classical Dynamics" /> <summary xml:lang="de">Wir betrachten Newtons Bewegungsgesetze und die Bedeutung dieser drei Gesetze, sowie die Definitionen von träger und schwerer Masse, und untersuchen das Äquivalenzprinzip, das nicht nur in der klassischen Mechanik, sondern auch in der späteren Allgemeinen Relativitätstheorie eine wichtige Bedeutung hat.</summary> <content type="html" xml:lang="de"> <![CDATA[<p>Wir betrachten Newtons Bewegungsgesetze und die Bedeutung dieser drei Gesetze, sowie die Definitionen von träger und schwerer Masse, und untersuchen das Äquivalenzprinzip, das nicht nur in der klassischen Mechanik, sondern auch in der späteren Allgemeinen Relativitätstheorie eine wichtige Bedeutung hat.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="tldr">TL;DR</h2><blockquote class="prompt-info"><p><strong>Newtons Bewegungsgesetze (Newton’s laws of motion)</strong></p><ol><li>Ein Körper verharrt im Zustand der Ruhe oder der gleichförmigen geradlinigen Bewegung, sofern keine äußere Kraft auf ihn einwirkt.<li>Die zeitliche Änderung des Impulses eines Körpers ist gleich der auf ihn wirkenden Kraft.<ul><li>$\vec{F} = \cfrac{d\vec{p}}{dt} = \cfrac{d}{dt}(m\vec{v}) = m\vec{a}$</ul><li>Wenn zwei Körper aufeinander Kräfte ausüben, sind diese Kräfte gleich groß und entgegengesetzt gerichtet.<ul><li>$\vec{F_1} = -\vec{F_2}$</ul></ol></blockquote><blockquote class="prompt-info"><p><strong>Äquivalenzprinzip (principle of equivalence)</strong></p><ul><li>Träge Masse: Die Masse, die die Beschleunigung eines Körpers bei einer gegebenen Kraft bestimmt<li>Schwere Masse: Die Masse, die die Gravitationskraft zwischen einem Körper und einem anderen Körper bestimmt<li>Derzeit ist bekannt, dass träge und schwere Masse mit einer Genauigkeit von etwa $10^{-12}$ eindeutig übereinstimmen<li>Die Behauptung, dass träge und schwere Masse exakt gleich sind, wird als <strong>Äquivalenzprinzip</strong> bezeichnet</ul></blockquote><h2 id="newtons-bewegungsgesetze">Newtons Bewegungsgesetze</h2><p>Newtons Bewegungsgesetze sind drei Gesetze, die Isaac Newton im Jahr 11687 in seinem Werk Philosophiæ Naturalis Principia Mathematica (Mathematische Prinzipien der Naturphilosophie, kurz “Principia”) veröffentlichte und die die Grundlage der Newtonschen Mechanik (Newtonian mechanics) bilden.</p><ol><li>Ein Körper verharrt im Zustand der Ruhe oder der gleichförmigen geradlinigen Bewegung, sofern keine äußere Kraft auf ihn einwirkt.<li>Die zeitliche Änderung des Impulses eines Körpers ist gleich der auf ihn wirkenden Kraft.<li>Wenn zwei Körper aufeinander Kräfte ausüben, sind diese Kräfte gleich groß und entgegengesetzt gerichtet.</ol><h3 id="newtons-erstes-gesetz">Newtons erstes Gesetz</h3><blockquote><p>I. Ein Körper verharrt im Zustand der Ruhe oder der gleichförmigen geradlinigen Bewegung, sofern keine äußere Kraft auf ihn einwirkt.</p></blockquote><p>Ein Körper, auf den keine äußere Kraft wirkt, wird als <strong>freier Körper (free body)</strong> oder <strong>freies Teilchen (free particle)</strong> bezeichnet. Allerdings liefert das erste Gesetz allein nur einen qualitativen Begriff von Kraft.</p><h3 id="newtons-zweites-gesetz">Newtons zweites Gesetz</h3><blockquote><p>II. Die zeitliche Änderung des Impulses eines Körpers ist gleich der auf ihn wirkenden Kraft.</p></blockquote><p>Newton definierte den <strong>Impuls (momentum)</strong> als das Produkt aus Masse und Geschwindigkeit</p>\[\vec{p} \equiv m\vec{v} \label{eqn:momentum}\tag{1}\]<p>Daraus lässt sich Newtons zweites Gesetz wie folgt ausdrücken:</p>\[\vec{F} = \frac{d\vec{p}}{dt} = \frac{d}{dt}(m\vec{v}) = m\vec{a}. \label{eqn:2nd_law}\tag{2}\]<p>Newtons erstes und zweites Gesetz sind, trotz ihres Namens, eigentlich eher “Definitionen” der Kraft als “Gesetze”. Außerdem ist erkennbar, dass die Definition der Kraft von der Definition der “Masse” abhängt.</p><h3 id="newtons-drittes-gesetz">Newtons drittes Gesetz</h3><blockquote><p>III. Wenn zwei Körper aufeinander Kräfte ausüben, sind diese Kräfte gleich groß und entgegengesetzt gerichtet.</p></blockquote><p>Dieses physikalische Gesetz ist auch als “Gesetz von Wirkung und Gegenwirkung” bekannt und gilt, wenn die Kraft, die ein Körper auf einen anderen ausübt, in Richtung der Verbindungslinie zwischen den beiden Wirkungspunkten wirkt. Eine solche Kraft wird als <strong>Zentralkraft (central force)</strong> bezeichnet, und das dritte Gesetz gilt unabhängig davon, ob die Zentralkraft anziehend oder abstoßend ist. Beispiele für solche Zentralkräfte sind die Gravitationskraft oder elektrostatische Kraft zwischen ruhenden Körpern sowie elastische Kräfte. Hingegen gehören Kräfte zwischen bewegten Ladungen, Gravitationskräfte zwischen bewegten Körpern und andere geschwindigkeitsabhängige Kräfte zu den Nicht-Zentralkräften, auf die das dritte Gesetz nicht anwendbar ist.</p><p>Unter Berücksichtigung der zuvor betrachteten Massendefinition kann das dritte Gesetz wie folgt umformuliert werden:</p><blockquote><p>III$^\prime$. Wenn zwei Körper ein ideales isoliertes System bilden, sind ihre Beschleunigungen entgegengesetzt gerichtet, und das Verhältnis ihrer Beträge ist gleich dem umgekehrten Verhältnis ihrer Massen.</p></blockquote><p>Nach Newtons drittem Gesetz gilt:</p>\[\vec{F_1} = -\vec{F_2} \label{eqn:3rd_law}\tag{3}\]<p>Wenn wir das zuvor betrachtete zweite Gesetz ($\ref{eqn:2nd_law}$) einsetzen, erhalten wir:</p>\[\frac{d\vec{p_1}}{dt} = -\frac{d\vec{p_2}}{dt} \label{eqn:3rd-1_law}\tag{4}\]<p>Daraus folgt, dass der Impuls in der isolierten Wechselwirkung zweier Teilchen erhalten bleibt:</p>\[\frac{d}{dt}(\vec{p_1}+\vec{p_2}) = 0 \label{eqn:conservation_of_momentum}\tag{5}\]<p>Da in Gleichung ($\ref{eqn:3rd-1_law}$) $\vec{p}=m\vec{v}$ gilt und die Masse $m$ konstant ist, erhalten wir:</p>\[m_1\left(\frac{d\vec{v_1}}{dt} \right) = m_2\left(-\frac{d\vec{v_2}}{dt} \right) \tag{6a}\] \[m_1(\vec{a_1}) = m_2(-\vec{a_2}) \tag{6b}\]<p>Daraus folgt:</p>\[\frac{m_2}{m_1} = -\frac{a_1}{a_2}. \tag{7}\]<p>Obwohl Newtons drittes Gesetz für Körper formuliert ist, die ein isoliertes System bilden, ist es in der Praxis unmöglich, solche idealen Bedingungen zu realisieren. In diesem Sinne könnte man Newtons Behauptung im dritten Gesetz als ziemlich kühn betrachten. Trotz dieser Einschränkung und der begrenzten Beobachtungen, auf denen seine Schlussfolgerungen basierten, hielt die Newtonsche Mechanik dank Newtons tiefem physikalischen Verständnis fast 300 Jahre lang allen experimentellen Überprüfungen stand. Erst im 11900. Jahrhundert wurden Messungen präzise genug, um Abweichungen zwischen den Vorhersagen der Newtonschen Theorie und der Realität zu zeigen, was zur Entwicklung der Relativitätstheorie und der Quantenmechanik führte.</p><h2 id="träge-masse-und-schwere-masse">Träge Masse und schwere Masse</h2><p>Eine Methode zur Bestimmung der Masse eines Körpers besteht darin, sein Gewicht mit einer Waage mit einem Standardgewicht zu vergleichen. Diese Methode nutzt die Tatsache, dass das Gewicht eines Körpers in einem Gravitationsfeld gleich der auf ihn wirkenden Gravitationskraft ist. In diesem Fall nimmt das zweite Gesetz $\vec{F}=m\vec{a}$ die Form $\vec{W}=m\vec{g}$ an. Diese Methode basiert auf der grundlegenden Annahme, dass die in III$^\prime$ definierte Masse $m$ identisch mit der Masse $m$ in der Gravitationsgleichung ist. Diese beiden Massen werden als <strong>träge Masse (inertial mass)</strong> und <strong>schwere Masse (gravitational mass)</strong> bezeichnet und wie folgt definiert:</p><ul><li>Träge Masse: Die Masse, die die Beschleunigung eines Körpers bei einer gegebenen Kraft bestimmt<li>Schwere Masse: Die Masse, die die Gravitationskraft zwischen einem Körper und einem anderen Körper bestimmt</ul><p>Obwohl es sich um eine später erfundene Geschichte handelt, die nichts mit Galileo Galilei zu tun hat, war das Fallexperiment vom Schiefen Turm von Pisa das erste Gedankenexperiment, das zeigte, dass träge und schwere Masse gleich sein müssten. Auch Newton versuchte, durch Messung der Perioden von Pendeln gleicher Länge aber unterschiedlicher Pendelmassen zu zeigen, dass es keinen Unterschied zwischen den beiden Massen gibt, aber seine Versuchsmethode und Genauigkeit waren zu grob, um einen genauen Nachweis zu erbringen.</p><p>Ende des 11800. Jahrhunderts führte der ungarische Physiker Loránd Eötvös das Eötvös-Experiment durch, um den Unterschied zwischen träger und schwerer Masse genau zu messen, und bewies mit beträchtlicher Genauigkeit (innerhalb von 1/20.000.000), dass träge und schwere Masse identisch sind.</p><p>Spätere Experimente von Robert Henry Dicke und anderen haben die Genauigkeit weiter erhöht, und es ist heute bekannt, dass träge und schwere Masse mit einer Genauigkeit von etwa $10^{-12}$ eindeutig übereinstimmen. Dieses Ergebnis hat in der Allgemeinen Relativitätstheorie eine äußerst wichtige Bedeutung, und die Behauptung, dass träge und schwere Masse exakt gleich sind, wird als <strong>Äquivalenzprinzip (principle of equivalence)</strong> bezeichnet.</p>]]> </content> </entry> <entry><title xml:lang="de">Homogene lineare DGL zweiter Ordnung mit konstanten Koeffizienten</title><link href="https://www.yunseo.kim/de/posts/homogeneous-linear-odes-with-constant-coefficients/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/homogeneous-linear-odes-with-constant-coefficients/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/homogeneous-linear-odes-with-constant-coefficients/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/homogeneous-linear-odes-with-constant-coefficients/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/homogeneous-linear-odes-with-constant-coefficients/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/homogeneous-linear-odes-with-constant-coefficients/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/homogeneous-linear-odes-with-constant-coefficients/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/homogeneous-linear-odes-with-constant-coefficients/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/homogeneous-linear-odes-with-constant-coefficients/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/homogeneous-linear-odes-with-constant-coefficients/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/homogeneous-linear-odes-with-constant-coefficients/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/homogeneous-linear-odes-with-constant-coefficients/" rel="alternate" type="text/html" hreflang="am" /><published>2025-02-22T00:00:00+09:00</published> <updated>2025-07-11T21:22:11+09:00</updated> <id>https://www.yunseo.kim/de/posts/homogeneous-linear-odes-with-constant-coefficients/</id> <author> <name>Yunseo Kim</name> </author> <category term="Mathematics" /> <category term="Differential Equation" /> <summary xml:lang="de">Wir untersuchen die Form der allgemeinen Lösung einer homogenen linearen DGL mit konstanten Koeffizienten, abhängig vom Vorzeichen der Diskriminante der charakteristischen Gleichung.</summary> <content type="html" xml:lang="de"> <![CDATA[<p>Wir untersuchen die Form der allgemeinen Lösung einer homogenen linearen DGL mit konstanten Koeffizienten, abhängig vom Vorzeichen der Diskriminante der charakteristischen Gleichung.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="tldr">TL;DR</h2><blockquote class="prompt-info"><ul><li>Homogene lineare DGL zweiter Ordnung mit konstanten Koeffizienten: $y^{\prime\prime} + ay^{\prime} + by = 0$<li><strong>Charakteristische Gleichung</strong>: $\lambda^2 + a\lambda + b = 0$<li>Je nach Vorzeichen der Diskriminante $a^2 - 4b$ der charakteristischen Gleichung kann die Form der allgemeinen Lösung in drei Fälle unterteilt werden, wie in der Tabelle gezeigt:</ul><table><thead><tr><th style="text-align: center">Fall<th style="text-align: center">Lösungen der charakteristischen Gleichung<th style="text-align: center">Basis der Lösungen der DGL<th style="text-align: center">Allgemeine Lösung der DGL<tbody><tr><td style="text-align: center">I<td style="text-align: center">Zwei verschiedene reelle Wurzeln<br />$\lambda_1$, $\lambda_2$<td style="text-align: center">$e^{\lambda_1 x}$, $e^{\lambda_2 x}$<td style="text-align: center">$y = c_1e^{\lambda_1 x} + c_2e^{\lambda_2 x}$<tr><td style="text-align: center">II<td style="text-align: center">Reelle doppelte Wurzel<br /> $\lambda = -\cfrac{1}{2}a$<td style="text-align: center">$e^{-ax/2}$, $xe^{-ax/2}$<td style="text-align: center">$y = (c_1 + c_2 x)e^{-ax/2}$<tr><td style="text-align: center">III<td style="text-align: center">Konjugiert komplexe Wurzeln<br /> $\lambda_1 = -\cfrac{1}{2}a + i\omega$, <br /> $\lambda_2 = -\cfrac{1}{2}a - i\omega$<td style="text-align: center">$e^{-ax/2}\cos{\omega x}$, <br /> $e^{-ax/2}\sin{\omega x}$<td style="text-align: center">$y = e^{-ax/2}(A\cos{\omega x} + B\sin{\omega x})$</table></blockquote><h2 id="voraussetzungen">Voraussetzungen</h2><ul><li><a href="/de/posts/Bernoulli-Equation/">Bernoulli-Gleichung</a><li><a href="/de/posts/homogeneous-linear-odes-of-second-order/">Homogene lineare DGL zweiter Ordnung</a><li>Euler’sche Formel</ul><h2 id="charakteristische-gleichung">Charakteristische Gleichung</h2><p>Betrachten wir eine homogene lineare Differentialgleichung zweiter Ordnung mit konstanten Koeffizienten $a$ und $b$:</p>\[y^{\prime\prime} + ay^{\prime} + by = 0 \label{eqn:ode_with_constant_coefficients}\tag{1}\]<p>Diese Art von Gleichung hat wichtige Anwendungen bei mechanischen und elektrischen Schwingungen.</p><p>Im Beitrag zur <a href="/de/posts/Bernoulli-Equation/">Bernoulli-Gleichung</a> haben wir bereits die allgemeine Lösung der logistischen Gleichung hergeleitet. Demnach ist die Lösung der linearen DGL erster Ordnung mit konstantem Koeffizienten $k$</p>\[y^\prime + ky = 0\]<p>die Exponentialfunktion $y = ce^{-kx}$ (für den Fall $A=-k$, $B=0$ in Gleichung (4) des entsprechenden Beitrags).</p><p>Daher können wir für die ähnlich geformte Gleichung ($\ref{eqn:ode_with_constant_coefficients}$) zunächst einen Lösungsansatz der Form</p>\[y=e^{\lambda x}\label{eqn:general_sol}\tag{2}\]<p>versuchen.</p><blockquote class="prompt-info"><p>Natürlich ist dies nur eine Vermutung, und es gibt keine Garantie, dass die allgemeine Lösung tatsächlich diese Form hat. Aber wenn wir erst einmal zwei linear unabhängige Lösungen gefunden haben, können wir, wie im Beitrag über <a href="/de/posts/homogeneous-linear-odes-of-second-order/#basis-und-allgemeine-lösung">homogene lineare DGL zweiter Ordnung</a> gezeigt, die allgemeine Lösung mithilfe des <a href="/de/posts/homogeneous-linear-odes-of-second-order/#superpositionsprinzip">Superpositionsprinzips</a> finden.<br /> Wie wir gleich sehen werden, gibt es auch Fälle, in denen wir eine <a href="#ii-reelle-doppelte-wurzel-lambda---cfraca2">Lösung anderer Form finden müssen</a>.</p></blockquote><p>Setzen wir Gleichung ($\ref{eqn:general_sol}$) und ihre Ableitungen</p>\[y^\prime = \lambda e^{\lambda x}, \quad y^{\prime\prime} = \lambda^2 e^{\lambda x}\]<p>in Gleichung ($\ref{eqn:ode_with_constant_coefficients}$) ein, erhalten wir</p>\[(\lambda^2 + a\lambda + b)e^{\lambda x} = 0\]<p>Wenn $\lambda$ also eine Lösung der <strong>charakteristischen Gleichung</strong></p>\[\lambda^2 + a\lambda + b = 0 \label{eqn:characteristic_eqn}\tag{3}\]<p>ist, dann ist die Exponentialfunktion ($\ref{eqn:general_sol}$) eine Lösung der Differentialgleichung ($\ref{eqn:ode_with_constant_coefficients}$). Die Lösungen der quadratischen Gleichung ($\ref{eqn:characteristic_eqn}$) sind</p>\[\begin{align*} \lambda_1 &amp;= \frac{1}{2}\left(-a + \sqrt{a^2 - 4b}\right), \\ \lambda_2 &amp;= \frac{1}{2}\left(-a - \sqrt{a^2 - 4b}\right) \end{align*}\label{eqn:lambdas}\tag{4}\]<p>und daraus ergeben sich die beiden Funktionen</p>\[y_1 = e^{\lambda_1 x}, \quad y_2 = e^{\lambda_2 x} \tag{5}\]<p>als Lösungen der Gleichung ($\ref{eqn:ode_with_constant_coefficients}$).</p><blockquote class="prompt-tip"><p>Die Begriffe <strong>charakteristische Gleichung</strong> und <strong>Hilfsgleichung (auxiliary equation)</strong> werden oft synonym verwendet; sie bedeuten genau dasselbe. Man kann beide Begriffe verwenden.</p></blockquote><p>Nun können wir je nach Vorzeichen der Diskriminante $a^2 - 4b$ der charakteristischen Gleichung ($\ref{eqn:characteristic_eqn}$) drei Fälle unterscheiden:</p><ul><li>$a^2 - 4b &gt; 0$: Zwei verschiedene reelle Wurzeln<li>$a^2 - 4b = 0$: Reelle doppelte Wurzel<li>$a^2 - 4b &lt; 0$: Konjugiert komplexe Wurzeln</ul><h2 id="form-der-allgemeinen-lösung-je-nach-vorzeichen-der-diskriminante-der-charakteristischen-gleichung">Form der allgemeinen Lösung je nach Vorzeichen der Diskriminante der charakteristischen Gleichung</h2><h3 id="i-zwei-verschiedene-reelle-wurzeln-lambda_1-und-lambda_2">I. Zwei verschiedene reelle Wurzeln $\lambda_1$ und $\lambda_2$</h3><p>In diesem Fall ist die Basis der Lösungen der Gleichung ($\ref{eqn:ode_with_constant_coefficients}$) auf einem beliebigen Intervall</p>\[y_1 = e^{\lambda_1 x}, \quad y_2 = e^{\lambda_2 x}\]<p>und die entsprechende allgemeine Lösung ist</p>\[y = c_1 e^{\lambda_1 x} + c_2 e^{\lambda_2 x} \label{eqn:general_sol_1}\tag{6}\]<h3 id="ii-reelle-doppelte-wurzel-lambda---cfraca2">II. Reelle doppelte Wurzel $\lambda = -\cfrac{a}{2}$</h3><p>Im Fall $a^2 - 4b = 0$ hat die quadratische Gleichung ($\ref{eqn:characteristic_eqn}$) nur eine einzige Lösung $\lambda = \lambda_1 = \lambda_2 = -\cfrac{a}{2}$. Daher gibt es nur eine Lösung der Form $y = e^{\lambda x}$, die wir daraus erhalten können, nämlich</p>\[y_1 = e^{-(a/2)x}\]<p>Um eine Basis zu erhalten, müssen wir eine zweite, von $y_1$ linear unabhängige Lösung $y_2$ finden.</p><p>Hierfür können wir das bereits besprochene <a href="/de/posts/homogeneous-linear-odes-of-second-order/#reduktionsverfahren-reduction-of-order">Reduktionsverfahren</a> anwenden. Wir setzen die gesuchte zweite Lösung als $y_2=uy_1$ an und setzen</p>\[\begin{align*} y_2 &amp;= uy_1, \\ y_2^{\prime} &amp;= u^{\prime}y_1 + uy_1^{\prime}, \\ y_2^{\prime\prime} &amp;= u^{\prime\prime}y_1 + 2u^{\prime}y_1^{\prime} + uy_1^{\prime\prime} \end{align*}\]<p>in die Gleichung ($\ref{eqn:ode_with_constant_coefficients}$) ein, was zu</p>\[(u^{\prime\prime}y_1 + 2u^\prime y_1^\prime + uy_1^{\prime\prime}) + a(u^\prime y_1 + uy_1^\prime) + buy_1 = 0\]<p>führt. Wenn wir die Terme nach $u^{\prime\prime}$, $u^\prime$ und $u$ gruppieren und ordnen, erhalten wir</p>\[y_1u^{\prime\prime} + (2y_1^\prime + ay_1)u^\prime + (y_1^{\prime\prime} + ay_1^\prime + by_1)u = 0\]<p>Da $y_1$ eine Lösung der Gleichung ($\ref{eqn:ode_with_constant_coefficients}$) ist, ist der Ausdruck in der letzten Klammer gleich $0$. Da</p>\[2y_1^\prime = -ae^{-ax/2} = -ay_1\]<p>ist, ist auch der Ausdruck in der ersten Klammer gleich $0$. Somit bleibt nur $u^{\prime\prime}y_1 = 0$ übrig, woraus $u^{\prime\prime}=0$ folgt. Zweimalige Integration ergibt $u = c_1x + c_2$. Da die Integrationskonstanten $c_1$ und $c_2$ beliebige Werte annehmen können, können wir einfach $c_1=1$ und $c_2=0$ wählen, was zu $u=x$ führt. Dann ist $y_2 = uy_1 = xy_1$, und da $y_1$ und $y_2$ linear unabhängig sind, bilden sie eine Basis. Daher ist im Fall einer doppelten Wurzel der charakteristischen Gleichung ($\ref{eqn:characteristic_eqn}$) die Basis der Lösungen der Gleichung ($\ref{eqn:ode_with_constant_coefficients}$) auf einem beliebigen Intervall</p>\[e^{-ax/2}, \quad xe^{-ax/2}\]<p>und die entsprechende allgemeine Lösung ist</p>\[y = (c_1 + c_2x)e^{-ax/2} \label{eqn:general_sol_2}\tag{7}\]<h3 id="iii-konjugiert-komplexe-wurzeln--cfrac12a--iomega-und--cfrac12a---iomega">III. Konjugiert komplexe Wurzeln $-\cfrac{1}{2}a + i\omega$ und $-\cfrac{1}{2}a - i\omega$</h3><p>In diesem Fall ist $a^2 - 4b &lt; 0$ und mit $\sqrt{-1} = i$ ergibt sich aus Gleichung ($\ref{eqn:lambdas}$)</p>\[\cfrac{1}{2}\sqrt{a^2 - 4b} = \cfrac{1}{2}\sqrt{-(4b - a^2)} = \sqrt{-(b-\frac{1}{4}a^2)} = i\sqrt{b - \frac{1}{4}a^2}\]<p>Hier definieren wir die reelle Zahl $\omega = \sqrt{b-\cfrac{1}{4}a^2}$.</p><p>Wenn wir $\omega$ wie oben definieren, sind die Lösungen der charakteristischen Gleichung ($\ref{eqn:characteristic_eqn}$) die konjugiert komplexen Wurzeln $\lambda = -\cfrac{1}{2}a \pm i\omega$, und wir erhalten die entsprechenden zwei komplexen Lösungen der Gleichung ($\ref{eqn:ode_with_constant_coefficients}$)</p>\[\begin{align*} e^{\lambda_1 x} &amp;= e^{-(a/2)x + i\omega x}, \\ e^{\lambda_2 x} &amp;= e^{-(a/2)x - i\omega x} \end{align*}\]<p>Auch in diesem Fall können wir jedoch eine Basis aus reellen (nicht-imaginären) Lösungen wie folgt erhalten.</p><p>Aus der Euler’schen Formel</p>\[e^{it} = \cos t + i\sin t \label{eqn:euler_formula}\tag{8}\]<p>und der durch Einsetzen von $-t$ für $t$ gewonnenen Gleichung</p>\[e^{-it} = \cos t - i\sin t\]<p>erhalten wir durch Addition und Subtraktion der beiden Gleichungen:</p>\[\begin{align*} \cos t &amp;= \frac{1}{2}(e^{it} + e^{-it}), \\ \sin t &amp;= \frac{1}{2i}(e^{it} - e^{-it}). \end{align*} \label{eqn:cos_and_sin}\tag{9}\]<p>Die komplexe Exponentialfunktion $e^z$ einer komplexen Variablen $z = r + it$ mit Realteil $r$ und Imaginärteil $it$ kann mit den reellen Funktionen $e^r$, $\cos t$ und $\sin t$ wie folgt definiert werden:</p>\[e^z = e^{r + it} = e^r e^{it} = e^r(\cos t + i\sin t) \label{eqn:complex_exp}\tag{10}\]<p>Wenn wir hier $r=-\cfrac{1}{2}ax$ und $t=\omega x$ setzen, können wir schreiben:</p>\[\begin{align*} e^{\lambda_1 x} &amp;= e^{-(a/2)x + i\omega x} = e^{-(a/2)x}(\cos{\omega x} + i\sin{\omega x}) \\ e^{\lambda_2 x} &amp;= e^{-(a/2)x - i\omega x} = e^{-(a/2)x}(\cos{\omega x} - i\sin{\omega x}) \end{align*}\]<p>Nach dem <a href="/de/posts/homogeneous-linear-odes-of-second-order/#superpositionsprinzip">Superpositionsprinzip</a> sind auch die Summe und skalare Vielfache dieser komplexen Lösungen wieder Lösungen. Indem wir die beiden Gleichungen addieren und beide Seiten mit $\cfrac{1}{2}$ multiplizieren, erhalten wir die erste reelle Lösung $y_1$ wie folgt:</p>\[y_1 = e^{-(a/2)x} \cos{\omega x}. \label{eqn:basis_1}\tag{11}\]<p>Auf die gleiche Weise können wir die zweite reelle Lösung $y_2$ erhalten, indem wir die zweite Gleichung von der ersten subtrahieren und beide Seiten mit $\cfrac{1}{2i}$ multiplizieren.</p>\[y_2 = e^{-(a/2)x} \sin{\omega x}. \label{eqn:basis_2}\tag{12}\]<p>Da $\cfrac{y_1}{y_2} = \cot{\omega x}$ keine Konstante ist, sind $y_1$ und $y_2$ auf jedem Intervall linear unabhängig und bilden somit eine Basis aus reellen Lösungen für die Gleichung ($\ref{eqn:ode_with_constant_coefficients}$). Daraus erhalten wir die allgemeine Lösung</p>\[y = e^{-ax/2}(A\cos{\omega x} + B\sin{\omega x}) \quad \text{(}A,\, B\text{ sind beliebige Konstanten)} \label{eqn:general_sol_3}\tag{13}\] ]]> </content> </entry> <entry><title xml:lang="de">Mehrsprachige Unterstützung für einen Jekyll-Blog mit Polyglot (3) – Fehlerbehebung bei Build-Fehlern und Suchfunktion im Chirpy-Theme</title><link href="https://www.yunseo.kim/de/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-3/" rel="alternate" type="text/html" hreflang="en" /><link href="https://www.yunseo.kim/ko/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-3/" rel="alternate" type="text/html" hreflang="ko" /><link href="https://www.yunseo.kim/ja/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-3/" rel="alternate" type="text/html" hreflang="ja" /><link href="https://www.yunseo.kim/zh-TW/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-3/" rel="alternate" type="text/html" hreflang="zh-TW" /><link href="https://www.yunseo.kim/es/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-3/" rel="alternate" type="text/html" hreflang="es" /><link href="https://www.yunseo.kim/pt-BR/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-3/" rel="alternate" type="text/html" hreflang="pt-BR" /><link href="https://www.yunseo.kim/fr/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-3/" rel="alternate" type="text/html" hreflang="fr" /><link href="https://www.yunseo.kim/de/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-3/" rel="alternate" type="text/html" hreflang="de" /><link href="https://www.yunseo.kim/pl/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-3/" rel="alternate" type="text/html" hreflang="pl" /><link href="https://www.yunseo.kim/cs/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-3/" rel="alternate" type="text/html" hreflang="cs" /><link href="https://www.yunseo.kim/sw/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-3/" rel="alternate" type="text/html" hreflang="sw" /><link href="https://www.yunseo.kim/am/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-3/" rel="alternate" type="text/html" hreflang="am" /><published>2025-02-05T00:00:00+09:00</published> <updated>2025-10-08T00:53:56+09:00</updated> <id>https://www.yunseo.kim/de/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-3/</id> <author> <name>Yunseo Kim</name> </author> <category term="Dev" /> <category term="Web Dev" /> <summary xml:lang="de">Eine Anleitung zur Implementierung mehrsprachiger Unterstützung in einem Jekyll-Blog mit dem &apos;jekyll-theme-chirpy&apos;-Theme durch das Polyglot-Plugin. Als dritter Teil der Serie befasst er sich mit der Identifizierung und Behebung von Fehlern, die bei der Anwendung von Polyglot auf das Chirpy-Theme auftraten.</summary> <content type="html" xml:lang="de"> <![CDATA[<p>Eine Anleitung zur Implementierung mehrsprachiger Unterstützung in einem Jekyll-Blog mit dem 'jekyll-theme-chirpy'-Theme durch das Polyglot-Plugin. Als dritter Teil der Serie befasst er sich mit der Identifizierung und Behebung von Fehlern, die bei der Anwendung von Polyglot auf das Chirpy-Theme auftraten.</p><em><p>* Mathematical equations and diagrams included in posts may not display properly when viewed with a feed reader.</p></em><h2 id="übersicht">Übersicht</h2><p>Anfang Juli 12024 habe ich für diesen Blog, der mit Jekyll erstellt und über Github Pages gehostet wird, eine mehrsprachige Unterstützung mit dem <a href="https://github.com/untra/polyglot">Polyglot</a>-Plugin implementiert. Diese Serie teilt die bei der Anwendung des Polyglot-Plugins auf das Chirpy-Theme aufgetretenen Fehler, deren Behebungsprozess sowie die Erstellung von HTML-Headern und sitemap.xml unter Berücksichtigung von SEO. Die Serie besteht aus drei Beiträgen, und dieser hier ist der dritte Teil.</p><ul><li>Teil 1: <a href="/de/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-1">Anwendung des Polyglot-Plugins &amp; Anpassung von HTML-Headern und Sitemap</a><li>Teil 2: <a href="/de/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-2">Implementierung der Sprachauswahl &amp; Lokalisierung des Layouts</a><li>Teil 3: Fehlerbehebung bei Build-Fehlern und Suchfunktion im Chirpy-Theme (Dieser Beitrag)</ul><blockquote class="prompt-info"><p>Ursprünglich bestand die Serie aus zwei Teilen, wurde aber nach mehreren inhaltlichen Erweiterungen, die den Umfang erheblich vergrößerten, auf drei Teile umstrukturiert.</p></blockquote><h2 id="anforderungen">Anforderungen</h2><ul class="task-list"><li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled" checked="checked" />Die erstellten Ergebnisse (Webseiten) müssen nach Sprachen in separaten Pfaden (z.B. <code class="language-plaintext filepath highlighter-rouge">/posts/ko/</code>, <code class="language-plaintext filepath highlighter-rouge">/posts/ja/</code>) bereitgestellt werden können.<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled" checked="checked" />Um den zusätzlichen Zeit- und Arbeitsaufwand für die Mehrsprachigkeit zu minimieren, muss das System die Sprache automatisch anhand des lokalen Dateipfads (z.B. <code class="language-plaintext filepath highlighter-rouge">/_posts/ko/</code>, <code class="language-plaintext filepath highlighter-rouge">/_posts/ja/</code>) erkennen, ohne dass für jede Markdown-Datei manuell ‘lang’- und ‘permalink’-Tags im YAML-Frontmatter festgelegt werden müssen.<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled" checked="checked" />Der Header jeder Seite der Website muss die Google-SEO-Richtlinien für die mehrsprachige Suche erfüllen, indem er entsprechende Content-Language-Meta-Tags, hreflang-Alternate-Tags und Canonical-Links enthält.<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled" checked="checked" />Alle Sprachversionen der Seiten müssen lückenlos in einer <code class="language-plaintext filepath highlighter-rouge">sitemap.xml</code>-Datei bereitgestellt werden. Diese <code class="language-plaintext filepath highlighter-rouge">sitemap.xml</code> muss ohne Duplikate nur im Stammverzeichnis vorhanden sein.<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled" checked="checked" />Alle vom <a href="https://github.com/cotes2020/jekyll-theme-chirpy">Chirpy-Theme</a> bereitgestellten Funktionen müssen auf jeder Sprachseite korrekt funktionieren. Andernfalls müssen sie entsprechend angepasst werden.<ul class="task-list"><li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled" checked="checked" />Die Funktionen ‘Kürzlich aktualisiert’ und ‘Trend-Tags’ müssen normal funktionieren.<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled" checked="checked" />Der Build-Prozess mit GitHub Actions muss fehlerfrei ablaufen.<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled" checked="checked" />Die Beitragssuche oben rechts im Blog muss korrekt funktionieren.</ul></ul><h2 id="bevor-wir-beginnen">Bevor wir beginnen</h2><p>Dieser Beitrag baut auf <a href="/de/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-1">Teil 1</a> und <a href="/de/posts/how-to-support-multi-language-on-jekyll-blog-with-polyglot-2">Teil 2</a> auf. Wenn Sie diese noch nicht gelesen haben, empfehle ich, zuerst die vorherigen Beiträge zu lesen.</p><h2 id="fehlerbehebung-relative_url_regex-target-of-repeat-operator-is-not-specified">Fehlerbehebung (‘relative_url_regex’: target of repeat operator is not specified)</h2><p>(+ 12025.10.08. Update) <a href="https://polyglot.untra.io/2025/09/20/polyglot.1.11.0/">Dieser Fehler wurde in Polyglot 1.11 behoben</a>.</p><p>Nachdem ich die vorherigen Schritte abgeschlossen und einen Build-Test mit dem Befehl <code class="language-plaintext highlighter-rouge">bundle exec jekyll serve</code> durchgeführt hatte, schlug der Build mit dem Fehler <code class="language-plaintext highlighter-rouge">'relative_url_regex': target of repeat operator is not specified</code> fehl.</p><div class="language-shell highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre><td class="rouge-code"><pre>...<span class="o">(</span>gekürzt<span class="o">)</span>
                    <span class="nt">------------------------------------------------</span>
      Jekyll 4.3.4   Please append <span class="sb">`</span><span class="nt">--trace</span><span class="sb">`</span> to the <span class="sb">`</span>serve<span class="sb">`</span> <span class="nb">command 
                     </span><span class="k">for </span>any additional information or backtrace. 
                    <span class="nt">------------------------------------------------</span>
/Users/yunseo/.gem/ruby/3.2.2/gems/jekyll-polyglot-1.8.1/lib/jekyll/polyglot/
patches/jekyll/site.rb:234:in <span class="sb">`</span>relative_url_regex<span class="s1">': target of repeat operator 
is not specified: /href="?\/((?:(?!*.gem)(?!*.gemspec)(?!tools)(?!README.md)(
?!LICENSE)(?!*.config.js)(?!rollup.config.js)(?!package*.json)(?!.sass-cache)
(?!.jekyll-cache)(?!gemfiles)(?!Gemfile)(?!Gemfile.lock)(?!node_modules)(?!ve
ndor\/bundle\/)(?!vendor\/cache\/)(?!vendor\/gems\/)(?!vendor\/ruby\/)(?!en\/
)(?!ko\/)(?!es\/)(?!pt-BR\/)(?!ja\/)(?!fr\/)(?!de\/)[^,'</span><span class="s2">"</span><span class="se">\s\/</span><span class="s2">?.]+</span><span class="se">\.</span><span class="s2">?)*(?:</span><span class="se">\/</span><span class="s2">[^
</span><span class="se">\]\[</span><span class="s2">)("</span><span class="s1">'\s]*)?)"/ (RegexpError)

...(gekürzt)
</span></pre></div></div><p>Eine Suche nach ähnlichen gemeldeten Problemen ergab, dass im Polyglot-Repository bereits <a href="https://github.com/untra/polyglot/issues/204">genau dasselbe Problem</a> gemeldet und auch eine Lösung vorhanden war.</p><p>In der Datei <a href="https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/_config.yml"><code class="language-plaintext filepath highlighter-rouge">_config.yml</code> des Chirpy-Themes</a>, das in diesem Blog verwendet wird, gibt es folgenden Abschnitt:</p><div file="\_config.yml" class="language-yml highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
</pre><td class="rouge-code"><pre><span class="na">exclude</span><span class="pi">:</span>
  <span class="pi">-</span> <span class="s2">"</span><span class="s">*.gem"</span>
  <span class="pi">-</span> <span class="s2">"</span><span class="s">*.gemspec"</span>
  <span class="pi">-</span> <span class="s">docs</span>
  <span class="pi">-</span> <span class="s">tools</span>
  <span class="pi">-</span> <span class="s">README.md</span>
  <span class="pi">-</span> <span class="s">LICENSE</span>
  <span class="pi">-</span> <span class="s2">"</span><span class="s">*.config.js"</span>
  <span class="pi">-</span> <span class="s">package*.json</span>
</pre></div></div><p>Die Ursache des Problems liegt darin, dass die regulären Ausdrücke in den folgenden zwei Funktionen der Datei <a href="https://github.com/untra/polyglot/blob/master/lib/jekyll/polyglot/patches/jekyll/site.rb"><code class="language-plaintext filepath highlighter-rouge">site.rb</code> von Polyglot</a> die oben genannten Globbing-Muster mit Wildcards wie <code class="language-plaintext highlighter-rouge">"*.gem"</code>, <code class="language-plaintext highlighter-rouge">"*.gemspec"</code> und <code class="language-plaintext highlighter-rouge">"*.config.js"</code> nicht korrekt verarbeiten können.</p><div file="(polyglot root path)/lib/jekyll/polyglot/patches/jekyll/site.rb" class="language-ruby highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
</pre><td class="rouge-code"><pre>    <span class="c1"># a regex that matches relative urls in a html document</span>
    <span class="c1"># matches href="baseurl/foo/bar-baz" href="/de/foo/bar-baz" and others like it</span>
    <span class="c1"># avoids matching excluded files.  prepare makes sure</span>
    <span class="c1"># that all @exclude dirs have a trailing slash.</span>
    <span class="k">def</span> <span class="nf">relative_url_regex</span><span class="p">(</span><span class="n">disabled</span> <span class="o">=</span> <span class="kp">false</span><span class="p">)</span>
      <span class="n">regex</span> <span class="o">=</span> <span class="s1">''</span>
      <span class="k">unless</span> <span class="n">disabled</span>
        <span class="vi">@exclude</span><span class="p">.</span><span class="nf">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">x</span><span class="o">|</span>
          <span class="n">regex</span> <span class="o">+=</span> <span class="s2">"(?!</span><span class="si">#{</span><span class="n">x</span><span class="si">}</span><span class="s2">)"</span>
        <span class="k">end</span>
        <span class="vi">@languages</span><span class="p">.</span><span class="nf">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">x</span><span class="o">|</span>
          <span class="n">regex</span> <span class="o">+=</span> <span class="s2">"(?!</span><span class="si">#{</span><span class="n">x</span><span class="si">}</span><span class="se">\/</span><span class="s2">)"</span>
        <span class="k">end</span>
      <span class="k">end</span>
      <span class="n">start</span> <span class="o">=</span> <span class="n">disabled</span> <span class="p">?</span> <span class="s1">'ferh'</span> <span class="p">:</span> <span class="s1">'href'</span>
      <span class="sr">%r{</span><span class="si">#{</span><span class="n">start</span><span class="si">}</span><span class="sr">="?</span><span class="si">#{</span><span class="vi">@baseurl</span><span class="si">}</span><span class="sr">/((?:</span><span class="si">#{</span><span class="n">regex</span><span class="si">}</span><span class="sr">[^,'"</span><span class="se">\s</span><span class="sr">/?.]+</span><span class="se">\.</span><span class="sr">?)*(?:/[^</span><span class="se">\]\[</span><span class="sr">)("'</span><span class="se">\s</span><span class="sr">]*)?)"}</span>
    <span class="k">end</span>

    <span class="c1"># a regex that matches absolute urls in a html document</span>
    <span class="c1"># matches href="http://baseurl/foo/bar-baz" and others like it</span>
    <span class="c1"># avoids matching excluded files.  prepare makes sure</span>
    <span class="c1"># that all @exclude dirs have a trailing slash.</span>
    <span class="k">def</span> <span class="nf">absolute_url_regex</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">disabled</span> <span class="o">=</span> <span class="kp">false</span><span class="p">)</span>
      <span class="n">regex</span> <span class="o">=</span> <span class="s1">''</span>
      <span class="k">unless</span> <span class="n">disabled</span>
        <span class="vi">@exclude</span><span class="p">.</span><span class="nf">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">x</span><span class="o">|</span>
          <span class="n">regex</span> <span class="o">+=</span> <span class="s2">"(?!</span><span class="si">#{</span><span class="n">x</span><span class="si">}</span><span class="s2">)"</span>
        <span class="k">end</span>
        <span class="vi">@languages</span><span class="p">.</span><span class="nf">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">x</span><span class="o">|</span>
          <span class="n">regex</span> <span class="o">+=</span> <span class="s2">"(?!</span><span class="si">#{</span><span class="n">x</span><span class="si">}</span><span class="se">\/</span><span class="s2">)"</span>
        <span class="k">end</span>
      <span class="k">end</span>
      <span class="n">start</span> <span class="o">=</span> <span class="n">disabled</span> <span class="p">?</span> <span class="s1">'ferh'</span> <span class="p">:</span> <span class="s1">'href'</span>
      <span class="sr">%r{(?&lt;!hreflang="</span><span class="si">#{</span><span class="vi">@default_lang</span><span class="si">}</span><span class="sr">" )</span><span class="si">#{</span><span class="n">start</span><span class="si">}</span><span class="sr">="?</span><span class="si">#{</span><span class="n">url</span><span class="si">}#{</span><span class="vi">@baseurl</span><span class="si">}</span><span class="sr">/((?:</span><span class="si">#{</span><span class="n">regex</span><span class="si">}</span><span class="sr">[^,'"</span><span class="se">\s</span><span class="sr">/?.]+</span><span class="se">\.</span><span class="sr">?)*(?:/[^</span><span class="se">\]\[</span><span class="sr">)("'</span><span class="se">\s</span><span class="sr">]*)?)"}</span>
    <span class="k">end</span>
</pre></div></div><p>Es gibt zwei Möglichkeiten, dieses Problem zu lösen.</p><h3 id="1-polyglot-forken-und-den-problematischen-teil-korrigieren">1. Polyglot forken und den problematischen Teil korrigieren</h3><p>Zum Zeitpunkt der Erstellung dieses Beitrags (November 12024) wird in der <a href="https://jekyllrb.com/docs/configuration/options/#global-configuration">offiziellen Jekyll-Dokumentation</a> angegeben, dass die <code class="language-plaintext highlighter-rouge">exclude</code>-Einstellung die Verwendung von Globbing-Mustern unterstützt.</p><blockquote><p>“This configuration option supports Ruby’s File.fnmatch filename globbing patterns to match multiple entries to exclude.”</p></blockquote><p>Das bedeutet, die Ursache des Problems liegt nicht im Chirpy-Theme, sondern in den beiden Funktionen <code class="language-plaintext highlighter-rouge">relative_url_regex()</code> und <code class="language-plaintext highlighter-rouge">absolute_url_regex()</code> von Polyglot. Eine grundlegende Lösung besteht darin, diese so zu ändern, dass das Problem nicht mehr auftritt.</p><p><del>Da dieser Fehler in Polyglot noch nicht behoben ist,</del> Wie oben beschrieben, wurde dieses Problem seit Polyglot 1.11 behoben (https://polyglot.untra.io/2025/09/20/polyglot.1.11.0/). Zum Zeitpunkt des Auftretens ließ es sich jedoch lösen, indem man das Polyglot-Repository forkte und die problematischen Stellen gemäß <del><a href="https://hionpu.com/posts/github_blog_4#4-polyglot-%EC%9D%98%EC%A1%B4%EC%84%B1-%EB%AC%B8%EC%A0%9C">diesem Blogbeitrag</a>(Seite nicht mehr verfügbar) und</del> der <a href="https://github.com/untra/polyglot/issues/204#issuecomment-2143270322">Antwort im oben genannten GitHub-Issue</a> wie folgt anpasste und anstelle des originalen Polyglot verwendete.</p><div file="(polyglot root path)/lib/jekyll/polyglot/patches/jekyll/site.rb" class="language-ruby highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
</pre><td class="rouge-code"><pre>    <span class="k">def</span> <span class="nf">relative_url_regex</span><span class="p">(</span><span class="n">disabled</span> <span class="o">=</span> <span class="kp">false</span><span class="p">)</span>
      <span class="n">regex</span> <span class="o">=</span> <span class="s1">''</span>
      <span class="k">unless</span> <span class="n">disabled</span>
        <span class="vi">@exclude</span><span class="p">.</span><span class="nf">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">x</span><span class="o">|</span>
          <span class="n">escaped_x</span> <span class="o">=</span> <span class="no">Regexp</span><span class="p">.</span><span class="nf">escape</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
          <span class="n">regex</span> <span class="o">+=</span> <span class="s2">"(?!</span><span class="si">#{</span><span class="n">escaped_x</span><span class="si">}</span><span class="s2">)"</span>
        <span class="k">end</span>
        <span class="vi">@languages</span><span class="p">.</span><span class="nf">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">x</span><span class="o">|</span>
          <span class="n">escaped_x</span> <span class="o">=</span> <span class="no">Regexp</span><span class="p">.</span><span class="nf">escape</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
          <span class="n">regex</span> <span class="o">+=</span> <span class="s2">"(?!</span><span class="si">#{</span><span class="n">escaped_x</span><span class="si">}</span><span class="se">\/</span><span class="s2">)"</span>
        <span class="k">end</span>
      <span class="k">end</span>
      <span class="n">start</span> <span class="o">=</span> <span class="n">disabled</span> <span class="p">?</span> <span class="s1">'ferh'</span> <span class="p">:</span> <span class="s1">'href'</span>
      <span class="sr">%r{</span><span class="si">#{</span><span class="n">start</span><span class="si">}</span><span class="sr">="?</span><span class="si">#{</span><span class="vi">@baseurl</span><span class="si">}</span><span class="sr">/((?:</span><span class="si">#{</span><span class="n">regex</span><span class="si">}</span><span class="sr">[^,'"</span><span class="se">\s</span><span class="sr">/?.]+</span><span class="se">\.</span><span class="sr">?)*(?:/[^</span><span class="se">\]\[</span><span class="sr">)("'</span><span class="se">\s</span><span class="sr">]*)?)"}</span>
    <span class="k">end</span>

    <span class="k">def</span> <span class="nf">absolute_url_regex</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">disabled</span> <span class="o">=</span> <span class="kp">false</span><span class="p">)</span>
      <span class="n">regex</span> <span class="o">=</span> <span class="s1">''</span>
      <span class="k">unless</span> <span class="n">disabled</span>
        <span class="vi">@exclude</span><span class="p">.</span><span class="nf">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">x</span><span class="o">|</span>
          <span class="n">escaped_x</span> <span class="o">=</span> <span class="no">Regexp</span><span class="p">.</span><span class="nf">escape</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
          <span class="n">regex</span> <span class="o">+=</span> <span class="s2">"(?!</span><span class="si">#{</span><span class="n">escaped_x</span><span class="si">}</span><span class="s2">)"</span>
        <span class="k">end</span>
        <span class="vi">@languages</span><span class="p">.</span><span class="nf">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">x</span><span class="o">|</span>
          <span class="n">escaped_x</span> <span class="o">=</span> <span class="no">Regexp</span><span class="p">.</span><span class="nf">escape</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
          <span class="n">regex</span> <span class="o">+=</span> <span class="s2">"(?!</span><span class="si">#{</span><span class="n">escaped_x</span><span class="si">}</span><span class="se">\/</span><span class="s2">)"</span>
        <span class="k">end</span>
      <span class="k">end</span>
      <span class="n">start</span> <span class="o">=</span> <span class="n">disabled</span> <span class="p">?</span> <span class="s1">'ferh'</span> <span class="p">:</span> <span class="s1">'href'</span>
      <span class="sr">%r{(?&lt;!hreflang="</span><span class="si">#{</span><span class="vi">@default_lang</span><span class="si">}</span><span class="sr">" )</span><span class="si">#{</span><span class="n">start</span><span class="si">}</span><span class="sr">="?</span><span class="si">#{</span><span class="n">url</span><span class="si">}#{</span><span class="vi">@baseurl</span><span class="si">}</span><span class="sr">/((?:</span><span class="si">#{</span><span class="n">regex</span><span class="si">}</span><span class="sr">[^,'"</span><span class="se">\s</span><span class="sr">/?.]+</span><span class="se">\.</span><span class="sr">?)*(?:/[^</span><span class="se">\]\[</span><span class="sr">)("'</span><span class="se">\s</span><span class="sr">]*)?)"}</span>
    <span class="k">end</span>
</pre></div></div><h3 id="2-globbing-muster-in-der-_configyml-des-chirpy-themes-durch-exakte-dateinamen-ersetzen">2. Globbing-Muster in der ‘_config.yml’ des Chirpy-Themes durch exakte Dateinamen ersetzen</h3><p>Der korrekte und ideale Weg wäre, dass der obige Patch in den Mainstream von Polyglot aufgenommen wird. Bis dahin müsste man jedoch eine geforkte Version verwenden. In diesem Fall ist es mühsam, bei jeder neuen Version des Polyglot-Upstreams die Updates nicht zu verpassen und zu übernehmen, weshalb ich eine andere Methode gewählt habe.</p><p>Wenn man im <a href="https://github.com/cotes2020/jekyll-theme-chirpy">Chirpy-Theme-Repository</a> die Dateien im Projektstammverzeichnis überprüft, die den Mustern <code class="language-plaintext highlighter-rouge">"*.gem"</code>, <code class="language-plaintext highlighter-rouge">"*.gemspec"</code> und <code class="language-plaintext highlighter-rouge">"*.config.js"</code> entsprechen, stellt man fest, dass es ohnehin nur die folgenden drei gibt:</p><ul><li><code class="language-plaintext filepath highlighter-rouge">jekyll-theme-chirpy.gemspec</code><li><code class="language-plaintext filepath highlighter-rouge">purgecss.config.js</code><li><code class="language-plaintext filepath highlighter-rouge">rollup.config.js</code></ul><p>Daher kann man die Globbing-Muster aus dem <code class="language-plaintext highlighter-rouge">exclude</code>-Abschnitt der <code class="language-plaintext filepath highlighter-rouge">_config.yml</code>-Datei entfernen und sie wie folgt ersetzen, damit Polyglot sie problemlos verarbeiten kann.</p><div file="\_config.yml" class="language-yml highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
</pre><td class="rouge-code"><pre><span class="na">exclude</span><span class="pi">:</span> <span class="c1"># Geändert unter Bezugnahme auf das Issue https://github.com/untra/polyglot/issues/204.</span>
  <span class="c1"># - "*.gem"</span>
  <span class="pi">-</span> <span class="s">jekyll-theme-chirpy.gemspec</span> <span class="c1"># - "*.gemspec"</span>
  <span class="pi">-</span> <span class="s">tools</span>
  <span class="pi">-</span> <span class="s">README.md</span>
  <span class="pi">-</span> <span class="s">LICENSE</span>
  <span class="pi">-</span> <span class="s">purgecss.config.js</span> <span class="c1"># - "*.config.js"</span>
  <span class="pi">-</span> <span class="s">rollup.config.js</span>
  <span class="pi">-</span> <span class="s">package*.json</span>
</pre></div></div><h2 id="anpassung-der-suchfunktion">Anpassung der Suchfunktion</h2><p>Nachdem die vorherigen Schritte abgeschlossen waren, funktionierten die meisten Funktionen der Website wie beabsichtigt. Ich stellte jedoch später fest, dass die Suchleiste oben rechts auf den Seiten mit dem Chirpy-Theme Seiten in anderen Sprachen als <code class="language-plaintext highlighter-rouge">site.default_lang</code> (in diesem Blog Englisch) nicht indizierte und bei einer Suche auf einer nicht-englischen Seite ebenfalls Links zu englischen Seiten als Ergebnisse ausgab.</p><p>Um die Ursache zu ermitteln, schauen wir uns an, welche Dateien an der Suchfunktion beteiligt sind und wo das Problem auftritt.</p><h3 id="_layoutsdefaulthtml">‘_layouts/default.html’</h3><p>Wenn man die Datei <a href="https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/_layouts/default.html"><code class="language-plaintext filepath highlighter-rouge">_layouts/default.html</code></a> überprüft, die das Grundgerüst für alle Seiten des Blogs bildet, sieht man, dass im <code class="language-plaintext highlighter-rouge">&lt;body&gt;</code>-Element die Inhalte von <code class="language-plaintext filepath highlighter-rouge">search-results.html</code> und <code class="language-plaintext filepath highlighter-rouge">search-loader.html</code> geladen werden.</p><div file="\_layouts/default.html" class="language-liquid highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre><td class="rouge-code"><pre>  &lt;body&gt;
    <span class="cp">{%</span><span class="w"> </span><span class="nt">include</span><span class="w"> </span>sidebar.html<span class="w"> </span><span class="na">lang</span><span class="o">=</span><span class="nv">lang</span><span class="w"> </span><span class="cp">%}</span>

    &lt;div id="main-wrapper" class="d-flex justify-content-center"&gt;
      &lt;div class="container d-flex flex-column px-xxl-5"&gt;
        
        (...gekürzt...)

        <span class="cp">{%</span><span class="w"> </span><span class="nt">include_cached</span><span class="w"> </span><span class="nv">search-results</span><span class="p">.</span><span class="nv">html</span><span class="w"> </span><span class="na">lang</span><span class="o">=</span><span class="nv">lang</span><span class="w"> </span><span class="cp">%}</span>
      &lt;/div&gt;

      &lt;aside aria-label="Scroll to Top"&gt;
        &lt;button id="back-to-top" type="button" class="btn btn-lg btn-box-shadow"&gt;
          &lt;i class="fas fa-angle-up"&gt;&lt;/i&gt;
        &lt;/button&gt;
      &lt;/aside&gt;
    &lt;/div&gt;

    (...gekürzt...)

    <span class="cp">{%</span><span class="w"> </span><span class="nt">include_cached</span><span class="w"> </span><span class="nv">search-loader</span><span class="p">.</span><span class="nv">html</span><span class="w"> </span><span class="na">lang</span><span class="o">=</span><span class="nv">lang</span><span class="w"> </span><span class="cp">%}</span>
  &lt;/body&gt;
</pre></div></div><h3 id="_includessearch-resulthtml">‘_includes/search-result.html’</h3><p><a href="https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/_includes/search-results.html"><code class="language-plaintext filepath highlighter-rouge">_includes/search-result.html</code></a> erstellt den <code class="language-plaintext highlighter-rouge">search-results</code>-Container, der die Suchergebnisse für das in das Suchfeld eingegebene Schlüsselwort speichert.</p><div file="\_includes/search-result.html" class="language-html highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
</pre><td class="rouge-code"><pre><span class="c">&lt;!-- The Search results --&gt;</span>

<span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">"search-result-wrapper"</span> <span class="na">class=</span><span class="s">"d-flex justify-content-center d-none"</span><span class="nt">&gt;</span>
  <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"col-11 content"</span><span class="nt">&gt;</span>
    <span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">"search-hints"</span><span class="nt">&gt;</span>
      {% include_cached trending-tags.html %}
    <span class="nt">&lt;/div&gt;</span>
    <span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">"search-results"</span> <span class="na">class=</span><span class="s">"d-flex flex-wrap justify-content-center text-muted mt-3"</span><span class="nt">&gt;&lt;/div&gt;</span>
  <span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;/div&gt;</span>
</pre></div></div><h3 id="_includessearch-loaderhtml">‘_includes/search-loader.html’</h3><p><a href="https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/_includes/search-loader.html"><code class="language-plaintext filepath highlighter-rouge">_includes/search-loader.html</code></a> ist der Kern der auf der <a href="https://github.com/christian-fei/Simple-Jekyll-Search">Simple-Jekyll-Search</a>-Bibliothek basierenden Suche. Es führt ein JavaScript im Browser des Besuchers aus, das im Inhalt der Indexdatei <a href="#assetsjsdatasearchjson"><code class="language-plaintext filepath highlighter-rouge">search.json</code></a> nach Übereinstimmungen mit dem eingegebenen Schlüsselwort sucht und den Link zum entsprechenden Beitrag als <code class="language-plaintext highlighter-rouge">&lt;article&gt;</code>-Element zurückgibt. Dies zeigt, dass die Suche clientseitig funktioniert.</p><div file="\_includes/search-loader.html" class="language-js highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
</pre><td class="rouge-code"><pre><span class="p">{</span><span class="o">%</span> <span class="nx">capture</span> <span class="nx">result_elem</span> <span class="o">%</span><span class="p">}</span>
  <span class="o">&lt;</span><span class="nx">article</span> <span class="kd">class</span><span class="o">=</span><span class="dl">"</span><span class="s2">px-1 px-sm-2 px-lg-4 px-xl-0</span><span class="dl">"</span><span class="o">&gt;</span>
    <span class="o">&lt;</span><span class="nx">header</span><span class="o">&gt;</span>
      <span class="o">&lt;</span><span class="nx">h2</span><span class="o">&gt;&lt;</span><span class="nx">a</span> <span class="nx">href</span><span class="o">=</span><span class="dl">"</span><span class="s2">{url}</span><span class="dl">"</span><span class="o">&gt;</span><span class="p">{</span><span class="nx">title</span><span class="p">}</span><span class="o">&lt;</span><span class="sr">/a&gt;&lt;/</span><span class="nx">h2</span><span class="o">&gt;</span>
      <span class="o">&lt;</span><span class="nx">div</span> <span class="kd">class</span><span class="o">=</span><span class="dl">"</span><span class="s2">post-meta d-flex flex-column flex-sm-row text-muted mt-1 mb-1</span><span class="dl">"</span><span class="o">&gt;</span>
        <span class="p">{</span><span class="nx">categories</span><span class="p">}</span>
        <span class="p">{</span><span class="nx">tags</span><span class="p">}</span>
      <span class="o">&lt;</span><span class="sr">/div</span><span class="err">&gt;
</span>    <span class="o">&lt;</span><span class="sr">/header</span><span class="err">&gt;
</span>    <span class="o">&lt;</span><span class="nx">p</span><span class="o">&gt;</span><span class="p">{</span><span class="nx">snippet</span><span class="p">}</span><span class="o">&lt;</span><span class="sr">/p</span><span class="err">&gt;
</span>  <span class="o">&lt;</span><span class="sr">/article</span><span class="err">&gt;
</span><span class="p">{</span><span class="o">%</span> <span class="nx">endcapture</span> <span class="o">%</span><span class="p">}</span>

<span class="p">{</span><span class="o">%</span> <span class="nx">capture</span> <span class="nx">not_found</span> <span class="o">%</span><span class="p">}</span><span class="o">&lt;</span><span class="nx">p</span> <span class="kd">class</span><span class="o">=</span><span class="dl">"</span><span class="s2">mt-5</span><span class="dl">"</span><span class="o">&gt;</span><span class="p">{{</span> <span class="nx">site</span><span class="p">.</span><span class="nx">data</span><span class="p">.</span><span class="nx">locales</span><span class="p">[</span><span class="nx">include</span><span class="p">.</span><span class="nx">lang</span><span class="p">].</span><span class="nx">search</span><span class="p">.</span><span class="nx">no_results</span> <span class="p">}}</span><span class="o">&lt;</span><span class="sr">/p&gt;{% endcapture %</span><span class="err">}
</span>
<span class="o">&lt;</span><span class="nx">script</span><span class="o">&gt;</span>
  <span class="p">{</span><span class="o">%</span> <span class="nx">comment</span> <span class="o">%</span><span class="p">}</span> <span class="nl">Note</span><span class="p">:</span> <span class="nx">dependent</span> <span class="nx">library</span> <span class="nx">will</span> <span class="nx">be</span> <span class="nx">loaded</span> <span class="k">in</span> <span class="s2">`js-selector.html`</span> <span class="p">{</span><span class="o">%</span> <span class="nx">endcomment</span> <span class="o">%</span><span class="p">}</span>
  <span class="nb">document</span><span class="p">.</span><span class="nf">addEventListener</span><span class="p">(</span><span class="dl">'</span><span class="s1">DOMContentLoaded</span><span class="dl">'</span><span class="p">,</span> <span class="p">()</span> <span class="o">=&gt;</span> <span class="p">{</span>
    <span class="nc">SimpleJekyllSearch</span><span class="p">({</span>
      <span class="na">searchInput</span><span class="p">:</span> <span class="nb">document</span><span class="p">.</span><span class="nf">getElementById</span><span class="p">(</span><span class="dl">'</span><span class="s1">search-input</span><span class="dl">'</span><span class="p">),</span>
      <span class="na">resultsContainer</span><span class="p">:</span> <span class="nb">document</span><span class="p">.</span><span class="nf">getElementById</span><span class="p">(</span><span class="dl">'</span><span class="s1">search-results</span><span class="dl">'</span><span class="p">),</span>
      <span class="na">json</span><span class="p">:</span> <span class="dl">'</span><span class="s1">{{ </span><span class="dl">'</span><span class="o">/</span><span class="nx">assets</span><span class="o">/</span><span class="nx">js</span><span class="o">/</span><span class="nx">data</span><span class="o">/</span><span class="nx">search</span><span class="p">.</span><span class="nx">json</span><span class="dl">'</span><span class="s1"> | relative_url }}</span><span class="dl">'</span><span class="p">,</span>
      <span class="na">searchResultTemplate</span><span class="p">:</span> <span class="dl">'</span><span class="s1">{{ result_elem | strip_newlines }}</span><span class="dl">'</span><span class="p">,</span>
      <span class="na">noResultsText</span><span class="p">:</span> <span class="dl">'</span><span class="s1">{{ not_found }}</span><span class="dl">'</span><span class="p">,</span>
      <span class="na">templateMiddleware</span><span class="p">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">prop</span><span class="p">,</span> <span class="nx">value</span><span class="p">,</span> <span class="nx">template</span><span class="p">)</span> <span class="p">{</span>
        <span class="k">if </span><span class="p">(</span><span class="nx">prop</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">categories</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
          <span class="k">if </span><span class="p">(</span><span class="nx">value</span> <span class="o">===</span> <span class="dl">''</span><span class="p">)</span> <span class="p">{</span>
            <span class="k">return</span> <span class="s2">`</span><span class="p">${</span><span class="nx">value</span><span class="p">}</span><span class="s2">`</span><span class="p">;</span>
          <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
            <span class="k">return</span> <span class="s2">`&lt;div class="me-sm-4"&gt;&lt;i class="far fa-folder fa-fw"&gt;&lt;/i&gt;</span><span class="p">${</span><span class="nx">value</span><span class="p">}</span><span class="s2">&lt;/div&gt;`</span><span class="p">;</span>
          <span class="p">}</span>
        <span class="p">}</span>

        <span class="k">if </span><span class="p">(</span><span class="nx">prop</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">tags</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
          <span class="k">if </span><span class="p">(</span><span class="nx">value</span> <span class="o">===</span> <span class="dl">''</span><span class="p">)</span> <span class="p">{</span>
            <span class="k">return</span> <span class="s2">`</span><span class="p">${</span><span class="nx">value</span><span class="p">}</span><span class="s2">`</span><span class="p">;</span>
          <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
            <span class="k">return</span> <span class="s2">`&lt;div&gt;&lt;i class="fa fa-tag fa-fw"&gt;&lt;/i&gt;</span><span class="p">${</span><span class="nx">value</span><span class="p">}</span><span class="s2">&lt;/div&gt;`</span><span class="p">;</span>
          <span class="p">}</span>
        <span class="p">}</span>
      <span class="p">}</span>
    <span class="p">});</span>
  <span class="p">});</span>
<span class="o">&lt;</span><span class="sr">/script</span><span class="err">&gt;
</span></pre></div></div><h3 id="assetsjsdatasearchjson">‘/assets/js/data/search.json’</h3><div file="/assets/js/data/search.json" class="language-liquid highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre><td class="rouge-code"><pre>---
layout: compress
swcache: true
---

[
  <span class="cp">{%</span><span class="w"> </span><span class="nt">for</span><span class="w"> </span><span class="nv">post</span><span class="w"> </span><span class="nt">in</span><span class="w"> </span><span class="nv">site</span><span class="p">.</span><span class="nv">posts</span><span class="w"> </span><span class="cp">%}</span>
  {
    "title": <span class="cp">{{</span><span class="w"> </span><span class="nv">post</span><span class="p">.</span><span class="nv">title</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">jsonify</span><span class="w"> </span><span class="cp">}}</span>,
    "url": <span class="cp">{{</span><span class="w"> </span><span class="nv">post</span><span class="p">.</span><span class="nv">url</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">relative_url</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">jsonify</span><span class="w"> </span><span class="cp">}}</span>,
    "categories": <span class="cp">{{</span><span class="w"> </span><span class="nv">post</span><span class="p">.</span><span class="nv">categories</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">join</span><span class="p">:</span><span class="w"> </span><span class="s1">', '</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">jsonify</span><span class="w"> </span><span class="cp">}}</span>,
    "tags": <span class="cp">{{</span><span class="w"> </span><span class="nv">post</span><span class="p">.</span><span class="nv">tags</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">join</span><span class="p">:</span><span class="w"> </span><span class="s1">', '</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">jsonify</span><span class="w"> </span><span class="cp">}}</span>,
    "date": "<span class="cp">{{</span><span class="w"> </span><span class="nv">post</span><span class="p">.</span><span class="nv">date</span><span class="w"> </span><span class="cp">}}</span>",
    <span class="cp">{%</span><span class="w"> </span><span class="nt">include</span><span class="w"> </span>no-linenos.html<span class="w"> </span><span class="na">content</span><span class="o">=</span><span class="nv">post</span><span class="p">.</span><span class="nv">content</span><span class="w"> </span><span class="cp">%}</span>
    <span class="cp">{%</span><span class="w"> </span><span class="nt">assign</span><span class="w"> </span><span class="nv">_content</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nv">content</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">strip_html</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">strip_newlines</span><span class="w"> </span><span class="cp">%}</span>
    "snippet": <span class="cp">{{</span><span class="w"> </span><span class="nv">_content</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">truncate</span><span class="p">:</span><span class="w"> </span><span class="mi">200</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">jsonify</span><span class="w"> </span><span class="cp">}}</span>,
    "content": <span class="cp">{{</span><span class="w"> </span><span class="nv">_content</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">jsonify</span><span class="w"> </span><span class="cp">}}</span>
  }<span class="cp">{%</span><span class="w"> </span><span class="nt">unless</span><span class="w"> </span><span class="nb">forloop.last</span><span class="w"> </span><span class="cp">%}</span>,<span class="cp">{%</span><span class="w"> </span><span class="nt">endunless</span><span class="w"> </span><span class="cp">%}</span>
  <span class="cp">{%</span><span class="w"> </span><span class="nt">endfor</span><span class="w"> </span><span class="cp">%}</span>
]
</pre></div></div><p>Mit der Liquid-Syntax von Jekyll wird eine JSON-Datei definiert, die den Titel, die URL, die Kategorie- und Tag-Informationen, das Erstellungsdatum, ein Snippet der ersten 200 Zeichen des Inhalts und den gesamten Inhalt aller Beiträge der Website enthält.</p><h3 id="struktur-der-suchfunktion-und-identifizierung-des-problems">Struktur der Suchfunktion und Identifizierung des Problems</h3><p>Zusammenfassend lässt sich sagen, dass die Suchfunktion beim Hosten des Chirpy-Themes auf GitHub Pages wie folgt abläuft:</p><pre><code class="language-mermaid">stateDiagram
  state "Changes" as CH
  state "Build start" as BLD
  state "Create search.json" as IDX
  state "Static Website" as DEP
  state "In Test" as TST
  state "Search Loader" as SCH
  state "Results" as R
    
  [*] --&gt; CH: Make Changes
  CH --&gt; BLD: Commit &amp; Push origin
  BLD --&gt; IDX: jekyll build
  IDX --&gt; TST: Build Complete
  TST --&gt; CH: Error Detected
  TST --&gt; DEP: Deploy
  DEP --&gt; SCH: Search Input
  SCH --&gt; R: Return Results
  R --&gt; [*]
</code></pre><p>Hierbei wurde festgestellt, dass <code class="language-plaintext filepath highlighter-rouge">search.json</code> von Polyglot für jede Sprache wie folgt erstellt wird:</p><ul><li><code class="language-plaintext filepath highlighter-rouge">/assets/js/data/search.json</code><li><code class="language-plaintext filepath highlighter-rouge">/ko/assets/js/data/search.json</code><li><code class="language-plaintext filepath highlighter-rouge">/ja/assets/js/data/search.json</code><li><code class="language-plaintext filepath highlighter-rouge">/zh-TW/assets/js/data/search.json</code><li><code class="language-plaintext filepath highlighter-rouge">/es/assets/js/data/search.json</code><li><code class="language-plaintext filepath highlighter-rouge">/pt-BR/assets/js/data/search.json</code><li><code class="language-plaintext filepath highlighter-rouge">/fr/assets/js/data/search.json</code><li><code class="language-plaintext filepath highlighter-rouge">/de/assets/js/data/search.json</code></ul><p>Die Ursache des Problems liegt also im “Search Loader”. Das Problem, dass Seiten in anderen Sprachen als Englisch nicht durchsucht werden, entsteht, weil <code class="language-plaintext filepath highlighter-rouge">_includes/search-loader.html</code> unabhängig von der Sprache der aktuell besuchten Seite statisch nur die englische Indexdatei (<code class="language-plaintext filepath highlighter-rouge">/assets/js/data/search.json</code>) lädt.</p><blockquote class="prompt-warning"><ul><li>Es scheint jedoch, dass für JSON-Dateien, im Gegensatz zu Markdown- oder HTML-Dateien, der Polyglot-Wrapper für Jekyll-Variablen wie <code class="language-plaintext highlighter-rouge">post.title</code> und <code class="language-plaintext highlighter-rouge">post.content</code> zwar funktioniert, die Funktion <a href="https://github.com/untra/polyglot?tab=readme-ov-file#relativized-local-urls">Relativized Local Urls</a> jedoch nicht.<li>Ebenso wurde während des Testens festgestellt, dass innerhalb von JSON-Datei-Templates neben den von Jekyll bereitgestellten Standardvariablen kein Zugriff auf die von <a href="https://github.com/untra/polyglot?tab=readme-ov-file#features">Polyglot zusätzlich bereitgestellten Liquid-Tags</a> wie <code class="language-plaintext highlighter-rouge">{{ site.default_lang }}</code> und <code class="language-plaintext highlighter-rouge">{{ site.active_lang }}</code> möglich ist.</ul><p>Daher werden Werte wie <code class="language-plaintext highlighter-rouge">title</code>, <code class="language-plaintext highlighter-rouge">snippet</code> und <code class="language-plaintext highlighter-rouge">content</code> in der Indexdatei zwar sprachspezifisch generiert, der <code class="language-plaintext highlighter-rouge">url</code>-Wert gibt jedoch den Standardpfad ohne Berücksichtigung der Sprache zurück. Eine entsprechende Behandlung muss im “Search Loader”-Teil hinzugefügt werden.</p></blockquote><h3 id="lösung-des-problems">Lösung des Problems</h3><p>Um dies zu beheben, muss der Inhalt von <code class="language-plaintext filepath highlighter-rouge">_includes/search-loader.html</code> wie folgt geändert werden.</p><div file="\_includes/search-loader.html" class="language-plaintext highlighter-rouge"><div class="highlight">class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
</pre><td class="rouge-code"><pre>{% capture result_elem %}
  &lt;article class="px-1 px-sm-2 px-lg-4 px-xl-0"&gt;
    &lt;header&gt;
      {% if site.active_lang != site.default_lang %}
      &lt;h2&gt;&lt;a {% static_href %}href="/{{ site.active_lang }}{url}"{% endstatic_href %}&gt;{title}&lt;/a&gt;&lt;/h2&gt;
      {% else %}
      &lt;h2&gt;&lt;a href="{url}"&gt;{title}&lt;/a&gt;&lt;/h2&gt;
      {% endif %}

(...gekürzt...)

&lt;script&gt;
  {% comment %} Note: dependent library will be loaded in `js-selector.html` {% endcomment %}
  document.addEventListener('DOMContentLoaded', () =&gt; {
    {% assign search_path = '/assets/js/data/search.json' %}
    {% if site.active_lang != site.default_lang %}
      {% assign search_path = '/' | append: site.active_lang | append: search_path %}
    {% endif %}
    
    SimpleJekyllSearch({
      searchInput: document.getElementById('search-input'),
      resultsContainer: document.getElementById('search-results'),
      json: '{{ search_path | relative_url }}',
      searchResultTemplate: '{{ result_elem | strip_newlines }}',

(...gekürzt)
</pre></div></div><ul><li>Der Liquid-Code im <code class="language-plaintext highlighter-rouge">{% capture result_elem %}</code>-Teil wurde so geändert, dass, wenn <code class="language-plaintext highlighter-rouge">site.active_lang</code> (aktuelle Seitensprache) und <code class="language-plaintext highlighter-rouge">site.default_lang</code> (Standard-Seitensprache) nicht übereinstimmen, der aus der JSON-Datei geladenen Post-URL das Präfix <code class="language-plaintext highlighter-rouge">"/{{ site.active_lang }}"</code> vorangestellt wird.<li>Auf die gleiche Weise wurde der <code class="language-plaintext highlighter-rouge">&lt;script&gt;</code>-Teil so geändert, dass während des Build-Prozesses die Sprache der aktuellen Seite mit der Standard-Seitensprache verglichen wird. Wenn sie übereinstimmen, wird der Standardpfad (<code class="language-plaintext filepath highlighter-rouge">/assets/js/data/search.json</code>) als <code class="language-plaintext highlighter-rouge">search_path</code> zugewiesen, andernfalls der entsprechende sprachspezifische Pfad (z.B. <code class="language-plaintext filepath highlighter-rouge">/ko/assets/js/data/search.json</code>).</ul><p>Nachdem diese Änderungen vorgenommen und die Website neu erstellt wurde, konnte ich bestätigen, dass die Suchergebnisse für jede Sprache korrekt angezeigt werden.</p><blockquote class="prompt-tip"><p><code class="language-plaintext highlighter-rouge">{url}</code> ist ein Platzhalter, der später bei der Suche durch die aus der JSON-Datei gelesene URL ersetzt wird. Zum Zeitpunkt des Builds ist es keine gültige URL, daher erkennt Polyglot sie nicht als Ziel für die Lokalisierung. Man muss sie also je nach Sprache manuell behandeln. Das Problem ist, dass die so behandelte Vorlage <code class="language-plaintext highlighter-rouge">"/{{ site.active_lang }}{url}"</code> beim Build als relative URL erkannt wird. Obwohl die Lokalisierung bereits abgeschlossen ist, weiß Polyglot das nicht und versucht, sie erneut zu lokalisieren (z.B. <code class="language-plaintext filepath highlighter-rouge">"/de/de/posts/example-post"</code>). Um dies zu verhindern, wurde der <a href="https://github.com/untra/polyglot?tab=readme-ov-file#disabling-url-relativizing"><code class="language-plaintext highlighter-rouge">{% static_href %}</code>-Tag</a> explizit angegeben.</p></blockquote>]]> </content> </entry> </feed>
