विषयसूची:

क्या आप ESP32 ADC समायोजन के बारे में जानते हैं?: 29 कदम
क्या आप ESP32 ADC समायोजन के बारे में जानते हैं?: 29 कदम

वीडियो: क्या आप ESP32 ADC समायोजन के बारे में जानते हैं?: 29 कदम

वीडियो: क्या आप ESP32 ADC समायोजन के बारे में जानते हैं?: 29 कदम
वीडियो: #381 How to work with a Real Time Operating System and is it any good? (FreeRTOS, ESP32) 2024, दिसंबर
Anonim
Image
Image
प्रयुक्त संसाधन
प्रयुक्त संसाधन

आज, मैं एक और तकनीकी मुद्दे के बारे में बात करने जा रहा हूं, लेकिन मुझे लगता है कि ESP32 के साथ काम करने वाले सभी लोगों को पता होना चाहिए: ADC (एनालॉग-टू-डिजिटल कनवर्टर) रीड एडजस्टमेंट का मुद्दा। मुझे यह महत्वपूर्ण लगता है क्योंकि "माप" करते समय, विशेष रूप से एक ऐसे उपकरण के साथ जिसमें एनालॉग आउटपुट होता है, आपको पूरी तरह से निश्चित होना चाहिए कि रीडिंग सही तरीके से की जा रही है।

इसलिए आज के वीडियो में, हम ESP32 के "एनालॉग-डिजिटल कनवर्टर" का उपयोग करके माप करेंगे, रूपांतरण विसंगतियों का निरीक्षण करेंगे, और ADC समायोजन/अंशांकन विधि लागू करेंगे।

चरण 1: एडी कन्वर्टर क्या है?

एक एडी कनवर्टर एक सर्किट है जो एनालॉग (निरंतर) मात्रा को डिजिटल (असतत) मानों में अनुवाद करने में सक्षम है। इसका क्या मतलब है? इसका मतलब यह है कि जबकि डिजिटल मान केवल शून्य और एक के संयोजन से बने असतत मूल्यों को ग्रहण कर सकते हैं, एक एनालॉग मात्रा एक सीमा के भीतर किसी भी मूल्य को मान सकती है। उदाहरण के लिए, यदि हम एक आदर्श AA सेल के वोल्टेज को मापते हैं, तो हम 0V और 1.5V के बीच कोई भी मान प्राप्त कर सकते हैं, क्योंकि यह एनालॉग मात्रा है। एक आदर्श लैंप की आउटपुट अवस्था में केवल दो अवस्थाएँ (बंद या चालू) होनी चाहिए, जो एक असतत परिमाण है। चूंकि माइक्रोकंट्रोलर इस असतत तर्क का उपयोग करके काम करते हैं, इसलिए हमें एक एनालॉग मात्रा को डिजिटल (या असतत) में अनुवाद करने में सक्षम सर्किट की आवश्यकता होती है।

चरण 2: प्रयुक्त संसाधन

• एक लोलिन32 लाइट कार्ड v1.0.0

• कैप्चरिंग के लिए एक Tektronix TDS1001C आस्टसीलस्कप

• ESP32 के लिए एक USB केबल

• एक संकेत जनरेटर के रूप में एक Hantek DSO4102C आस्टसीलस्कप

चरण 3: ESP32 ADC

ESP32 एडीसी
ESP32 एडीसी

एस्प्रेसिफ़ डेटा के अनुसार, ESP32 चिप्स मापा परिणामों में एक चिप से दूसरे चिप में +/- 6% अंतर प्रस्तुत कर सकते हैं।

इसके अलावा, रूपांतरण में पढ़ने के लिए उपलब्ध प्रत्येक श्रेणी के लिए एक रैखिक उत्तर नहीं होता है। एस्प्रेसिफ अंशांकन के लिए एक विधि प्रदान करता है और सुझाव देता है कि उपयोगकर्ता वांछित सटीकता प्राप्त करने के लिए आवश्यक होने पर अन्य विधियों को लागू करते हैं।

हम डेटा अधिग्रहण करेंगे, और इससे हम एडीसी प्रतिक्रियाओं और समायोजन को पढ़ने के लिए गणितीय प्रक्रिया को लागू करने का एक उदाहरण दिखाएंगे।

इन सुधारों को पूरा करने के कई (सरल या अधिक जटिल) तरीके हैं। अपनी परियोजना के लिए सबसे उपयुक्त का मूल्यांकन करना आप पर निर्भर है।

यहां दिखाए गए एक का एक उदाहरणात्मक उद्देश्य होगा और समायोजन के दौरान देखे जा सकने वाले दिलचस्प बिंदुओं को संबोधित करने का प्रयास करें।

चरण 4: प्रयुक्त सर्किट

सर्किट प्रयुक्त
सर्किट प्रयुक्त

मैंने एक सिग्नल जनरेटर के साथ एक ऑसिलोस्कोप का उपयोग किया जो 25 मेगाहर्ट्ज तक जाता है, हेंटेक डीएसओ 4102 सी। हमने एक तरंग उत्पन्न की जिसे ईएसपी ए / डी और ऑसिलोस्कोप द्वारा पढ़ा गया था। एकत्र किया गया डेटा सीएसवी और एक स्प्रेडशीट में दर्ज किया गया था, जिसे मैं लेख के अंत में डाउनलोड करने के लिए छोड़ दूंगा।

चरण 5: प्रयुक्त साइन करें

साइन यूज्ड
साइन यूज्ड

हमने एक कम-आवृत्ति वाले ट्रैपेज़ॉइडल सिग्नल को चुना, जो पूरे रूपांतरण रेंज के माध्यम से चलने वाले रैंप तक पहुंच की अनुमति देता है। यह इन रैंपों पर बड़ी संख्या में नमूनों की अनुमति देता है।

चरण 6: ऑसिलोस्कोप द्वारा प्राप्त डेटा

ऑसिलोस्कोप द्वारा प्राप्त डेटा
ऑसिलोस्कोप द्वारा प्राप्त डेटा

कैप्चर की छवि आस्टसीलस्कप द्वारा की गई थी। डेटा एक csv फ़ाइल में संग्रहीत किया गया था। सिग्नल के बढ़ते और गिरते रैंप पर हल्की वक्रता पर ध्यान दें।

चरण 7: ऑसिलोस्कोप द्वारा प्राप्त डेटा (एक्सेल में सीएसवी फ़ाइल)

ऑसिलोस्कोप द्वारा प्राप्त डेटा (एक्सेल में सीएसवी फ़ाइल)
ऑसिलोस्कोप द्वारा प्राप्त डेटा (एक्सेल में सीएसवी फ़ाइल)

हमारे यहां नमूने हैं।

चरण 8: एडीसी द्वारा प्राप्त डेटा

एडीसी द्वारा प्राप्त डेटा
एडीसी द्वारा प्राप्त डेटा

सीरियल के ट्रांसफर रेट को बदलकर हम एडीसी द्वारा कैप्चर किए गए डेटा को देख सकते हैं। समलम्बाकार संकेत के विरूपण का निरीक्षण करें।

Arduino IDE सीरियल प्लॉटर पर देखा गया डेटा

चरण 9: एडीसी द्वारा प्राप्त डेटा - एक्सेल

एडीसी द्वारा प्राप्त डेटा - एक्सेल
एडीसी द्वारा प्राप्त डेटा - एक्सेल

उच्च दर और सीरियल टर्मिनल का उपयोग करके, हम मूल्यों को कैप्चर कर सकते हैं और उन्हें हमारी तुलना के लिए एक्सेल में लागू कर सकते हैं।

चरण 10: चढ़ाई रैंप की तुलना

चढ़ाई रैंप की तुलना
चढ़ाई रैंप की तुलना

हम दो कैच के दो चढ़ाई रैंप की तुलना करते हैं।

दोनों रैंप पर होने वाली वक्रता पर ध्यान दें।

यह भी ध्यान दें कि उसी रैंप के लिए, हमारे पास आस्टसीलस्कप की तुलना में ESP32 के कई अधिक नमूने हैं।

चरण 11: नमूनों की संख्या की बराबरी करना

नमूनों की संख्या की बराबरी करना
नमूनों की संख्या की बराबरी करना
नमूनों की संख्या की बराबरी करना
नमूनों की संख्या की बराबरी करना

क्योंकि ESP32 ने आस्टसीलस्कप की तुलना में बड़ी संख्या में नमूने प्रदान किए हैं, हमें इन मूल्यों की बराबरी करने की आवश्यकता है, क्योंकि वे दो वक्रों की तुलना करने के लिए एक सूचकांक के रूप में काम करेंगे।

इसके लिए हम सीधी तुलना करेंगे।

हमारे पास ऑसिलोस्कोप रैंप के लिए 305 नमूने और एडीसी रैंप के लिए 2365 नमूने हैं।

चूंकि रैंप एक ही श्रेणी के हैं, हम कह सकते हैं कि हमारे पास प्रत्येक ऑसिलोस्कोप के लिए एडीसी के लगभग 7.75 नमूने हैं।

प्रत्येक आस्टसीलस्कप नमूने के सूचकांक को गुणा करने पर एक ही वक्र होता है, लेकिन एडीसी और पुनर्वितरित डेटा के बराबर सूचकांकों के साथ।

नए पदों के लिए अनुपलब्ध डेटा को भरने के लिए, हम एक ऐसा वक्र लागू करेंगे जो सांख्यिकीय रूप से ज्ञात डेटा को फिट करता है।

चरण 12: अंतराल भरना - रुझान रेखा

अंतराल भरना - रुझान रेखा
अंतराल भरना - रुझान रेखा
अंतराल भरना - रुझान रेखा
अंतराल भरना - रुझान रेखा

ज्ञात डेटा (नीले बिंदु) का चयन करके, क्लिक करके और फिर दाएं बटन से क्लिक करके, हम चुनते हैं: "ट्रेंड लाइन जोड़ें …"

दिखाई देने वाली विंडो में, हम बहुपद प्रकार का चयन करते हैं (ऑर्डर 2 पर्याप्त होगा)।

हमने "चार्ट में समीकरण देखें" और "चार्ट में आर-वर्ग मान प्रदर्शित करें" विकल्पों की भी जाँच की।

हम "बंद" पर क्लिक करते हैं।

चरण 13: अंतरालों को भरना - ग्रेड 2 बहुपद वक्र

अंतराल में भरना - ग्रेड 2 बहुपद वक्र
अंतराल में भरना - ग्रेड 2 बहुपद वक्र

एक्सेल हमें दो नई जानकारी देता है; दूसरे क्रम का समीकरण जो डेटा के लिए सबसे उपयुक्त है, और आर-वर्ग समीकरण जो इस पर्याप्तता को निर्धारित करता है।

बस याद रखें कि 1 के करीब, समीकरण जितना उपयुक्त होगा।

आइए इसमें शामिल गणित में तल्लीन न करें, आइए इसे केवल एक उपकरण के रूप में उपयोग करें।

चरण 14: अंतरालों को भरना - फलन का मूल्यांकन करना

आइए समीकरण द्वारा उत्पन्न डेटा के साथ नमूना अंतराल को भरें। और फिर, उनकी बिंदु दर बिंदु तुलना करें।

वाई = -9ई-08x2 + 0, 0014x + 0, 1505

आर² = 0, 9999

ऑसिलोस्कोप वोल्टेज = -9E-08 * इंडेक्स 2 + 0, 0014 * इंडेक्स + 0, 1505

चरण 15: एडीसी के साथ तुलना करने के लिए ऑसिलोस्कोप वोल्टेज को एक समतुल्य मान में परिवर्तित करना

एडीसी के साथ तुलना करने के लिए ऑसिलोस्कोप वोल्टेज को एक समतुल्य मान में परिवर्तित करना
एडीसी के साथ तुलना करने के लिए ऑसिलोस्कोप वोल्टेज को एक समतुल्य मान में परिवर्तित करना

आइए इसका लाभ उठाकर आस्टसीलस्कप वोल्टेज के मान को समान ADC मान में बदलें।

चूंकि ESP32 के ADP में प्राप्त उच्चतम मूल्य 4095 था, जो समान सूचकांक के लिए 2.958V के पढ़ने के बराबर है, हम कह सकते हैं कि:

आस्टसीलस्कप के माप में प्रत्येक वोल्ट AD की लगभग 1384.4 इकाइयों के बराबर होता है। इसलिए, हम आस्टसीलस्कप के सभी मापों को इस मान से गुणा कर सकते हैं।

चरण 16: प्राप्त दो रैंपों की तुलना करना

प्राप्त दो रैंप की तुलना
प्राप्त दो रैंप की तुलना

दो रीडिंग में प्राप्त अंतरों की कल्पना करना।

चरण 17: एडीसी पठन अंतर का व्यवहार (त्रुटि)

एडीसी पठन अंतर का व्यवहार (त्रुटि)
एडीसी पठन अंतर का व्यवहार (त्रुटि)

नीचे दिया गया वक्र दिखाता है कि एडीसी रीडिंग में अंतर माप के कार्य के रूप में कैसे व्यवहार करता है। डेटा का यह संग्रह हमें एक सुधार कार्य खोजने की अनुमति देगा।

इस वक्र को खोजने के लिए, हम प्रत्येक माप में पाए गए अंतर को प्रत्येक संभावित AD स्थिति (0 से 4095) के फलन के रूप में प्लॉट करते हैं।

चरण 18: एडीसी रीडिंग डिफरेंस बिहेवियर - फाइंडिंग ए करेक्शन फंक्शन

एडीसी पठन अंतर व्यवहार - एक सुधार समारोह ढूँढना
एडीसी पठन अंतर व्यवहार - एक सुधार समारोह ढूँढना

जब तक यह हमारे डेटा के साथ पर्याप्त रूप से फिट नहीं हो जाता, तब तक हम एक उच्च स्तर की ट्रेंड लाइन जोड़कर एक्सेल में एक सुधार फ़ंक्शन निर्धारित कर सकते हैं।

चरण 19: अन्य सॉफ़्टवेयर का उपयोग करना

अन्य सॉफ्टवेयर का उपयोग करना
अन्य सॉफ्टवेयर का उपयोग करना
अन्य सॉफ़्टवेयर का उपयोग करना
अन्य सॉफ़्टवेयर का उपयोग करना
अन्य सॉफ्टवेयर का उपयोग करना
अन्य सॉफ्टवेयर का उपयोग करना
अन्य सॉफ्टवेयर का उपयोग करना
अन्य सॉफ्टवेयर का उपयोग करना

वक्र निर्धारित करने के लिए अन्य दिलचस्प सॉफ्टवेयर पॉलीसोल्व है, जिसका उपयोग सीधे लिंक पर किया जा सकता है: https://arachnoid.com/polysolve/ या जावा एप्लिकेशन के रूप में डाउनलोड किया गया।

यह उच्च-डिग्री बहुपद प्रतिगमन और स्वरूपित फ़ंक्शन के वितरण के साथ-साथ अन्य कार्यात्मकताओं के आवेदन की अनुमति देता है।

इसका उपयोग करने के लिए, बस पहले टेक्स्ट बॉक्स में डेटा दर्ज करें। डेटा को अल्पविराम या टैब द्वारा अलग किए गए क्रम X, Y का पालन करना चाहिए। दशमलव बिंदु के रूप में बिंदु का सही ढंग से उपयोग करने में सावधानी बरतें।

यदि दर्ज किया गया डेटा सही ढंग से फ़ॉर्मेट किया गया है, तो अगले बॉक्स में एक चार्ट दिखाई देगा।

यहां बताया गया है कि हमारा ADC त्रुटि वक्र कैसे चला गया।

यह विंडो प्रतिगमन का परिणाम प्रस्तुत करेगी, जिसमें फ़ंक्शन पर्याप्तता डेटा शामिल है, जो बदले में इसके आउटपुट को कई तरीकों से स्वरूपित कर सकता है: C / C ++ फ़ंक्शन के रूप में, गुणांक की एक सूची, जावा में लिखा गया फ़ंक्शन, आदि।

नोट: दशमलव विभाजकों पर ध्यान दें

चरण 20: स्थिरांक और सेटअप ()

मैं यहाँ इंगित करता हूँ कि GPIO एनालॉग कैप्चर के लिए उपयोग किया जाता है। मैं सीरियल पोर्ट, साथ ही साथ एनालॉग कैप्चर के लिए निर्धारित पिन को इनिशियलाइज़ करता हूं।

const int pin_leitura = ३६; //GPIO usado para captura analógica void setup() { Serial.begin(1000000); // डिबग पिनमोड (pin_leitura, INPUT) के लिए एक पोर्टा सीरियल की जांच करें; // पिनो यूटिलाइज़ाडो पैरा कैप्चुरा एनालोजिका }

चरण 21: लूप () और सुधार कार्य

हम समायोजित वोल्टेज पर कब्जा करते हैं, और हम मूल्यों को सही सुधारों के साथ या बिना प्रिंट करते हैं।

शून्य लूप () { int valor_analogico = analogRead (pin_leitura); //रियलज़ा ए कैप्टुरा डा टेनसाओ अजस्टडा // सीरियल.प्रिंट (वैलोर_एनालोगिको + एफ (वैलोर_एनालोगिको)); // इंप्राइम ओएस वेलोरेस पैरा डिबग (COM CORREÇÃO) सीरियल.प्रिंट (valor_analogico); // इंप्रिमाइम ओएस वेलोरेस पैरा डिबग (SEM CORREÇÃO) सीरियल.प्रिंट ("", "); Serial.print(4095);//cria uma linha para marcar o valor máximo de 4095 Serial.print(", "); सीरियल.प्रिंट्लन(0); // cria uma linha para marcar o valor minimo de 0 }

पंक्ति 12 में ध्यान दें कि हमारे पास अंतर फ़ंक्शन f (analog_value) के अतिरिक्त डेटा को प्रिंट करने का विकल्प है।

चरण 22: PolySolve सुधार फ़ंक्शन का उपयोग करना

यहां, हम Arduino IDE के अंदर PolySolve फ़ंक्शन का उपयोग करते हैं।

/* मोड: सामान्य बहुपद डिग्री 6, 2365 x, y डेटा जोड़े सहसंबंध गुणांक (r^2) = 9, 907187626418e-01 मानक त्रुटि = 1, 353761109831e+01 आउटपुट फॉर्म: C/C++ फ़ंक्शन: कॉपीराइट © 2012, P. लुटस - https://www.arachnoid.com। सर्वाधिकार सुरक्षित। */ डबल एफ (डबल एक्स) {रिटर्न २.२०२१९६९६८८७६ई+०२ + ३.५६१३८३९९६०२७ई-०१ * एक्स + १.२७६२१८७८८८९८५ई-०४ * पाउ (एक्स, २) + -३.४७०३६०२७५४४८ई-०७ * पाउ (एक्स, 3) + २.०८२७९०८०२०६९ई- 10 * पाउ (एक्स, 4) + -5.30693174991e-14 * पाउ (एक्स, 5) + 4.787659214703e-18 * पाउ (एक्स, 6); }

कॉमा-दर-डॉट परिवर्तन को दशमलव विभाजक के रूप में नोट करें।

चरण 23: सुधार के साथ कब्जा - प्लॉटर सीरियल

सुधार के साथ कब्जा - प्लॉटर सीरियल
सुधार के साथ कब्जा - प्लॉटर सीरियल

चरण 24: कम्प्यूटेशनल लागत

कम्प्यूटेशनल लागत
कम्प्यूटेशनल लागत
कम्प्यूटेशनल लागत
कम्प्यूटेशनल लागत

बहुपद गणना करने के लिए, प्रोसेसर के लिए इस कार्य को संभालना आवश्यक है। इससे स्रोत कोड और उपलब्ध कंप्यूटिंग शक्ति के आधार पर निष्पादन में देरी हो सकती है।

यहां, हम बहु-डिग्री बहुपदों का उपयोग करते हुए एक परीक्षण की परिणाम तालिका देखते हैं। उस समय के बीच के अंतर पर ध्यान दें जब पाउ () फ़ंक्शन का उपयोग किया गया था और जब यह नहीं था।

चरण 25: टेस्ट कोड - सेटअप () और लूप स्टार्ट ()

यहां, हमारे पास हमारे परीक्षण में उपयोग किया गया कोड है।

शून्य सेटअप () {Serial.begin(1000000); // डिबग के लिए एक पोर्टा सीरियल की जांच करें } शून्य लूप () {फ्लोट valor_analogico = ५००.०; //उम वेलोर आर्बट्रारियो फ्लोट क्वांटिडेड = १००००.०; // क्वांटिडेड डे चामादास फ्लोट कोंटाडोर = ०.०; // कोंटाडोर डी चामादास

चरण 26: टेस्ट कोड - लूप () और प्रसंस्करण

मैंने माइक्रोसेकंड में मान प्राप्त करने के लिए माइक्रो () फ़ंक्शन का उपयोग किया।

//============= प्रक्रिया या प्रक्रिया फ्लोट अगोरा = माइक्रो (); // मार्का ओ इंस्टेंट इनिशियल जबकि (contador <क्वांटिडेड) {//v (valor_analogico); // função vazia //r(valor_analogico); // função com retorno //f0(valor_analogico); // ग्रे 0 // f1 (valor_analogico); // ग्रु 1 // f2 (valor_analogico); // ग्रे 2 // f3 (valor_analogico); // ग्रे 3 // f4 (valor_analogico); // ग्रे 4 // f5 (valor_analogico); // ग्रे 5 // f6 (valor_analogico); // ग्रे 6 // f13_semPow (valor_analogico); //grau 13º SEM a função POW //f13_comPow(valor_analogico); //grau 13º COM a função POW contador++; } अगोरा = (माइक्रो () - अगोरा) / मात्रा; // निर्धारित ओ इंटरवलो क्यू से पासौ पैरा कैडा iteração //=========== फाइनलीजा ओ प्रोसेसो

चरण 27: टेस्ट कोड - लूप () - परिणाम

हम तुलना के लिए POW के साथ और बिना ग्रेड 13 फ़ंक्शन से लौटाए गए मान को प्रिंट करते हैं, साथ ही प्रसंस्करण अंतराल भी।

// इम्प्राइम ओ वेलोर रिटोर्नेडो दा फनकाओ डे ग्राउ 13 कॉम ई सेम पाउ पैरा तुलना सीरियल.प्रिंट(f13_semPow(valor_analogico)); //grau 13º SEM a função POW Serial.print("-"); सीरियल.प्रिंट (f13_comPow (valor_analogico)); //grau 13º COM a função POW Serial.print("-"); // इंप्राइम ओ इंटरवलो डू प्रोसेसमेंटो सीरियल.प्रिंट्लन (अगोरा, ६); }

चरण 28: टेस्ट कोड - प्रयुक्त कार्य

डिग्री 0 और 1 के खाली कार्य (केवल वापसी के साथ)।

//FUNÇÃO VAZIAdouble v (डबल x) { } //FUNÇÃO SOMENTE COM RETORNO डबल r (डबल x) {रिटर्न x; } //FUNÇÃO DE GRAU 0 डबल f0(डबल x) {रिटर्न 2.202196968876e+02; } //FUNÇÃO DE GRAU 1 डबल f1(डबल x) {रिटर्न 2.202196968876e+02 + 3.561383996027e-01 * x; }

ग्रेड 2, 3 और 4 के कार्य।

//FUNÇÃO DE GRAU 2double f2 (डबल x) {रिटर्न 2.202196968876e+02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow(x, 2); } //FUNÇÃO DE GRAU 3 डबल f3 (डबल x) {रिटर्न 2.202196968876e+02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow(x, 2) + -3.470360275448e-07 * pow(x, 3); } //FUNÇÃO DE GRAU 4 डबल f4 (डबल x) {रिटर्न 2.202196968876e+02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow(x, 2) + -3.470360275448e-07 * pow(x, 3) + २.०८२७९०८०२०६९e-10 * पाउ(x, ४); }

ग्रेड 5 और 6 के कार्य।

//FUNÇÃO DE GRAU 5 डबल f5 (डबल x) {रिटर्न 2.202196968876e+02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow(x, 2) + -3.470360275448e-07 * pow(x, 3) + २.०८२७९०८०२०६९ई-१० * पाउ(एक्स, ४) + -5.३०६९३११७४९९१ई-१४ * पाउ(एक्स, ५); } //FUNÇÃO DE GRAU 6 डबल f6(डबल x) {रिटर्न 2.202196968876e+02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow(x, 2) + -3.470360275448e-07 * pow(x, 3) + २.०८२७९०८०२०६९e-10 * पाउ(एक्स, ४) + -5.३०६९३११७४९९१ई-१४ * पाउ(एक्स, ५) + ४.७८७६५९२१४७०३ई-१८ * पाउ(एक्स, ६); }

POW का उपयोग करके ग्रेड 13 फ़ंक्शन।

//FUNÇÃO DE GRAU 13 USANDO O POWdouble f13_comPow(डबल x) { रिटर्न 2, 161282383460e+02 + 3, 944594843419e-01 * x + 5, 395439724295e-04 * pow(x, 2) + -3, 968558178426e-06 * पाउ (एक्स, 3) + 1, 047910519933e-08 * पाउ (एक्स, 4) + -1, 479271312313e-11 * पाउ (एक्स, 5) + 1, 220894795714e-14 * पाउ (एक्स, 6) + -6, 136200785076e-18 * पाउ (x, 7) + 1, 910015248179e-21 * पाउ (x, 8) + -3, 566607830903e-25 * पाउ (x, 9) + 5, 000280815521e-30 * पाउ (x, 10) + 3, 434515045670e-32 * पाउ(x, 11) + -1, 407635444704e-35 * पाउ(x, 12) + 9, 871816383223e-40 * पाउ(x, 13); }

POW का उपयोग किए बिना ग्रेड 13 फ़ंक्शन।

//FUNÇÃO DE GRAU SEM USAR O POWdouble f13_semPow (डबल x) {रिटर्न 2, 161282383460e+02 + 3, 944594843419e-01 * x + 5, 395439724295e-04 * x * x + -3, 968558178426e-06 * x * x * x + 1, 047910519933e-08 * x * x * x * x + -1, 479271312313e-11 * x * x * x * x * x + 1, 220894795714e-14 * x * x * x * x * x * x + -6, 136200785076e-18 * x * x * x * x * x * x * x + 1, 910015248179e-21 * x * x * x * x * x * x * x + -3, 566607830903e- 25 * x * x * x * x * x * x * x * x + 5, 000280815521e-30 * x * x * x * x * x * x * x * x * x * x + 3, 434515045670e- 32 * x * x * x * x * x * x * x * x * x * x * x + -1, 407635444704e-35 * x * x * x * x * x * x * x * x * x * x * x * x + 9, 871816383223e-40 * x * x * x * x * x * x * x * x * x * x * x * x; }

चरण 29: फ़ाइलें

फ़ाइलें डाउनलोड करें:

पीडीएफ

मैं नहीं

स्प्रेडशीट

सिफारिश की: