Konstruieren einer geraden Linie mit der Methode der kleinsten Quadrate. Ermitteln der Parameter der Regressionslinie. Methode der kleinsten Quadrate. Die Methode der kleinsten Quadrate bedeutet die Bestimmung unbekannter Parameter a, b, c, der akzeptierten funktionalen Abhängigkeit

100 RUR Bonus für die erste Bestellung

Wählen Sie die Art der Arbeit aus. Diplomarbeit. Kursarbeit. Zusammenfassung. Masterarbeit. Praxisbericht. Artikel. Bericht. Rezension. Testarbeit. Monographie. Problemlösung. Geschäftsplan. Antworten auf Fragen. Kreative Arbeit. Aufsatz. Zeichnen. Essays. Übersetzung. Präsentationen. Tippen. Sonstiges. Erhöhung der Einzigartigkeit des Textes. Masterarbeit. Laborarbeit. Online-Hilfe

Finden Sie den Preis heraus

Die Methode der kleinsten Quadrate ist eine mathematische (mathematisch-statistische) Technik, die dazu dient, Zeitreihen auszurichten, die Form der Korrelation zwischen Zufallsvariablen zu identifizieren usw. Sie besteht darin, dass die Funktion, die dieses Phänomen beschreibt, durch eine einfachere Funktion angenähert wird. Letzteres wird außerdem so gewählt, dass die Standardabweichung (siehe Streuung) der tatsächlichen Niveaus der Funktion an den beobachteten Punkten von den ausgerichteten Punkten am kleinsten ist.

Den verfügbaren Daten zufolge ( xi,yi) (ich = 1, 2, ..., N) wird eine solche Kurve konstruiert j = A + bx, bei dem die minimale Summe der quadratischen Abweichungen erreicht wird

d.h. eine von zwei Parametern abhängige Funktion wird minimiert: A- Segment auf der Ordinatenachse und B- Gerade Steigung.

Gleichungen, die die notwendigen Bedingungen für die Minimierung einer Funktion angeben S(A,B), werden genannt normale Gleichungen. Als Näherungsfunktionen werden nicht nur lineare (Ausrichtung entlang einer geraden Linie), sondern auch quadratische, parabolische, exponentielle usw. verwendet. Ein Beispiel für die Ausrichtung einer Zeitreihe entlang einer geraden Linie finden Sie in Abb. M.2, wobei die Summe der quadrierten Abstände ( j 1 – ȳ 1)2 + (j 2 – ȳ 2)2 .... ist die kleinste, und die resultierende gerade Linie spiegelt am besten den Trend einer dynamischen Reihe von Beobachtungen eines bestimmten Indikators über die Zeit wider.

Für unverzerrte OLS-Schätzungen ist es notwendig und ausreichend, die wichtigste Bedingung der Regressionsanalyse zu erfüllen: Die mathematische Erwartung eines zufälligen Fehlers, bedingt durch die Faktoren, muss gleich Null sein. Diese Bedingung ist insbesondere dann erfüllt, wenn: 1. die mathematische Erwartung von Zufallsfehlern Null ist und 2. Faktoren und Zufallsfehler unabhängige Zufallsvariablen sind. Die erste Bedingung kann für Modelle mit einer Konstante als immer erfüllt angesehen werden, da die Konstante eine mathematische Fehlererwartung ungleich Null annimmt. Die zweite Bedingung – die Bedingung der Exogenität der Faktoren – ist grundlegend. Wenn diese Eigenschaft nicht erfüllt ist, können wir davon ausgehen, dass fast alle Schätzungen äußerst unbefriedigend sind: Sie sind nicht einmal konsistent (d. h. selbst eine sehr große Datenmenge ermöglicht es uns in diesem Fall nicht, qualitativ hochwertige Schätzungen zu erhalten ).

Die gebräuchlichste Methode zur statistischen Schätzung von Parametern von Regressionsgleichungen ist die Methode der kleinsten Quadrate. Diese Methode basiert auf einer Reihe von Annahmen hinsichtlich der Art der Daten und der Ergebnisse des Modells. Die wichtigsten sind eine klare Unterteilung der ursprünglichen Variablen in abhängige und unabhängige, die Nichtkorrelation der in den Gleichungen enthaltenen Faktoren, die Linearität der Beziehung, das Fehlen einer Autokorrelation der Residuen, die Gleichheit ihrer mathematischen Erwartungen mit Null und Konstante Streuung.

Eine der Haupthypothesen von OLS ist die Annahme der Gleichheit der Varianzen der Abweichungen ei, d.h. ihre Spanne um den Durchschnittswert (Null) der Reihe sollte einen stabilen Wert haben. Diese Eigenschaft wird Homoskedastizität genannt. In der Praxis sind die Varianzen der Abweichungen häufig ungleich, das heißt, es wird Heteroskedastizität beobachtet. Dies kann verschiedene Gründe haben. Es können beispielsweise Fehler in den Quelldaten vorliegen. Gelegentliche Ungenauigkeiten in den Quellinformationen, beispielsweise Fehler in der Reihenfolge der Zahlen, können erhebliche Auswirkungen auf die Ergebnisse haben. Bei großen Werten der abhängigen Variablen (Variablen) wird häufig eine größere Streuung der Abweichungen єi beobachtet. Wenn die Daten einen erheblichen Fehler enthalten, ist natürlich auch die Abweichung des aus den fehlerhaften Daten berechneten Modellwerts groß. Um diesen Fehler zu beseitigen, müssen wir den Beitrag dieser Daten zu den Berechnungsergebnissen reduzieren und ihnen weniger Gewicht zuweisen als allen anderen. Diese Idee wird im gewichteten OLS umgesetzt.

Was die breiteste Anwendung in verschiedenen Bereichen der Wissenschaft und der praktischen Tätigkeit findet. Das können Physik, Chemie, Biologie, Wirtschaftswissenschaften, Soziologie, Psychologie usw. sein. Durch den Willen des Schicksals muss ich mich oft mit der Wirtschaft auseinandersetzen, und deshalb werde ich heute für Sie eine Reise in ein erstaunliches Land namens arrangieren Ökonometrie=) ...Wie kann man es nicht wollen?! Es ist dort sehr gut – man muss sich nur entscheiden! ...Aber was Sie wahrscheinlich auf jeden Fall wollen, ist zu lernen, wie man Probleme löst Methode der kleinsten Quadrate. Und besonders fleißige Leser werden lernen, sie nicht nur präzise, ​​sondern auch SEHR SCHNELL zu lösen ;-) Aber zuerst allgemeine Darstellung des Problems+ begleitendes Beispiel:

Angenommen, in einem bestimmten Fachgebiet werden Indikatoren untersucht, die einen quantitativen Ausdruck haben. Gleichzeitig gibt es allen Grund zu der Annahme, dass der Indikator vom Indikator abhängt. Diese Annahme kann entweder eine wissenschaftliche Hypothese sein oder auf dem gesunden Menschenverstand basieren. Lassen wir die Wissenschaft jedoch beiseite und erkunden appetitlichere Bereiche – nämlich Lebensmittelgeschäfte. Bezeichnen wir mit:

– Verkaufsfläche eines Lebensmittelgeschäfts, qm,
– Jahresumsatz eines Lebensmittelgeschäfts, Millionen Rubel.

Es ist völlig klar, dass der Umsatz in den meisten Fällen umso größer ist, je größer die Ladenfläche ist.

Nehmen wir an, dass uns nach der Durchführung von Beobachtungen/Experimenten/Berechnungen/Tänzen mit einem Tamburin numerische Daten zur Verfügung stehen:

Bei Lebensmittelgeschäften ist meiner Meinung nach alles klar: - das ist die Fläche des 1. Ladens, - sein Jahresumsatz, - die Fläche des 2. Ladens, - sein Jahresumsatz usw. Übrigens ist es überhaupt nicht notwendig, Zugang zu geheimen Materialien zu haben – eine ziemlich genaue Einschätzung des Handelsumsatzes kann mittels erhalten werden mathematische Statistik. Aber lassen wir uns nicht ablenken, der Wirtschaftsspionagekurs ist bereits bezahlt =)

Tabellarische Daten können auch in Form von Punkten geschrieben und in der bekannten Form dargestellt werden Kartesisches System .

