Mathematische Formelsammlung

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Mathematische Formelsammlung

Beitrag von cxAlex »

Dieser Thread soll eine kleine Formelsammlung für allerlei Funktionen sein, die man schnell mal braucht, aber nicht immer zur Hand hat.

Mal ein paar Grundlegende Sachen:

// Edit: einige VariablenTypen angepasst:

Code: Alles auswählen

; Quersumme einer Zahl
Procedure QSum(Num.q)
  Protected Sum
  While num
    Sum + num%10
    num/10
  Wend
  ProcedureReturn Sum
EndProcedure

; GGT 2er Zahlen
Procedure GGT(Num1, Num2)
  Protected GGT
  Repeat
    GGT = Num1%Num2
    If GGT
      Num1 = Num2
      Num2 = GGT
    EndIf
  Until Not GGT
  ProcedureReturn Zahl2
EndProcedure

; KGV 2er Zahlen
Procedure KGV(Num1, Num2)
  ProcedureReturn Num1*Num2/GGT(Num1, Num2)
EndProcedure

; Logarithmus einer Zahl zu einer beliebigen Basis
Procedure.d LogN(Num.d, Base.d)
  ProcedureReturn Log(Num)/Log(Base)
EndProcedure

; Parallelrechnen 2er Werte ( || )
Procedure.d Parallel(Num1.d, Num2.d)
ProcedureReturn Num1*Num2/(Num1+Num2)
EndProcedure
Zuletzt geändert von cxAlex am 22.12.2008 15:43, insgesamt 1-mal geändert.
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7032
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

meiner Meinung nach gibs sowas schon im Code-Archiv, aber ich mache trotzdem mal mit :

Code: Alles auswählen

 ; Berechnet das Quadrat einer Zahl
 Macro Qua(Value)
  ( (Value)*(Value) )
 EndMacro

 ; Berechnet das Kubik einer Zahl
 Macro Cub(Value)
  ( (Value)*(Value)*(Value) )
 EndMacro

 ; Berechnet die Fakultät einer Zahl
 Procedure.d Factorial(Value)
  Protected n, Factorial.d = 1
  For n = 2 To Value
   Factorial * n
  Next n
  ProcedureReturn Factorial
 EndProcedure
 
 ; Modulo für Floats
 Macro ModF(Value, Factor)
  ( Value-Int(Value/Factor)*Factor )
 EndMacro
  
 ; Signum
 Procedure Sgn(Value.f)
  If Value > 0
   ProcedureReturn 1
  ElseIf Value < 0
   ProcedureReturn -1
  Else 
   ProcedureReturn 0
  EndIf
 EndProcedure
 
 ; Berechnet die Diagonale
 Macro Diagonal(x, y)
  Sqr( Qua(x)+Qua(y) )
 EndMacro
im übrigen solltest du zB bei LogN bei den parametern .f setzen, sonst funzt datt nur mit LONGs
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
THEEX
Beiträge: 804
Registriert: 07.09.2004 03:13

Beitrag von THEEX »

Die Idee ist ja nett, aber eine kurze Beschreibung für was es da ist und was es machen soll, fände ich schon angebracht, zumindest für die Anfänger.
Eine Art Query-Planner soll die Ausführung von Map/Reduce-Funktionen in Hadoop stark beschleunigen.
Special-Agent-J
Beiträge: 51
Registriert: 05.10.2008 10:13

Beitrag von Special-Agent-J »

also wenn die sammlung mal größer ist, ist die ganz cool, wenn jemand ne idee hat wie man ne wurzel berechnen kann dann mal herdamit :D
wär nämlich ganz nett für mein taschenrechner
http://www.purebasic.fr/german/viewtopic.php?t=18750
Achtung ich hab leider nur die demo von 4.3 und von der kaufversion leider nur 3.3
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7032
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

Für 2te Wurzel :

Code: Alles auswählen

Debug Sqr(4)
Für andere Wurzeln kannst die Pow() nutzen (also Basis hoch Exponent) wobei bei der n-ten Wurzel dann dort steht:

Code: Alles auswählen

Debug Pow(Basis, 1/n)
bei der 3. Wurzel von 27 wäre das dann:

Code: Alles auswählen

Debug Pow(27, 1/3)
es kommt wie erwartet 3 heraus denn 3*3*3 = 27
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten