„Modul:Math“ – Versionsunterschied
Erscheinungsbild
[gesichtete Version] | [gesichtete Version] |
Inhalt gelöscht Inhalt hinzugefügt
K Neu Markierung: Weiterleitung entfernt |
KKeine Bearbeitungszusammenfassung |
||
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
-- to catch wrong input, the code doesn't use math.sinh and math.cosh directly |
|||
local function sinh(x) |
local function sinh(x) |
||
Zeile 25: | Zeile 25: | ||
end |
end |
||
end |
end |
||
local function tanh(x) |
|||
-- Tangens hyperbolicus |
|||
x = tonumber(x) or false; |
|||
if not x then return 0, false; end |
|||
local s = sinh(x); |
|||
local c = cosh(x); |
|||
if c ~= 0 then |
|||
local value = s / c |
|||
if value then |
|||
return value, true |
|||
else |
|||
return 0, false |
|||
end |
|||
else |
|||
return 0, false |
|||
end |
|||
end |
|||
local function coth(x) |
|||
-- Kotangens hyperbolicus |
|||
x = tonumber(x) or false; |
|||
if not x then return 0, false; end |
|||
local s = sinh(x); |
|||
local c = cosh(x); |
|||
if s ~= 0 then |
|||
local value = c / s; |
|||
if value then |
|||
return value, true |
|||
else |
|||
return 0, false |
|||
end |
|||
else |
|||
return 0, false |
|||
end |
|||
end |
|||
local function arsinh(x) |
|||
-- Area sinus hyperbolicus |
|||
x = tonumber(x) or false; |
|||
if not x then return 0, false; end |
|||
local value = math.ln (x + math.sqrt(x * x + 1)) |
|||
if value then |
|||
return value, true |
|||
else |
|||
return 0, false |
|||
end |
|||
end |
|||
local function arcosh(x) |
|||
-- Area Kosinus hyperbolicus |
|||
x = tonumber(x) or false; |
|||
if not x then return 0, false; end |
|||
if x <= 1 then return 0, false; end |
|||
local value = math.ln (x + math.sqrt(x * x - 1)) |
|||
if value then |
|||
return value, true |
|||
else |
|||
return 0, false |
|||
end |
|||
end |
|||
local function artanh(x) |
|||
-- Area tangens hyperbolicus |
|||
x = tonumber(x) or false; |
|||
if not x then return 0, false; end |
|||
if math.abs(x) >= 1 then return 0, false; end |
|||
local value = math.ln ((1+x)/(1-x)) / 2 |
|||
if value then |
|||
return value, true |
|||
else |
|||
return 0, false |
|||
end |
|||
end |
|||
local function arcoth(x) |
|||
-- Area Kotangens hyperbolicus |
|||
x = tonumber(x) or false; |
|||
if not x then return 0, false; end |
|||
if math.abs(x) <= 1 then return 0, false; end |
|||
local value = math.ln ((x+1)/(x-1)) / 2 |
|||
if value then |
|||
return value, true |
|||
else |
|||
return 0, false |
|||
end |
|||
end |
|||
local Math = { }; |
|||
function Math.sinh( frame ) |
|||
local data = tonumber(frame.args[1]) or false; |
|||
if data then |
|||
local value, isOk = sinh(data); |
|||
if isOk then |
|||
return tostring(value); |
|||
else |
|||
return "" -- error |
|||
end |
|||
else |
|||
return "" -- error |
|||
end |
|||
end |
|||
function Math.cosh( frame ) |
|||
local data = tonumber(frame.args[1]) or false; |
|||
if data then |
|||
local value, isOk = cosh(data); |
|||
if isOk then |
|||
return tostring(value); |
|||
else |
|||
return "" -- error |
|||
end |
|||
else |
|||
return "" -- error |
|||
end |
|||
end |
|||
function Math.tanh( frame ) |
|||
local data = tonumber(frame.args[1]) or false; |
|||
if data then |
|||
local value, isOk = tanh(data); |
|||
if isOk then |
|||
return tostring(value); |
|||
else |
|||
return "" -- error |
|||
end |
|||
else |
|||
return "" -- error |
|||
end |
|||
end |
|||
function Math.coth( frame ) |
|||
local data = tonumber(frame.args[1]) or false; |
|||
if data then |
|||
local value, isOk = coth(data); |
|||
if isOk then |
|||
return tostring(value); |
|||
else |
|||
return "" -- error |
|||
end |
|||
else |
|||
return "" -- error |
|||
end |
|||
end |
|||
function Math.arsinh( frame ) |
|||
local data = tonumber(frame.args[1]) or false; |
|||
if data then |
|||
local value, isOk = arsinh(data); |
|||
if isOk then |
|||
return tostring(value); |
|||
else |
|||
return "" -- error |
|||
end |
|||
else |
|||
return "" -- error |
|||
end |
|||
end |
|||
function Math.arcosh( frame ) |
|||
local data = tonumber(frame.args[1]) or false; |
|||
if data then |
|||
local value, isOk = arcosh(data); |
|||
if isOk then |
|||
return tostring(value); |
|||
else |
|||
return "" -- error |
|||
end |
|||
else |
|||
return "" -- error |
|||
end |
|||
end |
|||
function Math.artanh( frame ) |
|||
local data = tonumber(frame.args[1]) or false; |
|||
if data then |
|||
local value, isOk = artanh(data); |
|||
if isOk then |
|||
return tostring(value); |
|||
else |
|||
return "" -- error |
|||
end |
|||
else |
|||
return "" -- error |
|||
end |
|||
end |
|||
function Math.arcoth( frame ) |
|||
local data = tonumber(frame.args[1]) or false; |
|||
if data then |
|||
local value, isOk = arcoth(data); |
|||
if isOk then |
|||
return tostring(value); |
|||
else |
|||
return "" -- error |
|||
end |
|||
else |
|||
return "" -- error |
|||
end |
|||
end |
|||
return Math |
Aktuelle Version vom 21. September 2024, 03:23 Uhr
Modul zur Berechnung mathematischer Funktionen, welche nicht im WP-Standard enthalten sind. Bei erlaubten Argumenten wird das Ergebnis zurückgegeben, ansonsten eine leere Zeichenkette.
Zurzeit implementiert:
- Math.sinh: Sinus hyperbolicus
- Math.cosh: Kosinus hyperbolicus
- Math.tanh: Tangens hyperbolicus
- Math.coth: Kotangens hyperbolicus
- Math.arsinh: Area Sinus hyperbolicus
- Math.arcosh: Area Kosinus hyperbolicus
- Math.artanh: Area Tangens hyperbolicus
- Math.arcoth: Area Kotangens hyperbolicus
-- to catch wrong input, the code doesn't use math.sinh and math.cosh directly
local function sinh(x)
-- Sinus hyperbolicus
x = tonumber(x) or false;
if not x then return 0, false; end
local value = (math.exp (x) - math.exp (0 - x)) / 2
if value then
return value, true
else
return 0, false
end
end
local function cosh(x)
-- Cosinus hyperbolicus
x = tonumber(x) or false;
if not x then return 1, false; end
local value = (math.exp (x) + math.exp (0 - x)) / 2
if value then
return value, true
else
return 1, false
end
end
local function tanh(x)
-- Tangens hyperbolicus
x = tonumber(x) or false;
if not x then return 0, false; end
local s = sinh(x);
local c = cosh(x);
if c ~= 0 then
local value = s / c
if value then
return value, true
else
return 0, false
end
else
return 0, false
end
end
local function coth(x)
-- Kotangens hyperbolicus
x = tonumber(x) or false;
if not x then return 0, false; end
local s = sinh(x);
local c = cosh(x);
if s ~= 0 then
local value = c / s;
if value then
return value, true
else
return 0, false
end
else
return 0, false
end
end
local function arsinh(x)
-- Area sinus hyperbolicus
x = tonumber(x) or false;
if not x then return 0, false; end
local value = math.ln (x + math.sqrt(x * x + 1))
if value then
return value, true
else
return 0, false
end
end
local function arcosh(x)
-- Area Kosinus hyperbolicus
x = tonumber(x) or false;
if not x then return 0, false; end
if x <= 1 then return 0, false; end
local value = math.ln (x + math.sqrt(x * x - 1))
if value then
return value, true
else
return 0, false
end
end
local function artanh(x)
-- Area tangens hyperbolicus
x = tonumber(x) or false;
if not x then return 0, false; end
if math.abs(x) >= 1 then return 0, false; end
local value = math.ln ((1+x)/(1-x)) / 2
if value then
return value, true
else
return 0, false
end
end
local function arcoth(x)
-- Area Kotangens hyperbolicus
x = tonumber(x) or false;
if not x then return 0, false; end
if math.abs(x) <= 1 then return 0, false; end
local value = math.ln ((x+1)/(x-1)) / 2
if value then
return value, true
else
return 0, false
end
end
local Math = { };
function Math.sinh( frame )
local data = tonumber(frame.args[1]) or false;
if data then
local value, isOk = sinh(data);
if isOk then
return tostring(value);
else
return "" -- error
end
else
return "" -- error
end
end
function Math.cosh( frame )
local data = tonumber(frame.args[1]) or false;
if data then
local value, isOk = cosh(data);
if isOk then
return tostring(value);
else
return "" -- error
end
else
return "" -- error
end
end
function Math.tanh( frame )
local data = tonumber(frame.args[1]) or false;
if data then
local value, isOk = tanh(data);
if isOk then
return tostring(value);
else
return "" -- error
end
else
return "" -- error
end
end
function Math.coth( frame )
local data = tonumber(frame.args[1]) or false;
if data then
local value, isOk = coth(data);
if isOk then
return tostring(value);
else
return "" -- error
end
else
return "" -- error
end
end
function Math.arsinh( frame )
local data = tonumber(frame.args[1]) or false;
if data then
local value, isOk = arsinh(data);
if isOk then
return tostring(value);
else
return "" -- error
end
else
return "" -- error
end
end
function Math.arcosh( frame )
local data = tonumber(frame.args[1]) or false;
if data then
local value, isOk = arcosh(data);
if isOk then
return tostring(value);
else
return "" -- error
end
else
return "" -- error
end
end
function Math.artanh( frame )
local data = tonumber(frame.args[1]) or false;
if data then
local value, isOk = artanh(data);
if isOk then
return tostring(value);
else
return "" -- error
end
else
return "" -- error
end
end
function Math.arcoth( frame )
local data = tonumber(frame.args[1]) or false;
if data then
local value, isOk = arcoth(data);
if isOk then
return tostring(value);
else
return "" -- error
end
else
return "" -- error
end
end
return Math