This commit is contained in:
Miloslav Ciz 2024-12-19 16:48:05 +01:00
parent 80d186311f
commit 98c18cbc39
18 changed files with 1926 additions and 1921 deletions

14
sin.md
View file

@ -1,6 +1,6 @@
# Sine
Sine, abbreviated *sin*, is a [trigonometric](trigonometry.md) [function](function.md) that simply said models a smooth oscillation, it is one of the most important and basic functions in geometry, [mathematics](math.md) and [physics](physics.md), and of course in [programming](programming.md). Along with [cosine](cos.md), [tangent](tan.md) and [cotangent](cot.md) it belongs to a group of functions that can be defined by ratios of sides of a right [triangle](triangle.md) depending on one of the angles in it (hence *trigonometric* -- "triangle measuring"). If some measurement looks like sine function, we say it is *harmonic*. This is very common in nature and technology, e.g. a weight on a spring goes up and down by this function, [alternating current](ac.md) voltage has the sine shape (because it is generated by a circular motion), the amount of light falling onto a surface depends on the light angle via sine function etc.
Sine, abbreviated *sin*, is a [trigonometric](trigonometry.md) [function](function.md) that, simply stated, models a smooth oscillation, it is one of the most important and basic functions in geometry, [mathematics](math.md) and [physics](physics.md), and of course in [programming](programming.md) as well. Along with [cosine](cos.md), [tangent](tan.md) and [cotangent](cot.md) it belongs to a group of functions that can be defined by ratios of sides of a right [triangle](triangle.md) depending on one of the angles in it (hence *trigonometric* -- "triangle measuring"). If some measurement looks like a sine function, we say it is *harmonic*. This observation is very common in nature and technology, e.g. a weight on a spring goes up and down following this function's shape, [alternating current](ac.md) voltage has the sine shape (because it is generated by a circular motion), the amount of light falling onto a surface depends on the light angle via sine function etc.
The function is most commonly defined using a right triangle as follows. Consider the following triangle:
@ -16,7 +16,7 @@ The function is most commonly defined using a right triangle as follows. Conside
b
```
*Sin(A)*, where *A* is the angle between side *b* and *c*, is the ratio *a* / *c*. The function can be defined in many other ways, for example it is the curve we get when tracking only one direction (e.g. horizontal) of a point moving alongside circle (well, in the end it's actually related to the triangle definition) -- imagine something making a circular motion while casting a shadow onto a nearby wall (in a direction that's in the plane of rotation), the shadow will go up and down by sine of time. It can also be defined as a solution to some [differential equations](differential_equation.md) etc.
*Sin(A)*, where *A* is the angle between side *b* and *c*, is the ratio *a* / *c*. The function can be defined in many other ways, for example it is the curve we get when tracking only one direction (e.g. horizontal) of a point moving along a circular path (well, in the end it's actually related to the triangle definition) -- imagine something making a circular motion while casting a shadow onto a nearby wall (in a direction that's in the plane of rotation), the shadow will go up and down by sine of time. It can also be defined as a solution to some [differential equations](differential_equation.md) etc.
The graph of the sine function is following:
@ -32,9 +32,9 @@ The graph of the sine function is following:
-1 |
```
Basically we'll observe a sine function in places where something oscillates naturally, gradually, i.e. where something goes there and back repeatedly but in a gradual, smooth manner, slowing down as it's approaching one end, coming to stop for a while, then reversing direction, slowly accelerating the other way and so on. Very rare in nature something comes there and back with constant speed, coming to stop and reversing directions instantly.
Commonly we'll observe a sine function in places where variable oscillates naturally, gradually, i.e. where something goes there and back repeatedly but in a gradual, smooth manner, slowing down as it's approaching one end, coming to stop for a while, then reversing direction, slowly accelerating the other way and so on. Very rare in nature something comes there and back with constant speed, coming to halt immediately and reversing directions instantly.
**Why the fuck are there these [pi](pi.md) values on the x line???** Nubs often can't comprehend this. These pi values are values in **[radians](radian.md)**, units of measuring angles where *2 pi* is the full angle (360 degrees). In fact sine is sometimes shown with [degrees](degree.md) instead of radians (so imagine 90 degrees on the line where there is 1/2 pi etc.), but mathematicians prefer radians. **But why are there angles in the first place???** Why doesn't it go e.g. from 0 to 1 like all other nice functions? Well, it's because of the relation to geometry, remember the fucking triangle above... also if you define sine with a circle it all repeats after *2 pi*. Just draw some picture if you don't get it.
**Why the fuck are there these [pi](pi.md) values on the x line???** Nubs often can't comprehend this. These pi values are values in **[radians](radian.md)**, units of measuring angles where *2 pi* is the full angle (360 degrees). In fact sine is sometimes shown with [degrees](degree.md) instead of radians (so imagine 90 degrees on the line where there is 1/2 pi etc.), but mathematicians prefer radians. **But why are there angles in the first place???** Why doesn't it go e.g. from 0 to 1 like all other nice functions? Well, it's because of the relation to geometry and circles, remember the fucking triangle above... if you define sine with a circle it all repeats after *2 pi*. Imagine the shadow on the wall going up and down -- the cycle will repeat when the rotating thing makes 360 degrees all round. Just draw some picture if you don't get it.
Some additional facts and properties regarding the sine functions are:
@ -43,7 +43,7 @@ Some additional facts and properties regarding the sine functions are:
- It is periodic, with a period of 2 [pi](pi.md).
- Sine is just shifted [cosine](cos.md), i.e. *sin(x) = cos(x - 1/2 pi)*
- Its inverse function is [arcus sine](asin.md), abbreviated *asin*, also written as *sin^-1* -- this function tells you what argument you need to give to sin to get a specific result number. It's actually an inverse of only part of the sine function because the whole sine function can't be inverted, it isn't [bijective](bijection.md).
- [Derivative](derivative.md) of *sin(x)* is *cos(x)*, the [integral](integral.md) of *sin(x) dx* is *-cos(x)*.
- [Derivative](derivative.md) of *sin(x)* is *cos(x)*, the [integral](integral.md) of *sin(x)* is *-cos(x)*.
- By adding many differently shifted and scaled sine functions we can create basically any other function, see e.g. [cosine transform](cosine_transform.md).
- Sine and [cosine](cos.md) functions are used to draw [circles](circle.md). If you plot points with *x* coordinate equal to *sin(t)* and *y* coordinate equal to *cos(t)* for *t* going from 0 to *2 * pi*, you'll get a unit circle.
- *sin(x)^2 + cos(x)^2 = 1*
@ -60,11 +60,9 @@ Some values of the sine function are:
| pi / 2 | 90 | 1 |
| 2 pi | 360 | 0 |
## Programming
In programming languages the sine function is generally available in some math library, for example in [C](c.md) the function `sin` is in `math.h`. Spare yourself bugs, **always check if your sin function expects [radians](radian.md) or degrees!**
In [programming languages](programming_language.md) the sine function is generally available in some math [library](library.md), for example in [C](c.md) the function `sin` is in `math.h`. Spare yourself bugs, **always check if your sin function expects [radians](radian.md) or degrees!**
**Want to make your own sine function for whatever reason (performance, curiosity, ...)?** Then firstly consider what you expect from it. If you want a small, fast and perhaps integer only `sin` function (the one we'd prefer in [LRS](lrs.md)) that doesn't need extreme accuracy, consider using a **[look up table](lut.md)**. You simply precompute the values of the sine function into a static table in memory and the function just retrieves them when called -- this is super fast. Note that you can save a lot of space by **only storing sine values between 0 and 1/2 pi**, the remaining parts of the function are just different transformations of this part. You can further save space and/or make the function work with [floats](float.md) by further [interpolating](interpolation.md) (even just linearly) between the stored values, for example if `sin(3.45)` is called and you only have values stored for `sin(3.4)` and `sin(3.5)`, you simply average them.