05.05.1 eingebaute mathematische Funktionen
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Title of Series | ||
Number of Parts | 110 | |
Author | ||
License | CC Attribution - NonCommercial - ShareAlike 3.0 Germany: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this | |
Identifiers | 10.5446/9514 (DOI) | |
Publisher | ||
Release Date | ||
Language | ||
Producer |
Content Metadata
Subject Area | |
Genre |
Informatik 1, Winter 2010/201150 / 110
1
2
3
5
6
8
10
12
13
19
25
26
27
30
32
39
42
47
48
49
53
54
55
56
58
59
61
64
66
67
69
70
71
72
78
79
81
82
83
87
92
93
94
96
97
98
99
101
102
106
107
108
109
110
00:00
MathematicsCalculationEnergy conversion efficiencyZahlFunction (mathematics)Variable (mathematics)Angular resolutionIntegerCompilerComputer fileFloating pointFloating pointLogarithmPositionNegative numberExecution unitSineSpecial functionsDevice driverAbsolute valueACCESS <Programm>Negative numberRoundingExponential functionDirection (geometry)Glass floatBlock (periodic table)Inversion (music)Service (economics)Mobile appPhysical quantityLibrary (computing)BitSineLogical constantNatürlicher LogarithmusDisk read-and-write headComputer animation
Transcript: German(auto-generated)
00:01
Was ich im Seminar gesehen hatte, bei der Potenzfunktion, Vorsicht, wenn Sie so was schreiben wie A cirkonflex, wenn ich ihn hier finde, A cirkonflex 2,0, das ist natürlich ganz was anderes, vor allen Dingen geht der cirkonflex nicht für Gleitkommazahlen,
00:21
der cirkonflex ging für ganze Zahlen und bedeutete exklusiv oder, da nicht irritieren lassen, das ist eine andere Geschichte mit dem cirkonflex. Hoch 0,5 sollten wir auch nicht so machen, für hoch 0,5 gibt es eine eigene Funktion, nämlich square root von A in dieser Form,
00:45
da liefert dann hoffentlich auch wirklich die Wurzel, da ist unsere Wurzel.
01:01
Betrag sollte ich gerade noch sagen, da kann man sich gut rein reiten beim Betrag. Im letzten Praktikum gab es schon den Betrag, aber den Betrag für ganze Zahlen, wenn Sie so was haben, int b ist gleich minus 345 und ich will den Betrag haben, dafür gibt es die Funktion abs für absolut Betrag, klar, aber die stand nicht in math h, sondern in standard lib h.
01:43
Da stand sie drin und war für ganze Zahlen zuständig. Die absolut Betragfunktion für Gleitkommazahlen kann dann in c nicht mehr abs heißen, in anderen Sprachen heißt sie dann weiterhin abs, aber in c kann sie nicht mehr abs heißen, weil keine zwei Funktionen in c denselben Namen haben dürfen,
02:01
deshalb heißt sie dann verwirrenderweise f abs, floating, absolut. Also es gibt einmal die abs-Funktion für ganze Zahlen in standard lib und dann gibt es die abs-Funktion für Gleitkommazahlen, ich sollte sagen, das ist eigentlich die für Doppelzahlen, die abs-Funktion, Absolutbetragfunktion für Doppelzahlen
02:22
und sie steht in math h, wie auch immer, gemisch Englisch-Deutsch. Warte einmal gucken, ob ich auch keinen Blödsinn erzählt habe, okay, Sie sehen, das wird aus dem minus 345 die plus 345 und hier gehe ich mit minus 3 mal 3, noch was mal 10 hoch 3 rein und kriege plus 3, noch was, 3, noch was, 10 hoch 3 raus.
02:53
Irgendwas besonderes, log sollte ich gerade noch, log und exp, sollte ich noch erwähnen,
03:02
ich nehme den ganzen Krempel hier mal weg, also wenn ich double b ist gleich log, das ist vielleicht keine gute Idee für eine negative Zahl, da sage ich gleich noch etwas dazu, nehmen wir vielleicht mal was Sinnvolles, 3,0, den Logarithmus aus 3,0.
03:27
Zum allgemeinen Entsetzen ist das der natürliche Logarithmus, also Sie schreiben log, aber das ist der natürliche Logarithmus. Womit muss ich 2,7 noch was potenzieren, damit 3 rauskommt mit 1, noch was. Also was Sie hier als log eintippen ist der natürliche Logarithmus und natürlich
03:44
gibt es dann umgekehrt auch die Exponentialfunktion, exp, das Gegenstück dazu, e hoch 3,
04:02
2,0 mal 10 hoch 1, also 20,085, irgendwas bei 3 hoch 3 kommt schon ungefähr hin, das ist e hoch 3.
04:21
Sinus und Konsorten im Bogenmaß habe ich schon gesagt, also wenn Sie hier 3,14 haben und davon den Sinus, man sollte vielleicht die Hälfte nehmen, 3,14 und davon die Hälfte, Pi halbe 90 Grad, davon den Sinus bilden, gibt das ungefähr,
04:44
das sollte jetzt ungefähr 1 geben, toll toll toll, 0,999999, dicht an der 1. Die Umkehrung wäre der Arcosinus, der heißt hier Asin und nicht Arksin, sondern nur Asin.
05:10
Der Arcosinus von 1 sollte dann wieder Pi halbe sein, das sieht ganz schwer nach Pi halbe aus und entsprechend dann die anderen.
05:29
Also alles im Bogenmaß, Vorsicht an der Stelle, die Zahl Pi, die Zahl Pi ist leider nicht eingebaut,
05:41
bei den meisten C++-Compilern gibt es eine Konstante mit der Zahl Pi, im Standard ist die Konstante aber nicht vorgesehen, das heißt, Sie müssten sich tatsächlich selbst eine Konstante bauen, wenn Sie die Zahl Pi ausdrücklich haben wollen. Zu den Funktionsnamen.
06:00
Wenn ich hier den Sinus schreibe, habe ich eine Funktion, die nimmt Double und liefert Double. Ich hätte ja vielleicht auch gerne eine Funktion, die Floats natürlicherweise verarztet, dass ich sage, rechne mal 3,14 als Float durch 2,0 als Float und jetzt bestimme das Ergebnis mal als Float.
06:33
Alles nur in der kleineren Auflösung, wobei auf dieser Maschine in der Einstellung jetzt Double und Float dieselbe Auflösung haben, typischerweise wäre Double ja 64 Bit und Float wäre 32 Bit.
06:43
Diese Funktion Sinus, wenn ich das so hinschreibe, es würde funktionieren, aber diese Funktion würde erst mal diese Floatzahl C in einen Double umwandeln, einen Double zurückliefern und dann auf dem Weg in diese Floatvariable D würde der Double wieder in einen Float gewandt, das ist keine gute Idee.
07:02
Es gibt eine spezielle Funktion, die Floats haben will und Floats liefert, die heißt dann Sin F, also diese ganzen mathematischen Funktionen ohne weiteres, ohne alles beziehen sich eigentlich auf Double und wenn sie ausdrücklich Floats verarbeiten wollen, können sie einen F dahinter setzen.
07:20
Das kann man dann alles in dieser Meta der Datei mit den entsprechenden Deklarationen sich klitzeklein angucken. Wir sehen hier zum Beispiel die ganzen Fs. F nimmt Float, liefert Float, Ceiling-Exponentialfunktion, der Gleitkomba-Betrag, F ab F nimmt Float, liefert Float und so weiter.
07:45
Aber es gibt auch die ganze Serie. Wo ist sie denn hier oben? Sehen Sie, was haben wir denn eben hier? Ach du lieber Himmel, Kursus superquereloquus will ich jetzt nicht so unbedingt. Und ein paar gewöhnliche, da kommen die gewöhnlichen. Der Cosinus, wenn Sie nur Cosinus schreiben, nimmt der Double, liefert Double, was im Zweifelsfall zu viel des Guten ist.
08:08
Also wäre eine geschickte Idee, die richtige Funktion rauszupicken, Floats mit Sin F zu verarzten und Doubles mit Sin zu verarzten. Es gibt auch in C99 einen Trick, dass das automatisch geht.
08:23
Fußnote, wenn Sie nicht Math H, den Header von Maths inkludieren, das heißt tgmath.h, Type Generic Mathematics, dann können Sie ihm mal Sinn schreiben und er macht das automatisch.
08:43
Was passiert, wenn jetzt Ganzzahlen ins Spiel kommen? Was passiert, wenn ich sage, was mache ich hier mal? Eine schöne große Double Zahl und die weise ich jetzt einem Integer zu, int b gleich a.
09:01
Das geht nicht mehr ganz so billig, dass jetzt Bits abgeschnitten würden, aber es passiert netterweise von der Idee her dasselbe. Wenn Sie so eine Gleitkommazahl einem Integer zuweisen und die Gleitkommazahl nicht zu groß ist, die darf natürlich jetzt nicht größer als 32.000 noch was sein.
09:22
Wenn diese Gleitkommazahl nicht zu groß ist und nicht zu negativ ist, dann werden die Nachkommastellen abgeschnitten dabei. Also dieses b wird dann einfach 234 werden. Es wird immer zum Ursprung, es wird gerundet, aber immer zum Ursprung hin. Es wird nicht kaufmännisch gerundet.
09:42
In dieser Form, hier wäre auch die kaufmännische Rundung 234, aber wir gucken uns gerade nochmal 234,9 an. Auch in diesem Fall wird es 234 werden. Es wird immer Richtung Ursprung gerundet, nicht kaufmännisch, immer noch 234, nicht kaufmännisch.
10:04
Dafür gibt es eine eigene Funktion, der ganz billige Trick ist. Es gibt einen total billigen Trick, der funktioniert aber nur für positive Zahlen. Wenn Sie addieren vorher 0,5 dazu, das ist der ganz billige Trick, wenn man nicht die extra Funktion aufrufen will, dann wird ja aus den 234,99 irgendwas 235,49 irgendwas.
10:27
Und wenn ich jetzt zum Ursprung hin runde, stimmt es, aber das ist ein billiger Trick. Es gibt auch offizielle Funktionen, die richtig runden. Also wenn Sie einfach nur zuweisen, wird positiv wie negativ nach dem Komma abgeschnitten.
10:41
Offiziell heißt das dann Rundung in Richtung Ursprung. Das ist die eine Richtung, die andere Richtung funktioniert natürlich klar offensichtlich, wenn Sie eine integer Zahl haben und weisen integer bla bla bla.
11:02
Ganz so viel, wenn Sie die integer Zahl dem Double zuweisen, das haut natürlich hin.
Recommendations
Series of 28 media