Proč náhodnost:
Protože, když budu zapisovat do jedné buňky, pak při stisknutí tlačítka [CNTR]+[SHIFT]+[F9] (přepočet celého listu) se spustí všechny makra na listě. Pak se stane toto: Jedna funkce, zapíše hodnotu do pracovní buňky a než ji přečte, tak druhá funkce tam zapíše hodnotu také, ale pro úplně jiný výpočet! Tím pádem jsou všechny výsledky špatně - liší se od skutečnosti, ne o malý kousek, ale o obrovskou hodnotu (desítky procent i více). Pokud zapisuji náhodně, pak je malá pravděpodobnost, že to stane (výsledky, které jste viděl jsou asi v pořádku - bez chyby).
Proto potřebuji, aby každé spuštění funkce (na listu jich může být několik) vždy pracovalo s jedinečnou buňkou. Javascript nepoužívá žádnou buňku pro vyhodnocení, dělá to někde uvnitř, tak je bez chyby.
Porovnávám výsledky s Maximou, kterou mám nainstalovanou na svém počítači. Calc, narozdíl od Maximy, která počítá algebraicky, počítá numericky - takže neumí počítat přesně. Jedná se pouhé přibližování k přesné hodnotě, kterou si nastavím posledním parametrem na přesnost, která mi postačuje. Zvýšením přesnosti se výpočet dost prodlužuje, takže se jedná o kompromis.
Například tento integrál musí vyjít přesně 2. Na listu si můžete zkusit, jak hodnota posledního parametru ovlivňuje výsledek (na kolikátém místě se začíná výsledek lišit).
Jak jsem měřil rychlost: Zvolil jsem stejný výraz (složitý) pro integraci a přesnost jsem nastavil na nějakou vysokou hodnotu, třeba 1000. A pak jsem stopkama změřil čas a porovnal, nejprve jednu funkci a pak druhou. Rozdíl byl při opakovaném měření ve vteřinách asi čtyřnásobný.
Pokud tedy říkáte, že Javascript je rychlejší, mohl bych hodit celou integraci do něj a pak by se to volalo jen jednou. Ale moc se mi do toho nechce - byla by rozdílná syntaxe, tím by to použití bylo pro úzký okruh lidí. Takhle je to mnohem použitelnější.
Škoda, že Calc nemá obdobnou funkci, tím by tohle vše odpadlo.
Ubuntu 22.04.4 LTS, LibreOffice Verze: 7.6.6.3, wxMaxima 20.12.1, Maxima 5.47.0 (SBCL)