Olen jumittunut VB5:een ja joskus kokeillut myös VB6:sta ja Pythonia. Osaako joku suositella kieltä, jolla saa nopean sovelluksen laskentaan ja tarpeen tullen myös tarkkaan laskentaan jopa tuhansien numeroiden tarkkuudella. Toivomus olisi tietenkin ilmaisesta kehitysympäristöstä ja kääntäjästä Windows 7 SP1 käyttöjärjestelmään.
Esimerkiksi Sagella saa tarkkaa laskentaa niin numeerisesti kuin symbolisesti:
sage: x = var('x') sage: y = sum(x^(-8),x,1,infinity) sage: y 1/9450*pi^8 sage: N(y,2000) 1.004077356197944339378685238508652465258960790649850020329110202652582952574748814395287230372371971124523648470282690026354299548073383970966270581799604618992754222287297459333028151505628361773822843314456080832422954810544833024244402534255772967813121021930029353975994747125306655542260905421389058622617194201065716879322813456783616645838899393760371748031942162040676468340393167867267217637270198235200529512467927023032221755036681688727329342110703109085901567230901232410553698536656644166828285367906321268269931433703073397669957960485034803741885843669306225819180817859530335647101207
Täytyy kuitenkin muistaa, että matikassa on monia lausekkeita, josta ei tiedetä, onko niille olemassa suljettua muotoa. Tällöin ongelmat ovat usein avoimia ja omaa tutkimusta tarvitaan:
sage: x = var('x') sage: z = sum(x^(-3),x,1,infinity) sage: z zeta(3)
Sage on tehty Pythonilla, joten olettaisi, että C:llä tehdyt symboliset matikkaohjelmistojen kirjastot voivat olla aavistuksen verran nopeampia. Esimerkiksi Gnu MP:llä voi tehdä C:llä tuhansien desimaalien tarkkuuden aritmetiikan ja Pythonilla sama onnistuu kirjastolla mpmath. En oikein tiedä, miten pitkälle tuota Python-kääntäjää on kehitetty, joten ehkä GMP vastaa tarpeitasi paremmin.
Kiitos vinkeistä. Kokeilin aluksi tuoda Pythoniin kirjastoa mpmath mutta sellaista ei löytynytkään (ver. 3.1.4).
Toimiiko Sage Windowsissa hyvin? Asennuspaketti näytti olevan lähes 2 GB.
setä kirjoitti:
Kokeilin aluksi tuoda Pythoniin kirjastoa mpmath mutta sellaista ei löytynytkään (ver. 3.1.4).
Sen joutuu lataamaan netistä ja asentamaan manuaalisesti.
setä kirjoitti:
Toimiiko Sage Windowsissa hyvin? Asennuspaketti näytti olevan lähes 2 GB.
Eipä ole Sagen Windows-versiosta kokemusta enkä voi testata sitä koneellani. Ohjelma on varsin iso, mutta en ole kuullut muista avoimen lähdekoodin laskimista Windowsille. Tosin en ole perehtynytkään aiheeseen.
Jos ihan vain suuret kokonaisluvut riittävät, ehkä VB.NET kävisi sinulle: siinä on nykyään luokka System.Numerics.BigInteger.
Latasin mpmath sourcen ja dokumentaation. Mutta en tiedä miten tuohon dokumentaatioon pääsee käsiksi. Tai yleensäkin jotain tietoa mpmathin funktioista. Kokeilin laskea arcustangenttia ykkösestä mutta en saanut arcustangenttia mitenkään.
# -*- coding: utf-8 -*- import random import mpmath import mpmath.functions pi = 4*mpmath.arctan(1) print(pi)
Piin arvon saan käskyllä print(mpmath.pi) mutta miten saan siihen desimaaleja lisää.
Dokumentaation lukeminen onnistuu netistä.
>>> from mpmath import * >>> mp.dps = 1000 >>> print(mpf(pi)) 3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609433057270365759591953092186117381932611793105118548074462379962749567351885752724891227938183011949129833673362440656643086021394946395224737190702179860943702770539217176293176752384674818467669405132000568127145263560827785771342757789609173637178721468440901224953430146549585371050792279689258923542019956112129021960864034418159813629774771309960518707211349999998372978049951059731732816096318595024459455346908302642522308253344685035261931188171010003137838752886587533208381420617177669147303598253490428755468731159562863882353787593751957781857780532171226806613001927876611195909216420198 >>> print(4*atan(1)) 3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609433057270365759591953092186117381932611793105118548074462379962749567351885752724891227938183011949129833673362440656643086021394946395224737190702179860943702770539217176293176752384674818467669405132000568127145263560827785771342757789609173637178721468440901224953430146549585371050792279689258923542019956112129021960864034418159813629774771309960518707211349999998372978049951059731732816096318595024459455346908302642522308253344685035261931188171010003137838752886587533208381420617177669147303598253490428755468731159562863882353787593751957781857780532171226806613001927876611195909216420198 >>>
Jaska kirjoitti:
Sage on tehty Pythonilla, joten olettaisi, että C:llä tehdyt symboliset matikkaohjelmistojen kirjastot voivat olla aavistuksen verran nopeampia.
Eipäs kun Cythonilla tai siis Cython on pulahtanut Sagesta. Idea oli siis Sagen pojilla, että tehdään juttuja C:llä, jotta suoritetaan, mutta koodataan käärmettä.
Jaska kirjoitti:
Dokumentaation lukeminen onnistuu netistä.
>>> from mpmath import * >>> mp.dps = 1000 >>> print(mpf(pi)) >>>
Vautsi ! Noin helppoa kun sen osaa. Kiitos ja kumarrus !
Aihe on jo aika vanha, joten et voi enää vastata siihen.