Is there a standard sign function in C/C++?

Signumfunktionen: Alt du skal vide

23/11/2007

Rating: 3.99 (3199 votes)

I matematikkens verden findes der mange funktioner, der, på trods af deres enkelhed, spiller en fundamental rolle i mere komplekse teorier. En af disse er signumfunktionen, også kendt som tegnfunktionen. Navnet stammer fra det latinske ord "signum", der betyder "tegn". Funktionens formål er utroligt ligetil: Den tager et reelt tal som input og returnerer dets fortegn. Resultatet er enten -1 for negative tal, +1 for positive tal, eller 0 for tallet nul. Denne funktion, ofte skrevet som sgn(x), er et kraftfuldt værktøj, der bruges på tværs af forskellige matematiske og tekniske discipliner til at isolere retningen af en værdi.

What is an operator in math?
An operator is a sign or symbol that specifies the type of calculation to perform within an expression. There are mathematical, comparison, logical, and reference operators.
Indholdsfortegnelse

Den Formelle Definition af Signumfunktionen

Signumfunktionen er en såkaldt stykkevis funktion, hvilket betyder, at den er defineret af forskellige regler for forskellige dele af sit domæne. Den formelle definition for et reelt tal x er som følger:

sgn(x) := { -1 hvis x < 0, 0 hvis x = 0, 1 hvis x > 0 }

Denne definition bygger på trikotomiloven, et grundlæggende aksiom for reelle tal, som fastslår, at ethvert reelt tal enten er negativt, nul eller positivt. Signumfunktionen kortlægger hvert tal til en af disse tre kategorier repræsenteret ved værdierne -1, 0 og 1.

Forholdet til Absolut Værdi

Der er en tæt og elegant forbindelse mellem signumfunktionen og den absolutte værdi (også kendt som numerisk værdi). Ethvert reelt tal kan udtrykkes som produktet af dets absolutte værdi og dets tegn. Dette kan skrives matematisk som:

x = |x| * sgn(x)

Lad os tage et eksempel. Hvis x = -7:

  • Den absolutte værdi, | -7 |, er 7.
  • Signumfunktionen, sgn(-7), er -1.
  • Derfor er 7 * (-1) = -7, hvilket er vores oprindelige tal.

Omvendt kan vi også udtrykke den absolutte værdi ved hjælp af signumfunktionen:

|x| = x * sgn(x)

Dette gælder dog kun for x ≠ 0. Hvis x = 0, ville vi få |0| = 0 * 0 = 0, hvilket er korrekt, men for x < 0, f.eks. x = -7, får vi |-7| = -7 * sgn(-7) = -7 * (-1) = 7, hvilket også er korrekt.

Karakteristiske Egenskaber

Signumfunktionen har flere interessante algebraiske egenskaber, der gør den nyttig i beregninger. En af de mest bemærkelsesværdige er, hvordan den opfører sig med multiplikation:

sgn(x * y) = sgn(x) * sgn(y)

Dette betyder, at fortegnet for et produkt af to tal er lig med produktet af deres individuelle fortegn. For eksempel er sgn(-2 * 5) = sgn(-10) = -1. Samtidig er sgn(-2) * sgn(5) = (-1) * (1) = -1. Denne egenskab kan udvides til potenser:

sgn(x^n) = (sgn(x))^n

Udfordringen ved Nul: En Diskontinuerlig Funktion

En af de mest afgørende egenskaber ved signumfunktionen, set fra et calculus-perspektiv, er dens opførsel omkring x = 0. Funktionen er diskontinuerlig ved dette punkt. Men hvad betyder det?

En kontinuerlig funktion kan tegnes som en sammenhængende graf uden at løfte blyanten fra papiret. Signumfunktionens graf består af tre adskilte dele:

  1. En vandret linje ved y = -1 for alle x < 0.
  2. Et enkelt punkt i origo (0,0).
  3. En vandret linje ved y = 1 for alle x > 0.

Når vi nærmer os x = 0 fra den negative side, er funktionsværdien konstant -1. Når vi nærmer os fra den positive side, er den konstant 1. Men præcis ved x = 0 "hopper" værdien til 0. Dette spring i grafen er definitionen på en diskontinuitet. Selvom funktionen er perfekt kontinuerlig alle andre steder, gør dette ene punkt den til et klassisk eksempel i undervisningen af matematiske grænser og kontinuitet.

What is sign function in Wolfram Language?
The sign function is implemented in the Wolfram Language for real as Sign [x]. For nonzero complex numbers, Sign [z] returns , where is the complex modulus of . can also be interpreted as an unspecified point on the unit circle in the complex plane (Rich and Jeffrey 1996). Bracewell, R. "The Sign Function, ."

Signumfunktionen i Calculus

Diskontinuiteten ved nul har betydelige konsekvenser, når vi forsøger at anvende standardværktøjer fra calculus som differentiation og integration.

Differentiation

At differentiere en funktion handler om at finde dens hældning. Da signumfunktionen er en konstant (-1 eller 1) for alle x ≠ 0, er dens afledede (hældning) 0 for alle disse punkter:

d/dx sgn(x) = 0 for x ≠ 0

Men ved x = 0 er det umuligt at definere en klassisk afledt på grund af det abrupte spring. Der findes dog en mere avanceret matematisk ramme, kendt som distributionsteori, hvor man kan definere en afledt. I denne sammenhæng er den afledede af signumfunktionen to gange Dirac deltafunktionen, skrevet som 2δ(x). Dirac deltafunktionen er en generaliseret funktion, der er nul overalt undtagen i nul, og hvis integrale over hele den reelle akse er 1.

Integration

Integration er mere ligetil. Det bestemte integrale af signumfunktionen er relateret til den absolut værdi. Faktisk er integralet af sgn(x) lig med |x| (plus en integrationskonstant). Det bestemte integrale fra a til b kan beregnes som:

∫[a, b] sgn(x) dx = |b| - |a|

For eksempel, integralet fra -3 til 5 er |5| - |-3| = 5 - 3 = 2. Dette giver mening, da arealet under x-aksen fra -3 til 0 er -3, og arealet over aksen fra 0 til 5 er 5. Summen er 5 + (-3) = 2.

What is a signum function?
The signum function denotes which unique category a number falls into by mapping it to one of the values −1, +1 or 0, which can then be used in mathematical expressions or further calculations. Any real number can be expressed as the product of its absolute value and its sign:

Implementering i Programmering

I den digitale verden er det ofte nødvendigt at bestemme et tals fortegn. Mange programmeringssprog og matematiske biblioteker tilbyder derfor en implementering af signumfunktionen.

Sprog/BibliotekImplementeringNoter
Wolfram LanguageSign[x]Indbygget funktion, der også håndterer komplekse tal.
Python (NumPy)numpy.sign(x)En standardfunktion i det udbredte NumPy-bibliotek.
JavaScriptMath.sign(x)En del af det indbyggede Math-objekt siden ES6.
C/C++Ingen standardfunktionMangler en standardfunktion. En almindelig og effektiv implementering for heltal er udtrykket (x > 0) - (x < 0). Dette udnytter, at booleske udtryk evalueres til 1 (sand) eller 0 (falsk).

Manglerne i sprog som C/C++ skyldes ofte et ønske om at undgå overhead og give programmøren fuld kontrol, især i forhold til håndteringen af flydende kommatal og de specielle værdier +0.0 og -0.0.

Ofte Stillede Spørgsmål (FAQ)

Hvad er forskellen på et fortegn og en operator?

Dette er en almindelig kilde til forvirring. Symbolerne '+' og '-' bruges til to forskellige formål. Som et fortegn angiver de, om et tal er positivt eller negativt (f.eks. -10). Som en operator angiver de en handling, der skal udføres mellem to tal, såsom addition eller subtraktion (f.eks. 15 - 10). Signumfunktionen handler udelukkende om fortegnet, ikke operationen.

What is the difference between a sign and a plus sign?
A sign is a symbol placed in front of a number to indicate whether it is a positive or negative. A plus sign ( + ) is used to indicate a positive number. Positive numbers are considered to be greater than zero. If the sign is missing it is considered to be positive. So the numbers 45 and +45 are identical.

Hvorfor er sgn(0) lig med 0?

Dette er den mest udbredte matematiske konvention. Da tallet 0 hverken er positivt eller negativt, giver det mening at tildele det en unik værdi, der adskiller det fra de to andre kategorier. Dette bevarer også symmetrien i funktionen.

Er signumfunktionen en vigtig funktion?

Ja. På trods af sin enkelhed er den en fundamental byggeklods. Den bruges i signalbehandling til at bestemme fasen af et signal, i kontrolteori til at designe regulatorer, og i statistik og machine learning til forskellige normaliseringsopgaver. Dens diskontinuitet gør den også til et vigtigt pædagogisk værktøj i matematikundervisning.

Hvis du vil læse andre artikler, der ligner Signumfunktionen: Alt du skal vide, kan du besøge kategorien Sundhed.

Go up