Beantworten wir eine wichtige Frage: Wie viele Punkte werden für eine qualitative Studie benötigt?

Je mehr desto besser. Der akzeptable Mindestsatz besteht aus 5-6 Punkten. Darüber hinaus können „anomale“ Ergebnisse nicht in die Stichprobe aufgenommen werden, wenn die Datenmenge gering ist. So kann beispielsweise ein kleiner Elite-Laden um Größenordnungen mehr verdienen als „seine Kollegen“, wodurch das allgemeine Muster, das Sie finden müssen, verzerrt wird!

Um es ganz einfach auszudrücken: Wir müssen eine Funktion auswählen, Zeitplan die so nah wie möglich an den Punkten vorbeiführt . Diese Funktion wird aufgerufen annähernd (Näherung - Näherung) oder theoretische Funktion . Im Allgemeinen taucht hier sofort ein offensichtlicher „Anwärter“ auf – ein Polynom höheren Grades, dessen Graph durch ALLE Punkte verläuft. Diese Option ist jedoch kompliziert und oft einfach falsch. (da die Grafik ständig eine „Schleife“ durchläuft und den Haupttrend schlecht widerspiegelt).

Die gesuchte Funktion muss also recht einfach sein und gleichzeitig die Abhängigkeit angemessen widerspiegeln. Wie Sie vielleicht erraten haben, heißt eine der Methoden zum Finden solcher Funktionen aufgerufen Methode der kleinsten Quadrate. Schauen wir uns zunächst das Wesentliche allgemein an. Lassen Sie einige Funktionen experimentelle Daten annähern:


Wie lässt sich die Genauigkeit dieser Näherung beurteilen? Berechnen wir auch die Unterschiede (Abweichungen) zwischen den experimentellen und funktionalen Werten (wir studieren die Zeichnung). Der erste Gedanke, der mir in den Sinn kommt, ist, abzuschätzen, wie groß die Summe ist, aber das Problem besteht darin, dass die Unterschiede negativ sein können (Zum Beispiel, ) und Abweichungen als Ergebnis einer solchen Summierung heben sich gegenseitig auf. Um die Genauigkeit der Näherung abzuschätzen, muss daher die Summe herangezogen werden Module Abweichungen:

oder zusammengebrochen: (Falls es jemand nicht weiß: – das ist das Summensymbol und – eine Hilfsvariable „Zähler“, die Werte von 1 bis annimmt).

Indem wir experimentelle Punkte mit unterschiedlichen Funktionen approximieren, erhalten wir unterschiedliche Werte, und offensichtlich ist diese Funktion genauer, wenn diese Summe kleiner ist.

Eine solche Methode existiert und wird aufgerufen Methode des kleinsten Moduls. In der Praxis hat es jedoch eine viel größere Verbreitung gefunden Methode der kleinsten Quadrate, bei dem mögliche negative Werte nicht durch den Modul, sondern durch Quadrieren der Abweichungen eliminiert werden:

Danach zielen die Bemühungen darauf ab, eine Funktion auszuwählen, die die Summe der quadrierten Abweichungen darstellt war so klein wie möglich. Daher stammt eigentlich auch der Name der Methode.

Und nun kommen wir zu einem weiteren wichtigen Punkt zurück: Wie oben erwähnt, sollte die ausgewählte Funktion recht einfach sein – es gibt aber auch viele solcher Funktionen: linear , hyperbolisch, exponentiell, logarithmisch, quadratisch usw. Und natürlich möchte ich hier gleich „das Tätigkeitsfeld reduzieren“. Welche Funktionsklasse sollte ich für die Forschung wählen? Eine primitive, aber effektive Technik:

– Der einfachste Weg ist die Darstellung von Punkten auf der Zeichnung und analysieren Sie ihre Position. Wenn sie dazu neigen, in einer geraden Linie zu verlaufen, dann sollten Sie danach suchen Gleichung einer Geraden mit optimalen Werten und . Mit anderen Worten besteht die Aufgabe darin, SOLCHE Koeffizienten zu finden, sodass die Summe der quadratischen Abweichungen am kleinsten ist.

Wenn die Punkte beispielsweise entlang liegen Hyperbel, dann ist offensichtlich klar, dass die lineare Funktion eine schlechte Näherung liefert. In diesem Fall suchen wir nach den „günstigsten“ Koeffizienten für die Hyperbelgleichung – diejenigen, die die minimale Quadratsumme ergeben .

Beachten Sie nun, dass wir in beiden Fällen darüber sprechen Funktionen zweier Variablen, deren Argumente sind gesuchte Abhängigkeitsparameter:

Und im Wesentlichen müssen wir ein Standardproblem lösen – finden Minimalfunktion zweier Variablen.

Erinnern wir uns an unser Beispiel: Nehmen wir an, dass „Laden“-Punkte in der Regel auf einer geraden Linie liegen, und es gibt allen Grund, dies anzunehmen lineare Abhängigkeit Umsatz aus Verkaufsflächen. Finden wir SOLCHE Koeffizienten „a“ und „be“, sodass die Summe der quadrierten Abweichungen entsteht war der Kleinste. Alles ist wie immer – zunächst einmal Partielle Ableitungen 1. Ordnung. Entsprechend Linearitätsregel Direkt unter dem Summensymbol können Sie unterscheiden:

Wenn Sie diese Informationen für einen Aufsatz oder eine Hausarbeit verwenden möchten, bin ich für den Link im Quellenverzeichnis sehr dankbar. Solche detaillierten Berechnungen finden Sie an wenigen Stellen:

Lassen Sie uns ein Standardsystem erstellen:

Wir reduzieren jede Gleichung um „zwei“ und „brechen“ zusätzlich die Summen auf:

Notiz : Analysieren Sie unabhängig, warum „a“ und „be“ über das Summensymbol hinaus entfernt werden können. Formal lässt sich das übrigens mit der Summe machen

Schreiben wir das System in „angewandter“ Form um:

Danach beginnt sich der Algorithmus zur Lösung unseres Problems abzuzeichnen:

Kennen wir die Koordinaten der Punkte? Wir wissen. Beträge Können wir es finden? Leicht. Machen wir es am einfachsten System zweier linearer Gleichungen in zwei Unbekannten(„a“ und „be“). Wir lösen das System zum Beispiel, Cramers Methode, wodurch wir einen stationären Punkt erhalten. Überprüfung ausreichende Bedingung für ein Extremum, können wir an dieser Stelle die Funktion überprüfen erreicht genau Minimum. Die Prüfung erfordert zusätzliche Berechnungen und wird daher nicht durchgeführt (Bei Bedarf kann der fehlende Rahmen eingesehen werden). Wir ziehen das abschließende Fazit:

Funktion der beste Weg (zumindest im Vergleich zu jeder anderen linearen Funktion) bringt experimentelle Punkte näher . Grob gesagt verläuft sein Graph so nah wie möglich an diesen Punkten. In Tradition Ökonometrie die resultierende Näherungsfunktion wird auch aufgerufen gepaarte lineare Regressionsgleichung .

Das betrachtete Problem ist von großer praktischer Bedeutung. In unserer Beispielsituation gilt Gl. ermöglicht es Ihnen, den Handelsumsatz vorherzusagen („Igrek“) Der Laden wird den einen oder anderen Wert der Verkaufsfläche haben (die eine oder andere Bedeutung von „x“). Ja, die resultierende Prognose wird nur eine Prognose sein, aber in vielen Fällen wird sie sich als recht genau erweisen.

Ich werde nur ein Problem mit „echten“ Zahlen analysieren, da es keine Schwierigkeiten bereitet – alle Berechnungen erfolgen auf dem Niveau des Lehrplans der 7. bis 8. Klasse. In 95 Prozent der Fälle werden Sie aufgefordert, nur eine lineare Funktion zu finden, aber ganz am Ende des Artikels werde ich zeigen, dass es nicht schwieriger ist, die Gleichungen der optimalen Hyperbel-, Exponential- und einiger anderer Funktionen zu finden.

Tatsächlich müssen nur noch die versprochenen Leckereien verteilt werden – damit Sie lernen, solche Beispiele nicht nur genau, sondern auch schnell zu lösen. Wir studieren den Standard sorgfältig:

Aufgabe

Als Ergebnis der Untersuchung der Beziehung zwischen zwei Indikatoren wurden die folgenden Zahlenpaare erhalten:

Finden Sie mithilfe der Methode der kleinsten Quadrate die lineare Funktion, die der empirischen Funktion am besten entspricht (erfahren) Daten. Erstellen Sie eine Zeichnung, auf der Sie experimentelle Punkte und einen Graphen der Näherungsfunktion in einem kartesischen rechtwinkligen Koordinatensystem konstruieren . Ermitteln Sie die Summe der quadratischen Abweichungen zwischen den empirischen und theoretischen Werten. Finden Sie heraus, ob die Funktion besser wäre (aus Sicht der Methode der kleinsten Quadrate) Bringen Sie experimentelle Punkte näher.

Bitte beachten Sie, dass die „x“-Bedeutungen natürlich sind und eine charakteristische Bedeutung haben, auf die ich etwas später eingehen werde; aber sie können natürlich auch gebrochen sein. Darüber hinaus können je nach Inhalt einer bestimmten Aufgabe sowohl die Werte „X“ als auch „Spiel“ ganz oder teilweise negativ sein. Nun, uns wurde eine „gesichtslose“ Aufgabe gegeben, und wir beginnen damit Lösung:

Wir finden die Koeffizienten der optimalen Funktion als Lösung des Systems:

Zwecks kompakterer Aufzeichnung kann die Variable „Zähler“ weggelassen werden, da bereits klar ist, dass die Summierung von 1 bis erfolgt.

Bequemer ist es, die benötigten Beträge tabellarisch zu berechnen:


Berechnungen können mit einem Mikrorechner durchgeführt werden, viel besser ist jedoch die Verwendung von Excel – sowohl schneller als auch fehlerfrei; Sehen Sie sich ein kurzes Video an:

Somit erhalten wir Folgendes System:

Hier können Sie die zweite Gleichung mit 3 multiplizieren und Subtrahieren Sie Term für Term den 2. von der 1. Gleichung. Aber das ist Glück – in der Praxis sind Systeme oft kein Geschenk, und in solchen Fällen spart es Cramers Methode:
, was bedeutet, dass das System über eine einzigartige Lösung verfügt.

Lass uns das Prüfen. Ich verstehe, dass Sie das nicht möchten, aber warum sollten Sie Fehler überspringen, wenn sie absolut nicht übersehen werden können? Setzen wir die gefundene Lösung in die linke Seite jeder Gleichung des Systems ein:

Man erhält die rechten Seiten der entsprechenden Gleichungen, was bedeutet, dass das System korrekt gelöst ist.

Somit ist die gewünschte Näherungsfunktion: – von alle linearen Funktionen Sie ist es, die die experimentellen Daten am besten annähert.

Im Gegensatz zu gerade Abhängigkeit des Umsatzes des Ladens von seiner Fläche, die gefundene Abhängigkeit ist umkehren (Prinzip „je mehr, desto weniger“), und diese Tatsache wird durch das Negativ sofort offenbart Neigung. Funktion sagt uns, dass mit einer Erhöhung eines bestimmten Indikators um 1 Einheit der Wert des abhängigen Indikators abnimmt im mittleren um 0,65 Einheiten. Man sagt: Je höher der Buchweizenpreis, desto weniger wird er verkauft.

Um den Graphen der Näherungsfunktion darzustellen, ermitteln wir ihre beiden Werte:

und führen Sie die Zeichnung aus:


Die konstruierte Gerade heißt Trendlinie (nämlich eine lineare Trendlinie, d. h. im Allgemeinen ist ein Trend nicht unbedingt eine gerade Linie). Jeder kennt den Ausdruck „im Trend liegen“, und ich denke, dieser Begriff bedarf keiner weiteren Kommentare.

Berechnen wir die Summe der quadrierten Abweichungen zwischen empirischen und theoretischen Werten. Geometrisch gesehen ist dies die Summe der Quadrate der Längen der „Himbeer“-Segmente (zwei davon sind so klein, dass sie nicht einmal sichtbar sind).

Fassen wir die Berechnungen in einer Tabelle zusammen:


Auch hier können sie für alle Fälle manuell durchgeführt werden. Für den ersten Punkt gebe ich ein Beispiel:

aber es ist viel effektiver, es auf die bereits bekannte Weise zu tun:

Wir wiederholen noch einmal: Welche Bedeutung hat das erhaltene Ergebnis? Aus alle linearen Funktionen y-Funktion Der Indikator ist der kleinste, d. h. in seiner Familie ist er die beste Näherung. Und hier ist übrigens die letzte Frage des Problems nicht zufällig: Was wäre, wenn die vorgeschlagene Exponentialfunktion wäre? Wäre es besser, die experimentellen Punkte näher zusammenzubringen?

Finden wir die entsprechende Summe der quadratischen Abweichungen – zur Unterscheidung bezeichne ich sie mit dem Buchstaben „Epsilon“. Die Technik ist genau die gleiche:


Und zur Sicherheit noch einmal die Berechnungen zum 1. Punkt:

In Excel verwenden wir die Standardfunktion EXP (Syntax finden Sie in der Excel-Hilfe).

Abschluss: , was bedeutet, dass die Exponentialfunktion die experimentellen Punkte schlechter annähert als eine Gerade .

Aber hier ist zu beachten, dass es „schlimmer“ ist bedeutet noch nicht, Was ist falsch. Jetzt habe ich einen Graphen dieser Exponentialfunktion erstellt – und er verläuft auch in der Nähe der Punkte - so sehr, dass es ohne analytische Forschung schwierig ist zu sagen, welche Funktion genauer ist.

Damit ist die Lösung abgeschlossen und ich kehre zur Frage nach den natürlichen Werten des Arguments zurück. In verschiedenen Studien, meist wirtschaftlicher oder soziologischer Art, werden natürliche „X“ zur Nummerierung von Monaten, Jahren oder anderen gleichen Zeitintervallen verwendet. Betrachten Sie zum Beispiel das folgende Problem.

Nach der Nivellierung erhalten wir eine Funktion der folgenden Form: g (x) = x + 1 3 + 1 .

Wir können diese Daten mithilfe der linearen Beziehung y = a x + b annähern, indem wir die entsprechenden Parameter berechnen. Dazu müssen wir die sogenannte Methode der kleinsten Quadrate anwenden. Sie müssen außerdem eine Zeichnung anfertigen, um zu prüfen, welche Linie die experimentellen Daten am besten ausrichtet.

Yandex.RTB R-A-339285-1

Was genau ist OLS (Methode der kleinsten Quadrate)?

Das Wichtigste, was wir tun müssen, ist, solche linearen Abhängigkeitskoeffizienten zu finden, bei denen der Wert der Funktion zweier Variablen F (a, b) = ∑ i = 1 n (y i - (a x i + b)) 2 sein wird am kleinsten. Mit anderen Worten, für bestimmte Werte von a und b wird die Summe der quadrierten Abweichungen der dargestellten Daten von der resultierenden Geraden einen Mindestwert haben. Dies ist die Bedeutung der Methode der kleinsten Quadrate. Um das Beispiel zu lösen, müssen wir lediglich das Extremum der Funktion zweier Variablen ermitteln.

So leiten Sie Formeln zur Berechnung von Koeffizienten ab

Um Formeln zur Berechnung von Koeffizienten abzuleiten, müssen Sie ein Gleichungssystem mit zwei Variablen erstellen und lösen. Dazu berechnen wir die partiellen Ableitungen des Ausdrucks F (a, b) = ∑ i = 1 n (y i - (a x i + b)) 2 nach a und b und setzen sie mit 0 gleich.

δ F (a , b) δ a = 0 δ F (a , b) δ b = 0 ⇔ - 2 ∑ i = 1 n (y i - (a x i + b)) x i = 0 - 2 ∑ i = 1 n ( y i - (a x i + b)) = 0 ⇔ a ∑ i = 1 n x i 2 + b ∑ i = 1 n x i = ∑ i = 1 n x i y i a ∑ i = 1 n x i + ∑ i = 1 n b = ∑ i = 1 n y i ⇔ a ∑ i = 1 n x i 2 + b ∑ i = 1 n x i = ∑ i = 1 n x i y i a ∑ i = 1 n x i + n b = ∑ i = 1 n y i

