- Chebyshev approximation calculator एक ऐसा टूल है जो वेब पर गणितीय फ़ंक्शन approximation code जनरेट करता है
- उपयोगकर्ता
f(x),x min,x max,Termsके जरिए जिस फ़ंक्शन का approximation करना है, उसकी range और terms की संख्या तय कर सकते हैं Match x min x maxविकल्प और Coefficients सेक्शन के माध्यम से range boundaries और coefficient values को देखना या समायोजित करना संभव है- Generated code सेक्शन में गणना का परिणाम code के रूप में दिखाया जाता है, और उदाहरण स्क्रीन में
c0सेc10तक के coefficients दिखाई देते हैं - GitHub repository जुड़ी हुई है, इसलिए वेब टूल के implementation code को सीधे देखा जा सकता है
Chebyshev approximation code जनरेटर
- Chebyshev approximation calculator गणितीय फ़ंक्शनों का कुशल approximation करने के लिए code जनरेट करता है
- वेब UI में approximation conditions दर्ज की जाती हैं
f(x): जिस फ़ंक्शन का approximation करना हैx min: range का न्यूनतम मानx max: range का अधिकतम मानTerms: इस्तेमाल किए जाने वाले terms की संख्याMatch x min x max: range boundaries से जुड़ा विकल्प
coefficient जाँच और जनरेट किया गया code
- स्क्रीन Coefficients सेक्शन और Generated code सेक्शन में बंटी हुई है
- उदाहरण के रूप में दिखाए गए coefficients
c0सेc10तक देखे जा सकते हैंc0 = 0.16793649417016518c1 = -0.12411164956092625c2 = -0.09756341588422193c3 = 0.1800765790518846c4 = -0.06972963647223016c5 = -0.09250127939333941c6 = 0.18076946080324185c7 = 0.15990613621816677c8 = -0.028659588693985123c9 = -0.09494966104347571c10 = -0.04980429834982578
- स्क्रीन पर
c11सेc39तक के coefficient items भी दिखाए गए हैं
code repository
- संबंधित GitHub repository: stuffmatic/chebyshev-calculator
1 टिप्पणियां
Hacker News की राय
शानदार। करीब 1974 में मैंने IBM 360 assembly में square root निकालने वाला function लिखा था और उसके पैसे मिले थे
मैं undergraduate के अंतिम साल में था, और मुझसे इसे जितना हो सके उतना efficient बनाने को कहा गया था। input को 0 और 1 के बीच scale किया, फिर initial estimate के लिए Chebyshev approximation इस्तेमाल किया, और solution पाने के लिए Newton method के unrolled iteration 2 या 3 बार लगाए। code लिखकर मिली मेरी पहली कमाई थी
वाकई बहुत अच्छा बनाया है। इस तरह की approximation कितनी efficient होती है, यह देखकर मैं मोहित हुआ, और यह भी काफी समझ आया कि 8-bit computers पर trigonometric functions या दूसरे math functions की implementations वैसी क्यों होती थीं
1969 में BBC Research Department का एक बेहतरीन original document भी है, जो बताता है कि यह तरीका क्यों शानदार है: https://downloads.bbc.co.uk/rd/pubs/reports/1969-10.pdf
अगर आपने केवल Taylor approximation ही देखी है, तो शुरुआत में यह थोड़ा जादू जैसा लग सकता है
पहले Sollya से अच्छे results मिले थे: https://www.sollya.org/
हालांकि results अच्छे थे, लेकिन software खुद इस्तेमाल करने में थोड़ा cumbersome है
Math.sin(x)/x, यानी sinc function को[-3,3]interval में 7 terms से approximate करने पर coefficientsc0...c6सभीNaNहो जाते हैं। क्या यह bug है?temporary workaround के तौर पर मैंने
xके 0 के करीब होने पर बस1.0force कर दियाif(Math.abs(x) > 1e-8 ){ Math.sin(x)/x } else { 1.0 }x_j = (xmin) + (xmax - xmin)/2(1 + cos(pi[0..j-1]/(j-1))जैसे grid points पर function evaluate करता होगा, और अगर उनमें से कोई exactly 0 हो, तोMath.sin(0)/0calculate होगा औरNaNआएगादूसरा workaround यह है कि
[-3,+3.0000001]जैसी थोड़ी asymmetric range इस्तेमाल करेंx=0पर well-defined नहीं है, और approximation code लगता है वहीं गिर गया। code थोड़ा disappointing हैChebyshev polynomials approximation में इतने powerful और versatile हैं कि लोग सोचते हैं यह इतना अच्छा है कि scam जैसा लगता है, और उल्टा इस्तेमाल ही नहीं करते
पहला तरीका जो आजमाना चाहिए, वह Chebyshev होना चाहिए। neural networks को last resort के तौर पर इस्तेमाल करना चाहिए
शानदार। हाल में मैं ऐसा ही कुछ करना चाहता था, लेकिन approximation calculate करने वाला code ढूंढना हैरानी की हद तक मुश्किल था
अगली बार किसी function को जल्दी approximate करना पड़े, इसलिए bookmark कर लिया
Chebyshev black magic जैसा लगता है। graduate class में derivation process देखने के बाद भी ऐसा ही लगता है
Nick Trefethen आदि का Chebfun भी जरूर mention होना चाहिए। यह इस idea को लगभग हर conceivable direction में extend करने वाला tool है
Chebfunsको functions के लिए वैसा counterpart माना जा सकता है, जैसे actual mathematical numbers के लिए floating-point numbers होते हैं। सचमुच impressive software हैhttps://www.chebfun.org
इसकी वजह से differential-algebraic equations के solutions को machine precision पर ढूंढना या 1D functions के global minimum/maximum ढूंढना जैसे कई तरीके संभव हो जाते हैं
अभी वे दूसरे algorithms इस्तेमाल करते हैं, ऐसा मेरी जानकारी है, लेकिन Chebfun की पहले की default methodology Trefethen की किताब
Spectral Methods in Matlabके chapter 6 में देखी जा सकती है। ultraspherical functions का इस्तेमाल करने वाली latest methodology Olver और Townsend के SIAM Review paperA Fast and Well-Conditioned Spectral Methodमें दी गई हैएक बात जाननी है, पता नहीं यहां पूछना ठीक है या नहीं। मैंने पहले एक video देखा था कि Nintendo 64 के पास sine function calculate करने की क्षमता नहीं थी, इसलिए उसने 0 से 2π तक की lookup table इस्तेमाल की, और table size कम करने के लिए clever techniques भी इस्तेमाल कीं
क्या neural network train करके weights store करना, या function बनाकर coefficients store करना और उनसे sine/cosine calculate करना भी संभव था?
अगर कुछ CPU cycles बचते हों, तो coarse lookup table values को initial estimate बनाकर numerical approximation techniques के कुछ iterations चलाने वाली hybrid approximation इस्तेमाल की जा सकती है। या original post की तरह polynomial approximation के शुरुआती कुछ coefficients ही store कर लें
neural network तब useful हो सकता है जब आपके पास किसी function के samples हों लेकिन उसे approximate करना न पता हो; यहां ऐसा case नहीं है
neural networks उन चीजों को evaluate करने के लिए बढ़िया solution हैं जिन्हें mathematically analyze करना आसान नहीं है, लेकिन trigonometric functions calculate और approximate करने की known techniques पहले से बहुत हैं
sine calculate करने के लिए neural network train करना strings reverse करने के लिए LLM इस्तेमाल करने का mathematical version जैसा है। कर सकते हैं, लेकिन यह idea तभी सूझेगा जब आपको पता न हो कि problem ज्यादा direct approach से essentially solve हो जाती है
AI/ML techniques इस्तेमाल करने से पहले यह देखना हमेशा worth it है कि mathematicians के पास पहले से solution है या नहीं। आजकल शायद काफी effort उन problems पर AI/ML लगाने में जा रहा है जिनके known, efficient और कभी-कभी optimal solutions पहले से हैं—बस developer को पता नहीं होता
neural networks की मुख्य ताकत तब दिखती है जब inputs कुछ नहीं बल्कि बहुत सारे हों।
sin(x)जैसे simple case में यहां पोस्ट किए गए tool जैसे दूसरे methods मौजूद हैंबहुत बढ़िया। शरारत सूझी और देखना चाहा कि कितनी जल्दी कोई ऐसा function बना सकता हूं जो अच्छी तरह approximate न हो
अभी तक
Math.cos(x * Math.exp(Math.cos(x * x)))सबसे अच्छा रहा। इसमें काफी composition है, जिससे fast oscillation और steep gradients बनते हैं, और Chebyshev से आसानी से approximate करना मुश्किल हो जाता है