Um ein Gleichungssystem zu lösen, können Sie beliebige Methoden verwenden, beispielsweise die Substitution oder die Cramer-Methode. Als Ergebnis sollten wir über Formeln verfügen, mit denen sich Koeffizienten mithilfe der Methode der kleinsten Quadrate berechnen lassen.

n ∑ i = 1 n x i y i - ∑ i = 1 n x i ∑ i = 1 n y i n ∑ i = 1 n - ∑ i = 1 n x i 2 b = ∑ i = 1 n y i - a ∑ i = 1 n x i n

Wir haben die Werte der Variablen berechnet, bei denen die Funktion vorliegt
F (a , b) = ∑ i = 1 n (y i - (a x i + b)) 2 nimmt den Minimalwert an. Im dritten Absatz werden wir beweisen, warum es genau so ist.

Dies ist die praktische Anwendung der Methode der kleinsten Quadrate. Seine Formel, die zum Ermitteln des Parameters a verwendet wird, umfasst ∑ i = 1 n x i, ∑ i = 1 n y i, ∑ i = 1 n x i y i, ∑ i = 1 n x i 2 sowie den Parameter
n – es bezeichnet die Menge der experimentellen Daten. Wir empfehlen Ihnen, jeden Betrag separat zu berechnen. Der Wert des Koeffizienten b wird unmittelbar nach a berechnet.

Kehren wir zum ursprünglichen Beispiel zurück.

Beispiel 1

Hier ist n gleich fünf. Um die Berechnung der in den Koeffizientenformeln enthaltenen erforderlichen Beträge einfacher zu gestalten, füllen wir die Tabelle aus.

i=1 i=2 i=3 i=4 ich=5 ∑ i = 1 5
x i 0 1 2 4 5 12
y i 2 , 1 2 , 4 2 , 6 2 , 8 3 12 , 9
x i y i 0 2 , 4 5 , 2 11 , 2 15 33 , 8
x i 2 0 1 4 16 25 46

Lösung

Die vierte Zeile enthält die Daten, die durch Multiplikation der Werte aus der zweiten Zeile mit den Werten der dritten Zeile für jedes einzelne i erhalten werden. Die fünfte Zeile enthält die Daten aus der zweiten, quadriert. Die letzte Spalte zeigt die Summen der Werte einzelner Zeilen.

Lassen Sie uns die Methode der kleinsten Quadrate verwenden, um die benötigten Koeffizienten a und b zu berechnen. Ersetzen Sie dazu die erforderlichen Werte aus der letzten Spalte und berechnen Sie die Beträge:

n ∑ i = 1 n x i y i - ∑ i = 1 n x i ∑ i = 1 n y i n ∑ i = 1 n - ∑ i = 1 n x i 2 b = ∑ i = 1 n y i - a ∑ i = 1 n x i n ⇒ a = 5 33, 8 - 12 12, 9 5 46 - 12 2 b = 12, 9 - a 12 5 ⇒ a ≈ 0, 165 b ≈ 2, 184

Es stellt sich heraus, dass die erforderliche Näherungsgerade wie folgt aussehen wird: y = 0, 165 x + 2, 184. Jetzt müssen wir bestimmen, welche Linie die Daten besser annähert – g (x) = x + 1 3 + 1 oder 0, 165 x + 2, 184. Lassen Sie uns mit der Methode der kleinsten Quadrate schätzen.

Um den Fehler zu berechnen, müssen wir die Summe der quadratischen Abweichungen der Daten von den Geraden σ 1 = ∑ i = 1 n (y i - (a x i + b i)) 2 und σ 2 = ∑ i = 1 n (y i) ermitteln - g (x i)) 2, der Mindestwert entspricht einer geeigneteren Linie.

σ 1 = ∑ i = 1 n (y i - (a x i + b i)) 2 = = ∑ i = 1 5 (y i - (0, 165 x i + 2, 184)) 2 ≈ 0, 019 σ 2 = ∑ i = 1 n (y i - g (x i)) 2 = = ∑ i = 1 5 (y i - (x i + 1 3 + 1)) 2 ≈ 0,096

Antwort: da σ 1< σ 2 , то прямой, наилучшим образом аппроксимирующей исходные данные, будет
y = 0,165 x + 2,184.

Die Methode der kleinsten Quadrate ist in der grafischen Darstellung deutlich dargestellt. Die rote Linie markiert die Gerade g(x) = x + 1 3 + 1, die blaue Linie markiert y = 0, 165 x + 2, 184. Die Originaldaten sind durch rosa Punkte gekennzeichnet.

Lassen Sie uns erklären, warum genau solche Näherungen benötigt werden.

Sie können bei Aufgaben eingesetzt werden, die eine Datenglättung erfordern, sowie bei Aufgaben, bei denen Daten interpoliert oder extrapoliert werden müssen. Beispielsweise könnte man in dem oben diskutierten Problem den Wert der beobachteten Größe y bei x = 3 oder bei x = 6 finden. Solchen Beispielen haben wir einen eigenen Artikel gewidmet.

Beweis der OLS-Methode

Damit die Funktion bei der Berechnung von a und b einen minimalen Wert annimmt, ist es notwendig, dass an einem bestimmten Punkt die Matrix der quadratischen Form des Differentials der Funktion der Form F (a, b) = ∑ i = ist 1 n (y i - (a x i + b)) 2 ist positiv definit. Wir zeigen Ihnen, wie es aussehen sollte.

Beispiel 2

Wir haben ein Differential zweiter Ordnung der folgenden Form:

d 2 F (a ; b) = δ 2 F (a ; b) δ a 2 d 2 a + 2 δ 2 F (a ; b) δ a δ b d a d b + δ 2 F (a ; b) δ b 2 d 2 b

Lösung

δ 2 F (a ; b) δ a 2 = δ δ F (a ; b) δ a δ a = = δ - 2 ∑ i = 1 n (y i - (a x i + b)) x i δ a = 2 ∑ i = 1 n (x i) 2 δ 2 F (a; b) δ a δ b = δ δ F (a; b) δ a δ b = = δ - 2 ∑ i = 1 n (y i - (a x i + b) ) x i δ b = 2 ∑ i = 1 n x i δ 2 F (a ; b) δ b 2 = δ δ F (a ; b) δ b δ b = δ - 2 ∑ i = 1 n (y i - (a x i + b)) δ b = 2 ∑ i = 1 n (1) = 2 n

Mit anderen Worten, wir können es so schreiben: d 2 F (a ; b) = 2 ∑ i = 1 n (x i) 2 d 2 a + 2 2 ∑ x i i = 1 n d a d b + (2 n) d 2 b.

Wir haben eine Matrix der quadratischen Form M = 2 ∑ i = 1 n (x i) 2 2 ∑ i = 1 n x i 2 ∑ i = 1 n x i 2 n erhalten.

In diesem Fall ändern sich die Werte einzelner Elemente in Abhängigkeit von a und b nicht. Ist diese Matrix positiv definit? Um diese Frage zu beantworten, prüfen wir, ob die Winkelminorwerte positiv sind.

Wir berechnen den Nebenwinkel erster Ordnung: 2 ∑ i = 1 n (x i) 2 > 0 . Da die Punkte x i nicht zusammenfallen, ist die Ungleichung streng. Wir werden dies bei weiteren Berechnungen berücksichtigen.

Wir berechnen den Minor-Winkel zweiter Ordnung:

d e t (M) = 2 ∑ i = 1 n (x i) 2 2 ∑ i = 1 n x i 2 ∑ i = 1 n x i 2 n = 4 n ∑ i = 1 n (x i) 2 - ∑ i = 1 n x i 2

Danach beweisen wir die Ungleichung n ∑ i = 1 n (x i) 2 - ∑ i = 1 n x i 2 > 0 mithilfe mathematischer Induktion.

  1. Prüfen wir, ob diese Ungleichung für ein beliebiges n gilt. Nehmen wir 2 und berechnen:

2 ∑ i = 1 2 (x i) 2 - ∑ i = 1 2 x i 2 = 2 x 1 2 + x 2 2 - x 1 + x 2 2 = = x 1 2 - 2 x 1 x 2 + x 2 2 = x 1 + x 2 2 > 0

Wir haben eine korrekte Gleichheit erhalten (wenn die Werte x 1 und x 2 nicht übereinstimmen).

  1. Nehmen wir an, dass diese Ungleichung für n gilt, d. h. n ∑ i = 1 n (x i) 2 - ∑ i = 1 n x i 2 > 0 – wahr.
  2. Jetzt werden wir die Gültigkeit für n + 1 beweisen, d.h. dass (n + 1) ∑ i = 1 n + 1 (x i) 2 - ∑ i = 1 n + 1 x i 2 > 0, wenn n ∑ i = 1 n (x i) 2 - ∑ i = 1 n x i 2 > 0 .

Wir berechnen:

(n + 1) ∑ i = 1 n + 1 (x i) 2 - ∑ i = 1 n + 1 x i 2 = = (n + 1) ∑ i = 1 n (x i) 2 + x n + 1 2 - ∑ i = 1 n x i + x n + 1 2 = = n ∑ i = 1 n (x i) 2 + n x n + 1 2 + ∑ i = 1 n (x i) 2 + x n + 1 2 - - ∑ i = 1 n x i 2 + 2 x n + 1 ∑ i = 1 n x i + x n + 1 2 = = ∑ i = 1 n (x i) 2 - ∑ i = 1 n x i 2 + n x n + 1 2 - x n + 1 ∑ i = 1 n x i + ∑ i = 1 n (x i) 2 = = ∑ i = 1 n (x i) 2 - ∑ i = 1 n x i 2 + x n + 1 2 - 2 x n + 1 x 1 + x 1 2 + + x n + 1 2 - 2 x n + 1 x 2 + x 2 2 + . . . + x n + 1 2 - 2 x n + 1 x 1 + x n 2 = = n ∑ i = 1 n (x i) 2 - ∑ i = 1 n x i 2 + + (x n + 1 - x 1) 2 + (x n + 1 - x 2) 2 + . . . + (x n - 1 - x n) 2 > 0

Der in geschweifte Klammern eingeschlossene Ausdruck ist größer als 0 (basierend auf dem, was wir in Schritt 2 angenommen haben), und die übrigen Terme sind größer als 0, da es sich bei ihnen alles um Zahlenquadrate handelt. Wir haben die Ungleichheit bewiesen.

Antwort: Die gefundenen a und b entsprechen dem kleinsten Wert der Funktion F (a, b) = ∑ i = 1 n (y i - (a x i + b)) 2, was bedeutet, dass sie die erforderlichen Parameter der Methode der kleinsten Quadrate sind (LSM).

Wenn Sie einen Fehler im Text bemerken, markieren Sie ihn bitte und drücken Sie Strg+Eingabetaste

  • Lernprogramm

Einführung

Ich bin Mathematiker und Programmierer. Der größte Sprung in meiner Karriere war, als ich sagen lernte: "Ich verstehe nichts!" Jetzt schäme ich mich nicht, der Koryphäe der Wissenschaft zu sagen, dass er mir einen Vortrag hält, dass ich nicht verstehe, was er, die Koryphäe, mir sagt. Und es ist sehr schwierig. Ja, es ist schwierig und peinlich, seine Unwissenheit zuzugeben. Wer gibt gerne zu, dass er die Grundlagen einer Sache nicht kennt? Berufsbedingt muss ich sehr viele Präsentationen und Vorträge besuchen, bei denen ich, wie ich zugeben muss, in den allermeisten Fällen schlafen möchte, weil ich nichts verstehe. Aber ich verstehe es nicht, denn das große Problem der aktuellen Situation in der Wissenschaft liegt in der Mathematik. Es wird davon ausgegangen, dass alle Zuhörer mit absolut allen Bereichen der Mathematik vertraut sind (was absurd ist). Zuzugeben, dass man nicht weiß, was ein Derivat ist (wir werden etwas später darüber sprechen), was es ist, ist beschämend.

Aber ich habe gelernt zu sagen, dass ich nicht weiß, was Multiplikation ist. Ja, ich weiß nicht, was eine Subalgebra über einer Lie-Algebra ist. Ja, ich weiß nicht, warum man im Leben quadratische Gleichungen braucht. Übrigens, wenn Sie sicher sind, dass Sie es wissen, dann haben wir etwas zu besprechen! Mathematik ist eine Reihe von Tricks. Mathematiker versuchen, die Öffentlichkeit zu verwirren und einzuschüchtern; Wo es keine Verwirrung gibt, gibt es keinen Ruf, keine Autorität. Ja, es ist prestigeträchtig, in einer möglichst abstrakten Sprache zu sprechen, was völliger Unsinn ist.

Wissen Sie, was ein Derivat ist? Höchstwahrscheinlich werden Sie mir etwas über die Grenze des Differenzverhältnisses sagen. Im ersten Jahr des Mathematik- und Mechanikstudiums an der Staatlichen Universität St. Petersburg erzählte mir Viktor Petrowitsch Chawin bestimmt Ableitung als Koeffizient des ersten Termes der Taylor-Reihe der Funktion an einem Punkt (dies war eine separate Übung zur Bestimmung der Taylor-Reihe ohne Ableitungen). Ich habe lange über diese Definition gelacht, bis ich endlich verstand, worum es ging. Die Ableitung ist nichts anderes als ein einfaches Maß dafür, wie ähnlich die Funktion, die wir differenzieren, der Funktion y=x, y=x^2, y=x^3 ist.

Ich habe jetzt die Ehre, vor Studenten Vorlesungen zu halten besorgt Mathematik. Wenn Sie Angst vor Mathematik haben, sind wir auf dem gleichen Weg. Sobald Sie versuchen, einen Text zu lesen, und es Ihnen vorkommt, dass er zu kompliziert ist, wissen Sie, dass er schlecht geschrieben ist. Ich behaupte, dass es keinen einzigen Bereich der Mathematik gibt, der nicht „an den Fingern“ diskutiert werden kann, ohne an Genauigkeit zu verlieren.

Aufgabe für die nahe Zukunft: Ich habe meinen Schülern aufgetragen, zu verstehen, was ein linearer quadratischer Regler ist. Seien Sie nicht schüchtern, verbringen Sie drei Minuten Ihres Lebens und folgen Sie dem Link. Wenn Sie nichts verstehen, sind wir auf dem gleichen Weg. Ich (ein professioneller Mathematiker und Programmierer) habe auch nichts verstanden. Und ich versichere Ihnen, Sie können es „an Ihren Fingern“ herausfinden. Im Moment weiß ich nicht, was es ist, aber ich versichere Ihnen, dass wir es herausfinden können.

Die erste Vorlesung, die ich meinen Studenten halten werde, nachdem sie voller Entsetzen auf mich zugerannt kommen und sagen, dass ein linear-quadratischer Regler eine schreckliche Sache ist, die man in seinem Leben nie beherrschen wird, lautet: Methoden der kleinsten Quadrate. Können Sie lineare Gleichungen lösen? Wenn Sie diesen Text lesen, dann höchstwahrscheinlich nicht.

Wenn also zwei Punkte (x0, y0), (x1, y1), zum Beispiel (1,1) und (3,2), gegeben sind, besteht die Aufgabe darin, die Gleichung der Geraden zu finden, die durch diese beiden Punkte verläuft:

Illustration

Diese Zeile sollte eine Gleichung wie die folgende haben:

Hier sind uns Alpha und Beta unbekannt, aber zwei Punkte dieser Linie sind bekannt:

Wir können diese Gleichung in Matrixform schreiben:

Hier sollten wir einen lyrischen Exkurs machen: Was ist eine Matrix? Eine Matrix ist nichts anderes als ein zweidimensionales Array. Dies ist eine Art der Datenspeicherung; es sollten keine weiteren Bedeutungen damit verbunden werden. Es hängt von uns ab, wie wir eine bestimmte Matrix genau interpretieren. In regelmäßigen Abständen interpretiere ich es als lineare Abbildung, in regelmäßigen Abständen als quadratische Form und manchmal einfach als eine Menge von Vektoren. Dies alles wird im Kontext geklärt.

Ersetzen wir konkrete Matrizen durch ihre symbolische Darstellung:

Dann kann (Alpha, Beta) leicht gefunden werden:

Genauer gesagt für unsere vorherigen Daten:

Was zu der folgenden Gleichung der Geraden führt, die durch die Punkte (1,1) und (3,2) verläuft:

Okay, hier ist alles klar. Finden wir die Gleichung der durchgehenden Geraden drei Punkte: (x0,y0), (x1,y1) und (x2,y2):

Oh-oh-oh, aber wir haben drei Gleichungen für zwei Unbekannte! Ein normaler Mathematiker wird sagen, dass es keine Lösung gibt. Was wird der Programmierer sagen? Und er wird zunächst das bisherige Gleichungssystem in folgender Form umschreiben:

In unserem Fall sind die Vektoren i, j, b dreidimensional, daher gibt es (im allgemeinen Fall) keine Lösung für dieses System. Jeder Vektor (alpha\*i + beta\*j) liegt in der Ebene, die von den Vektoren (i, j) aufgespannt wird. Wenn b nicht zu dieser Ebene gehört, gibt es keine Lösung (Gleichheit kann in der Gleichung nicht erreicht werden). Was zu tun ist? Suchen wir nach einem Kompromiss. Bezeichnen wir mit e(Alpha, Beta) genau, wie weit wir die Gleichberechtigung noch nicht erreicht haben:

Und wir werden versuchen, diesen Fehler zu minimieren:

Warum quadratisch?

Wir suchen nicht nur nach dem Minimum der Norm, sondern nach dem Minimum des Quadrats der Norm. Warum? Der Minimalpunkt selbst fällt zusammen und das Quadrat ergibt eine glatte Funktion (eine quadratische Funktion der Argumente (Alpha, Beta)), während einfach die Länge eine kegelförmige Funktion ergibt, die am Minimalpunkt nicht differenzierbar ist. Brr. Ein Quadrat ist bequemer.

Offensichtlich wird der Fehler minimiert, wenn der Vektor e orthogonal zu der von den Vektoren aufgespannten Ebene ich Und J.

Illustration

Mit anderen Worten: Wir suchen eine Gerade, bei der die Summe der Quadratlängen der Abstände aller Punkte zu dieser Geraden minimal ist:

UPDATE: Ich habe hier ein Problem, der Abstand zur Geraden sollte vertikal gemessen werden und nicht durch orthogonale Projektion. Dieser Kommentator hat recht.

Illustration

Mit ganz anderen Worten (vorsichtig, schlecht formalisiert, aber es sollte klar sein): Wir nehmen alle möglichen Linien zwischen allen Punktpaaren und suchen nach der Durchschnittslinie zwischen allen:

Illustration

Eine andere Erklärung ist einfach: Wir befestigen eine Feder zwischen allen Datenpunkten (hier haben wir drei) und der geraden Linie, die wir suchen, und die gerade Linie des Gleichgewichtszustands ist genau das, was wir suchen.

Minimale quadratische Form

Also, angesichts dieses Vektors B und eine Ebene, die von den Spaltenvektoren der Matrix aufgespannt wird A(in diesem Fall (x0,x1,x2) und (1,1,1)) suchen wir nach dem Vektor e mit einem minimalen Längenquadrat. Offensichtlich ist das Minimum nur für den Vektor erreichbar e, orthogonal zur Ebene, die von den Spaltenvektoren der Matrix aufgespannt wird A:

Mit anderen Worten, wir suchen nach einem Vektor x=(Alpha, Beta), so dass:

Ich möchte Sie daran erinnern, dass dieser Vektor x=(alpha, beta) das Minimum der quadratischen Funktion ||e(alpha, beta)||^2 ist:

Hier ist es nützlich, sich daran zu erinnern, dass die Matrix auch als quadratische Form interpretiert werden kann, beispielsweise kann die Identitätsmatrix ((1,0),(0,1)) als Funktion x^2 + y^ interpretiert werden 2:

quadratische Form

All diese Gymnastik ist unter dem Namen lineare Regression bekannt.

Laplace-Gleichung mit Dirichlet-Randbedingung

Nun die einfachste eigentliche Aufgabe: Es gibt eine bestimmte triangulierte Oberfläche, die geglättet werden muss. Laden wir zum Beispiel ein Modell meines Gesichts:

Der ursprüngliche Commit ist verfügbar. Um externe Abhängigkeiten zu minimieren, habe ich den Code meines Software-Renderers übernommen, bereits auf Habré. Um ein lineares System zu lösen, verwende ich OpenNL. Dies ist ein hervorragender Löser, der jedoch sehr schwierig zu installieren ist: Sie müssen zwei Dateien (.h+.c) in den Ordner mit Ihrem Projekt kopieren. Die gesamte Glättung erfolgt mit dem folgenden Code:

Für (int d=0; d<3; d++) { nlNewContext(); nlSolverParameteri(NL_NB_VARIABLES, verts.size()); nlSolverParameteri(NL_LEAST_SQUARES, NL_TRUE); nlBegin(NL_SYSTEM); nlBegin(NL_MATRIX); for (int i=0; i<(int)verts.size(); i++) { nlBegin(NL_ROW); nlCoefficient(i, 1); nlRightHandSide(verts[i][d]); nlEnd(NL_ROW); } for (unsigned int i=0; i&face = faces[i]; für (int j=0; j<3; j++) { nlBegin(NL_ROW); nlCoefficient(face[ j ], 1); nlCoefficient(face[(j+1)%3], -1); nlEnd(NL_ROW); } } nlEnd(NL_MATRIX); nlEnd(NL_SYSTEM); nlSolve(); for (int i=0; i<(int)verts.size(); i++) { verts[i][d] = nlGetVariable(i); } }

Die X-, Y- und Z-Koordinaten sind trennbar, ich glätte sie separat. Das heißt, ich löse drei lineare Gleichungssysteme mit jeweils einer Anzahl von Variablen, die der Anzahl der Eckpunkte in meinem Modell entspricht. Die ersten n Zeilen der Matrix A haben nur eine 1 pro Zeile, und die ersten n Zeilen des Vektors b haben die ursprünglichen Modellkoordinaten. Das heißt, ich binde eine Feder zwischen der neuen Position des Scheitelpunkts und der alten Position des Scheitelpunkts – die neuen sollten sich nicht zu weit von den alten entfernen.

Alle nachfolgenden Zeilen der Matrix A (faces.size()*3 = Anzahl der Kanten aller Dreiecke im Netz) haben ein Vorkommen von 1 und ein Vorkommen von -1, wobei der Vektor b null entgegengesetzte Komponenten hat. Das bedeutet, dass ich an jeder Kante unseres Dreiecksnetzes eine Feder anlege: Alle Kanten versuchen, den gleichen Scheitelpunkt wie ihr Start- und Endpunkt zu erreichen.

Noch einmal: Alle Scheitelpunkte sind Variablen und können sich nicht weit von ihrer ursprünglichen Position entfernen, aber gleichzeitig versuchen sie, einander ähnlich zu werden.

Hier ist das Ergebnis:

Alles wäre in Ordnung, das Modell ist wirklich geglättet, aber es hat sich von seiner ursprünglichen Kante entfernt. Ändern wir den Code ein wenig:

Für (int i=0; i<(int)verts.size(); i++) { float scale = border[i] ? 1000: 1; nlBegin(NL_ROW); nlCoefficient(i, scale); nlRightHandSide(scale*verts[i][d]); nlEnd(NL_ROW); }

In unserer Matrix A füge ich für die Eckpunkte, die am Rand liegen, keine Zeile aus der Kategorie v_i = verts[i][d] hinzu, sondern 1000*v_i = 1000*verts[i][d]. Was ändert sich? Und das verändert unsere quadratische Form des Fehlers. Nun kostet eine einzelne Abweichung von oben am Rand nicht wie bisher eine Einheit, sondern 1000*1000 Einheiten. Das heißt, wir haben an den äußersten Scheitelpunkten eine stärkere Feder aufgehängt, die Lösung wird es vorziehen, die anderen stärker zu dehnen. Hier ist das Ergebnis:

Verdoppeln wir die Federkraft zwischen den Eckpunkten:
nlCoefficient(face[ j ], 2); nlCoefficient(face[(j+1)%3], -2);

Logisch, dass die Oberfläche glatter geworden ist:

Und jetzt noch hundertmal stärker:

Was ist das? Stellen Sie sich vor, wir hätten einen Drahtring in Seifenwasser getaucht. Infolgedessen wird der resultierende Seifenfilm versuchen, die geringstmögliche Krümmung aufzuweisen und den Rand – unseren Drahtring – zu berühren. Genau das haben wir erreicht, indem wir den Rand fixiert und innen eine glatte Oberfläche gewünscht haben. Herzlichen Glückwunsch, wir haben gerade die Laplace-Gleichung mit Dirichlet-Randbedingungen gelöst. Hört sich cool an? Aber in Wirklichkeit müssen Sie nur ein lineares Gleichungssystem lösen.

Poisson-Gleichung

Erinnern wir uns an einen anderen coolen Namen.

Nehmen wir an, ich habe ein Bild wie dieses:

Sieht für alle gut aus, aber mir gefällt der Stuhl nicht.

Ich schneide das Bild in zwei Hälften:



Und ich werde mit meinen Händen einen Stuhl auswählen:

Dann ziehe ich alles, was in der Maske weiß ist, auf die linke Seite des Bildes und sage gleichzeitig im gesamten Bild, dass die Differenz zwischen zwei benachbarten Pixeln gleich der Differenz zwischen zwei benachbarten Pixeln auf der rechten Seite sein sollte Bild:

Für (int i=0; i

Hier ist das Ergebnis:

Code und Bilder verfügbar

  • Programmierung
    • Lernprogramm

    Einführung

    Ich bin Mathematiker und Programmierer. Der größte Sprung in meiner Karriere war, als ich sagen lernte: "Ich verstehe nichts!" Jetzt schäme ich mich nicht, der Koryphäe der Wissenschaft zu sagen, dass er mir einen Vortrag hält, dass ich nicht verstehe, was er, die Koryphäe, mir sagt. Und es ist sehr schwierig. Ja, es ist schwierig und peinlich, seine Unwissenheit zuzugeben. Wer gibt gerne zu, dass er die Grundlagen einer Sache nicht kennt? Berufsbedingt muss ich sehr viele Präsentationen und Vorträge besuchen, bei denen ich, wie ich zugeben muss, in den allermeisten Fällen schlafen möchte, weil ich nichts verstehe. Aber ich verstehe es nicht, denn das große Problem der aktuellen Situation in der Wissenschaft liegt in der Mathematik. Es wird davon ausgegangen, dass alle Zuhörer mit absolut allen Bereichen der Mathematik vertraut sind (was absurd ist). Zuzugeben, dass man nicht weiß, was ein Derivat ist (wir werden etwas später darüber sprechen), was es ist, ist beschämend.

    Aber ich habe gelernt zu sagen, dass ich nicht weiß, was Multiplikation ist. Ja, ich weiß nicht, was eine Subalgebra über einer Lie-Algebra ist. Ja, ich weiß nicht, warum man im Leben quadratische Gleichungen braucht. Übrigens, wenn Sie sicher sind, dass Sie es wissen, dann haben wir etwas zu besprechen! Mathematik ist eine Reihe von Tricks. Mathematiker versuchen, die Öffentlichkeit zu verwirren und einzuschüchtern; Wo es keine Verwirrung gibt, gibt es keinen Ruf, keine Autorität. Ja, es ist prestigeträchtig, in einer möglichst abstrakten Sprache zu sprechen, was völliger Unsinn ist.

    Wissen Sie, was ein Derivat ist? Höchstwahrscheinlich werden Sie mir etwas über die Grenze des Differenzverhältnisses sagen. Im ersten Jahr des Mathematik- und Mechanikstudiums an der Staatlichen Universität St. Petersburg erzählte mir Viktor Petrowitsch Chawin bestimmt Ableitung als Koeffizient des ersten Termes der Taylor-Reihe der Funktion an einem Punkt (dies war eine separate Übung zur Bestimmung der Taylor-Reihe ohne Ableitungen). Ich habe lange über diese Definition gelacht, bis ich endlich verstand, worum es ging. Die Ableitung ist nichts anderes als ein einfaches Maß dafür, wie ähnlich die Funktion, die wir differenzieren, der Funktion y=x, y=x^2, y=x^3 ist.

    Ich habe jetzt die Ehre, vor Studenten Vorlesungen zu halten besorgt Mathematik. Wenn Sie Angst vor Mathematik haben, sind wir auf dem gleichen Weg. Sobald Sie versuchen, einen Text zu lesen, und es Ihnen vorkommt, dass er zu kompliziert ist, wissen Sie, dass er schlecht geschrieben ist. Ich behaupte, dass es keinen einzigen Bereich der Mathematik gibt, der nicht „an den Fingern“ diskutiert werden kann, ohne an Genauigkeit zu verlieren.

    Aufgabe für die nahe Zukunft: Ich habe meinen Schülern aufgetragen, zu verstehen, was ein linearer quadratischer Regler ist. Seien Sie nicht schüchtern, verbringen Sie drei Minuten Ihres Lebens und folgen Sie dem Link. Wenn Sie nichts verstehen, sind wir auf dem gleichen Weg. Ich (ein professioneller Mathematiker und Programmierer) habe auch nichts verstanden. Und ich versichere Ihnen, Sie können es „an Ihren Fingern“ herausfinden. Im Moment weiß ich nicht, was es ist, aber ich versichere Ihnen, dass wir es herausfinden können.

    Die erste Vorlesung, die ich meinen Studenten halten werde, nachdem sie voller Entsetzen auf mich zugerannt kommen und sagen, dass ein linear-quadratischer Regler eine schreckliche Sache ist, die man in seinem Leben nie beherrschen wird, lautet: Methoden der kleinsten Quadrate. Können Sie lineare Gleichungen lösen? Wenn Sie diesen Text lesen, dann höchstwahrscheinlich nicht.

    Wenn also zwei Punkte (x0, y0), (x1, y1), zum Beispiel (1,1) und (3,2), gegeben sind, besteht die Aufgabe darin, die Gleichung der Geraden zu finden, die durch diese beiden Punkte verläuft:

    Illustration

    Diese Zeile sollte eine Gleichung wie die folgende haben:

    Hier sind uns Alpha und Beta unbekannt, aber zwei Punkte dieser Linie sind bekannt:

    Wir können diese Gleichung in Matrixform schreiben:

    Hier sollten wir einen lyrischen Exkurs machen: Was ist eine Matrix? Eine Matrix ist nichts anderes als ein zweidimensionales Array. Dies ist eine Art der Datenspeicherung; es sollten keine weiteren Bedeutungen damit verbunden werden. Es hängt von uns ab, wie wir eine bestimmte Matrix genau interpretieren. In regelmäßigen Abständen interpretiere ich es als lineare Abbildung, in regelmäßigen Abständen als quadratische Form und manchmal einfach als eine Menge von Vektoren. Dies alles wird im Kontext geklärt.

    Ersetzen wir konkrete Matrizen durch ihre symbolische Darstellung:

    Dann kann (Alpha, Beta) leicht gefunden werden:

    Genauer gesagt für unsere vorherigen Daten:

    Was zu der folgenden Gleichung der Geraden führt, die durch die Punkte (1,1) und (3,2) verläuft:

    Okay, hier ist alles klar. Finden wir die Gleichung der durchgehenden Geraden drei Punkte: (x0,y0), (x1,y1) und (x2,y2):

    Oh-oh-oh, aber wir haben drei Gleichungen für zwei Unbekannte! Ein normaler Mathematiker wird sagen, dass es keine Lösung gibt. Was wird der Programmierer sagen? Und er wird zunächst das bisherige Gleichungssystem in folgender Form umschreiben:

    In unserem Fall sind die Vektoren i, j, b dreidimensional, daher gibt es (im allgemeinen Fall) keine Lösung für dieses System. Jeder Vektor (alpha\*i + beta\*j) liegt in der Ebene, die von den Vektoren (i, j) aufgespannt wird. Wenn b nicht zu dieser Ebene gehört, gibt es keine Lösung (Gleichheit kann in der Gleichung nicht erreicht werden). Was zu tun ist? Suchen wir nach einem Kompromiss. Bezeichnen wir mit e(Alpha, Beta) genau, wie weit wir die Gleichberechtigung noch nicht erreicht haben:

    Und wir werden versuchen, diesen Fehler zu minimieren:

    Warum quadratisch?

    Wir suchen nicht nur nach dem Minimum der Norm, sondern nach dem Minimum des Quadrats der Norm. Warum? Der Minimalpunkt selbst fällt zusammen und das Quadrat ergibt eine glatte Funktion (eine quadratische Funktion der Argumente (Alpha, Beta)), während einfach die Länge eine kegelförmige Funktion ergibt, die am Minimalpunkt nicht differenzierbar ist. Brr. Ein Quadrat ist bequemer.

    Offensichtlich wird der Fehler minimiert, wenn der Vektor e orthogonal zu der von den Vektoren aufgespannten Ebene ich Und J.

    Illustration

    Mit anderen Worten: Wir suchen eine Gerade, bei der die Summe der Quadratlängen der Abstände aller Punkte zu dieser Geraden minimal ist:

    UPDATE: Ich habe hier ein Problem, der Abstand zur Geraden sollte vertikal gemessen werden und nicht durch orthogonale Projektion. Der Kommentator hat recht.

    Illustration

    Mit ganz anderen Worten (vorsichtig, schlecht formalisiert, aber es sollte klar sein): Wir nehmen alle möglichen Linien zwischen allen Punktpaaren und suchen nach der Durchschnittslinie zwischen allen:

    Illustration

    Eine andere Erklärung ist einfach: Wir befestigen eine Feder zwischen allen Datenpunkten (hier haben wir drei) und der geraden Linie, die wir suchen, und die gerade Linie des Gleichgewichtszustands ist genau das, was wir suchen.

    Minimale quadratische Form

    Also, angesichts dieses Vektors B und eine Ebene, die von den Spaltenvektoren der Matrix aufgespannt wird A(in diesem Fall (x0,x1,x2) und (1,1,1)) suchen wir nach dem Vektor e mit einem minimalen Längenquadrat. Offensichtlich ist das Minimum nur für den Vektor erreichbar e, orthogonal zur Ebene, die von den Spaltenvektoren der Matrix aufgespannt wird A:

    Mit anderen Worten, wir suchen nach einem Vektor x=(Alpha, Beta), so dass:

    Ich möchte Sie daran erinnern, dass dieser Vektor x=(alpha, beta) das Minimum der quadratischen Funktion ||e(alpha, beta)||^2 ist:

    Hier ist es nützlich, sich daran zu erinnern, dass die Matrix auch als quadratische Form interpretiert werden kann, beispielsweise kann die Identitätsmatrix ((1,0),(0,1)) als Funktion x^2 + y^ interpretiert werden 2:

    quadratische Form

    All diese Gymnastik ist unter dem Namen lineare Regression bekannt.

    Laplace-Gleichung mit Dirichlet-Randbedingung

    Nun die einfachste eigentliche Aufgabe: Es gibt eine bestimmte triangulierte Oberfläche, die geglättet werden muss. Laden wir zum Beispiel ein Modell meines Gesichts:

    Der ursprüngliche Commit ist verfügbar. Um externe Abhängigkeiten zu minimieren, habe ich den Code meines Software-Renderers übernommen, bereits auf Habré. Um ein lineares System zu lösen, verwende ich OpenNL. Dies ist ein hervorragender Löser, der jedoch sehr schwierig zu installieren ist: Sie müssen zwei Dateien (.h+.c) in den Ordner mit Ihrem Projekt kopieren. Die gesamte Glättung erfolgt mit dem folgenden Code:

    Für (int d=0; d<3; d++) { nlNewContext(); nlSolverParameteri(NL_NB_VARIABLES, verts.size()); nlSolverParameteri(NL_LEAST_SQUARES, NL_TRUE); nlBegin(NL_SYSTEM); nlBegin(NL_MATRIX); for (int i=0; i<(int)verts.size(); i++) { nlBegin(NL_ROW); nlCoefficient(i, 1); nlRightHandSide(verts[i][d]); nlEnd(NL_ROW); } for (unsigned int i=0; i&face = faces[i]; für (int j=0; j<3; j++) { nlBegin(NL_ROW); nlCoefficient(face[ j ], 1); nlCoefficient(face[(j+1)%3], -1); nlEnd(NL_ROW); } } nlEnd(NL_MATRIX); nlEnd(NL_SYSTEM); nlSolve(); for (int i=0; i<(int)verts.size(); i++) { verts[i][d] = nlGetVariable(i); } }

    Die X-, Y- und Z-Koordinaten sind trennbar, ich glätte sie separat. Das heißt, ich löse drei lineare Gleichungssysteme mit jeweils einer Anzahl von Variablen, die der Anzahl der Eckpunkte in meinem Modell entspricht. Die ersten n Zeilen der Matrix A haben nur eine 1 pro Zeile, und die ersten n Zeilen des Vektors b haben die ursprünglichen Modellkoordinaten. Das heißt, ich binde eine Feder zwischen der neuen Position des Scheitelpunkts und der alten Position des Scheitelpunkts – die neuen sollten sich nicht zu weit von den alten entfernen.

    Alle nachfolgenden Zeilen der Matrix A (faces.size()*3 = Anzahl der Kanten aller Dreiecke im Netz) haben ein Vorkommen von 1 und ein Vorkommen von -1, wobei der Vektor b null entgegengesetzte Komponenten hat. Das bedeutet, dass ich an jeder Kante unseres Dreiecksnetzes eine Feder anlege: Alle Kanten versuchen, den gleichen Scheitelpunkt wie ihr Start- und Endpunkt zu erreichen.

    Noch einmal: Alle Scheitelpunkte sind Variablen und können sich nicht weit von ihrer ursprünglichen Position entfernen, aber gleichzeitig versuchen sie, einander ähnlich zu werden.

    Hier ist das Ergebnis:

    Alles wäre in Ordnung, das Modell ist wirklich geglättet, aber es hat sich von seiner ursprünglichen Kante entfernt. Ändern wir den Code ein wenig:

    Für (int i=0; i<(int)verts.size(); i++) { float scale = border[i] ? 1000: 1; nlBegin(NL_ROW); nlCoefficient(i, scale); nlRightHandSide(scale*verts[i][d]); nlEnd(NL_ROW); }

    In unserer Matrix A füge ich für die Eckpunkte, die am Rand liegen, keine Zeile aus der Kategorie v_i = verts[i][d] hinzu, sondern 1000*v_i = 1000*verts[i][d]. Was ändert sich? Und das verändert unsere quadratische Form des Fehlers. Nun kostet eine einzelne Abweichung von oben am Rand nicht wie bisher eine Einheit, sondern 1000*1000 Einheiten. Das heißt, wir haben an den äußersten Scheitelpunkten eine stärkere Feder aufgehängt, die Lösung wird es vorziehen, die anderen stärker zu dehnen. Hier ist das Ergebnis:

    Verdoppeln wir die Federkraft zwischen den Eckpunkten:
    nlCoefficient(face[ j ], 2); nlCoefficient(face[(j+1)%3], -2);

    Logisch, dass die Oberfläche glatter geworden ist:

    Und jetzt noch hundertmal stärker:

    Was ist das? Stellen Sie sich vor, wir hätten einen Drahtring in Seifenwasser getaucht. Infolgedessen wird der resultierende Seifenfilm versuchen, die geringstmögliche Krümmung aufzuweisen und den Rand – unseren Drahtring – zu berühren. Genau das haben wir erreicht, indem wir den Rand fixiert und innen eine glatte Oberfläche gewünscht haben. Herzlichen Glückwunsch, wir haben gerade die Laplace-Gleichung mit Dirichlet-Randbedingungen gelöst. Hört sich cool an? Aber in Wirklichkeit müssen Sie nur ein lineares Gleichungssystem lösen.

    Poisson-Gleichung

    Erinnern wir uns an einen anderen coolen Namen.

    Nehmen wir an, ich habe ein Bild wie dieses:

    Sieht für alle gut aus, aber mir gefällt der Stuhl nicht.

    Ich schneide das Bild in zwei Hälften:



    Und ich werde mit meinen Händen einen Stuhl auswählen:

    Dann ziehe ich alles, was in der Maske weiß ist, auf die linke Seite des Bildes und sage gleichzeitig im gesamten Bild, dass die Differenz zwischen zwei benachbarten Pixeln gleich der Differenz zwischen zwei benachbarten Pixeln auf der rechten Seite sein sollte Bild:

    Für (int i=0; i

    Hier ist das Ergebnis:

    Code und Bilder verfügbar