Სარჩევი:

იცით ESP32 ADC რეგულირების შესახებ ?: 29 ნაბიჯი
იცით ESP32 ADC რეგულირების შესახებ ?: 29 ნაბიჯი

ვიდეო: იცით ESP32 ADC რეგულირების შესახებ ?: 29 ნაბიჯი

ვიდეო: იცით ESP32 ADC რეგულირების შესახებ ?: 29 ნაბიჯი
ვიდეო: #340 How good are the ADCs inside Arduinos, ESP8266, and ESP32? And external ADCs (ADS1115) 2024, ნოემბერი
Anonim
Image
Image
გამოყენებული რესურსები
გამოყენებული რესურსები

დღეს, მე ვაპირებ ვისაუბრო უფრო ტექნიკურ საკითხზე, მაგრამ ერთი, ჩემი აზრით, ყველამ, ვინც მუშაობს ESP32– ით, უნდა იცოდეს: ADC– ის (ანალოგურ-ციფრულ გადამყვანად) საკითხი კითხულობს კორექტირებას. მე ეს მნიშვნელოვანია, რადგან "გაზომვის" გაკეთებისას, განსაკუთრებით ინსტრუმენტთან, რომელსაც აქვს ანალოგური გამომუშავება, თქვენ უნდა იყოთ აბსოლუტურად დარწმუნებული, რომ კითხვა სწორად არის შესრულებული.

ამიტომ დღეს ვიდეოში ჩვენ განვახორციელებთ გაზომვებს ESP32- ის "ანალოგურ-ციფრული გადამყვანის" გამოყენებით, დავაკვირდებით კონვერტაციის შეუსაბამობებს და გამოვიყენებთ ADC კორექტირების / დაკალიბრების მეთოდს.

ნაბიჯი 1: რა არის AD კონვერტორი?

AD კონვერტორი არის წრე, რომელსაც შეუძლია ანალოგური (უწყვეტი) რაოდენობა ციფრულ (დისკრეტულ) მნიშვნელობებად გადათარგმნოს. Ეს რას ნიშნავს? ეს ნიშნავს, რომ ციფრულ მნიშვნელობებს შეუძლიათ მიიღონ მხოლოდ ნულოვანი და ერთეულების კომბინაციით წარმოქმნილი დისკრეტული მნიშვნელობები, მაგრამ ანალოგიურ რაოდენობას შეუძლია მიიღოს ნებისმიერი მნიშვნელობა დიაპაზონში. მაგალითად, თუ გავზომავდით იდეალური AA უჯრედის ძაბვას, ჩვენ ვიპოვით ნებისმიერ მნიშვნელობას 0V– დან 1.5V– მდე, რადგან ეს არის ანალოგური რაოდენობა. იდეალური ნათურის გამომავალი მდგომარეობა უნდა ითვალისწინებდეს მხოლოდ ორ მდგომარეობას (გამორთული ან ჩართული), რაც არის დისკრეტული სიდიდე. ვინაიდან მიკროკონტროლერები მუშაობენ ამ დისკრეტული ლოგიკის გამოყენებით, ჩვენ გვჭირდება წრე, რომელსაც შეუძლია ანალოგური რაოდენობის ციფრულ (ან დისკრეტულ) თარგმნა.

ნაბიჯი 2: გამოყენებული რესურსები

• ერთი Lolin32 Lite ბარათი v1.0.0

• Tektronix TDS1001C ოსცილოსკოპი გადასაღებად

• ერთი USB კაბელი ESP32– ისთვის

• Hantek DSO4102C oscilloscope როგორც სიგნალის გენერატორი

ნაბიჯი 3: ESP32 ADC

ESP32 ADC
ESP32 ADC

Espressif– ის მონაცემების თანახმად, ESP32 ჩიპს შეუძლია წარმოადგინოს +/- 6% სხვაობა ერთი ჩიპიდან მეორეზე გაზომილ შედეგებში.

გარდა ამისა, კონვერტაციას არ აქვს წრფივი პასუხი კითხვის ყველა ხელმისაწვდომი დიაპაზონისთვის. Espressif უზრუნველყოფს კალიბრაციის მეთოდს და გვთავაზობს მომხმარებლებს განახორციელონ სხვა მეთოდები, თუ ისინი საჭიროდ მიიჩნევენ სასურველი სიზუსტის მისაღწევად.

ჩვენ შევასრულებთ მონაცემთა მოპოვებას და აქედან, ჩვენ ვაჩვენებთ ADC პასუხებს და მათემატიკური პროცესის გამოყენების მაგალითს კორექტირების წასაკითხად.

არსებობს რამდენიმე (უფრო მარტივი ან უფრო რთული) გზა ამ გამოსწორების მისაღწევად. თქვენზეა დამოკიდებული შეაფასოთ ყველაზე შესაფერისი თქვენი პროექტისათვის.

აქ ნაჩვენები იქნება საილუსტრაციო მიზანი და შეეცდება გაეცნოს საინტერესო პუნქტებს, რომელთა დაკვირვებაც შესაძლებელია კორექტირების დროს.

ნაბიჯი 4: წრე გამოიყენება

წრე გამოიყენება
წრე გამოიყენება

მე გამოვიყენე oscilloscope სიგნალის გენერატორით, რომელიც მიდის 25 MHz– მდე, Hantek DSO4102C. ჩვენ შევქმენით ტალღა, რომელიც წაიკითხეს ESP A / D და oscilloscope. შეგროვებული მონაცემები ჩაწერილია csv- ში და ცხრილში, რომელსაც გადმოწერისთვის დავტოვებ სტატიის ბოლოს.

ნაბიჯი 5: ხელმოწერა მეორადი

ხელმოწერა მეორადი
ხელმოწერა მეორადი

ჩვენ ავირჩიეთ დაბალი სიხშირის ტრაპეციული სიგნალი, რომელიც იძლევა წვდომას იმ პანდუსებზე, რომლებიც გადის კონვერტაციის მთელ დიაპაზონში. ეს იძლევა დიდი რაოდენობის ნიმუშებს ამ პანდუსებზე.

ნაბიჯი 6: მონაცემები მოპოვებულია ოსცილოსკოპით

მონაცემები მოპოვებულია ოსცილოსკოპით
მონაცემები მოპოვებულია ოსცილოსკოპით

გადაღების სურათი შესრულებულია ოსცილოსკოპით. მონაცემები ინახებოდა csv ფაილში. შენიშნეთ სიგნალის ამომავალი და დაცემული უმნიშვნელო მრუდი.

ნაბიჯი 7: ოსცილოსკოპით მოპოვებული მონაცემები (csv ფაილი Excel- ში)

ოსცილოსკოპით მოპოვებული მონაცემები (csv ფაილი Excel- ში)
ოსცილოსკოპით მოპოვებული მონაცემები (csv ფაილი Excel- ში)

ჩვენ გვაქვს ნიმუშები აქ.

ნაბიჯი 8: ADC მიერ მოპოვებული მონაცემები

მონაცემები მოპოვებულია ADC– ს მიერ
მონაცემები მოპოვებულია ADC– ს მიერ

სერიის გადაცემის სიჩქარის შეცვლით, ჩვენ შეგვიძლია დავინახოთ ADC მიერ გადაღებული მონაცემები. დააკვირდით ტრაპეციული სიგნალის დეფორმაციას.

მონაცემები დაფიქსირებულია Arduino IDE სერიულ პლოტერზე

ნაბიჯი 9: ADC– ით მიღებული მონაცემები - Excel

ADC– ით მოპოვებული მონაცემები - Excel
ADC– ით მოპოვებული მონაცემები - Excel

უფრო მაღალი მაჩვენებლისა და სერიული ტერმინალის გამოყენებით, ჩვენ შეგვიძლია მივიღოთ მნიშვნელობები და გამოვიყენოთ ისინი Excel- ში ჩვენი შედარებისთვის.

ნაბიჯი 10: ასვლაზე გადასასვლელების შედარება

ასვლა რამოსების შედარება
ასვლა რამოსების შედარება

ჩვენ შევადარებთ ორი დაჭერის ორ საფეხურზე.

გაითვალისწინეთ მრუდი, რომელიც ხდება ორივე პანდუსზე.

გაითვალისწინეთ ისიც, რომ იმავე პანდუსისთვის ჩვენ გვაქვს ESP32– ის ბევრად მეტი ნიმუში, ვიდრე ოსცილოსკოპიდან.

ნაბიჯი 11: ნიმუშების რაოდენობის გათანაბრება

ნიმუშების რაოდენობის გათანაბრება
ნიმუშების რაოდენობის გათანაბრება
ნიმუშების რაოდენობის გათანაბრება
ნიმუშების რაოდენობის გათანაბრება

იმის გამო, რომ ESP32– მა მოიტანა უფრო დიდი რაოდენობის ნიმუშები ვიდრე ოსცილოსკოპი, ჩვენ უნდა გავათანაბროთ ეს მნიშვნელობები, რადგან ისინი იქნება ინდექსი ორი მრუდის შესადარებლად.

ამისათვის ჩვენ გავაკეთებთ პირდაპირ შედარებას.

ჩვენ გვაქვს 305 ნიმუში oscilloscope ramp და 2365 ნიმუში ADC ramp.

ვინაიდან პანდუსები ერთი და იმავე დიაპაზონისაა, შეგვიძლია ვთქვათ, რომ ჩვენ გვაქვს ყოველწლიური ოსცილოსკოპის ADC- ს დაახლოებით 7.75 ნიმუში.

თითოეული ოსცილოსკოპის ნიმუშის ინდექსის გამრავლებას აქვს იგივე მრუდი, მაგრამ ADC- ს ექვივალენტური მაჩვენებლებით და გადანაწილებული მონაცემებით.

ახალი პოზიციებისთვის დაკარგული მონაცემების შესავსებად, ჩვენ გამოვიყენებთ მრუდს, რომელიც სტატისტიკურად შეესაბამება ცნობილ მონაცემებს.

ნაბიჯი 12: ხარვეზების შევსება - ტრენდის ხაზი

ხარვეზების შევსება - ტრენდის ხაზი
ხარვეზების შევსება - ტრენდის ხაზი
ხარვეზების შევსება - ტრენდის ხაზი
ხარვეზების შევსება - ტრენდის ხაზი

ვირჩევთ ცნობილ მონაცემებს (ლურჯი წერტილები), დაჭერით და შემდეგ მარჯვენა ღილაკით, ჩვენ ვირჩევთ: "ტრენდის ხაზის დამატება …"

ფანჯარაში, რომელიც გამოჩნდება, ჩვენ ვირჩევთ პოლინომიურ ტიპს (ბრძანება 2 საკმარისი იქნება).

ჩვენ ასევე შევამოწმეთ პარამეტრები "განტოლების ნახვა დიაგრამაში" და "R- კვადრატის მნიშვნელობის ჩვენება დიაგრამაში".

ჩვენ დააჭირეთ "დახურვას".

ნაბიჯი 13: ხარვეზების შევსება - კლასი 2 მრავალწევრიანი მრუდი

ხარვეზების შევსება - 2 კლასის მრავალწევრიანი მრუდი
ხარვეზების შევსება - 2 კლასის მრავალწევრიანი მრუდი

Excel გვაძლევს ორ ახალ ინფორმაციას; მეორე რიგის განტოლება, რომელიც საუკეთესოდ შეესაბამება მონაცემებს და R კვადრატული განტოლება, რომელიც ადეკვატურად ადგენს ამ ადეკვატურობას.

უბრალოდ დაიმახსოვრე, რომ რაც უფრო ახლოს არის 1, მით უფრო შესაბამისია განტოლება.

ნუ ჩავუღრმავდებით მათემატიკას, მოდით გამოვიყენოთ ის როგორც ინსტრუმენტი.

ნაბიჯი 14: ხარვეზების შევსება - ფუნქციის შეფასება

შეავსეთ შერჩევის ხარვეზები განტოლების მიერ წარმოქმნილი მონაცემებით. შემდეგ კი, შეადარეთ ისინი პუნქტით.

y = -9E -08x2 + 0, 0014x + 0, 1505

R² = 0, 9999

ოსცილოსკოპის ძაბვა = -9E -08 * ინდექსი 2 + 0, 0014 * ინდექსი + 0, 1505

ნაბიჯი 15: ოსცილოსკოპის ძაბვის ექვივალენტურ მნიშვნელობად გარდაქმნა ADC– სთან შედარებით

ოსცილოსკოპის ძაბვის ექვივალენტურ მნიშვნელობად გარდაქმნა ADC– სთან შედარებით
ოსცილოსკოპის ძაბვის ექვივალენტურ მნიშვნელობად გარდაქმნა ADC– სთან შედარებით

მოდით ვისარგებლოთ ამით, რომ გარდავქმნათ ოსცილოსკოპის ძაბვის მნიშვნელობა ექვივალენტურ ADC მნიშვნელობად.

ESP32– ის ADP– ში მიღებული უმაღლესი მნიშვნელობა იყო 4095, რაც იგივე მაჩვენებლის 2.958V კითხვის ტოლფასია, შეგვიძლია ვთქვათ, რომ:

თითოეული ვოლტი ოსცილოსკოპის გაზომვებში უახლოვდება ახ.წ.აღ. 1384.4 ერთეულს. ამრიგად, ჩვენ შეგვიძლია გავამრავლოთ ოსცილოსკოპის ყველა გაზომვა ამ მნიშვნელობით.

ნაბიჯი 16: მიღებული ორი პანდუსის შედარება

შედარება მიღწეული ორი პანდუსით
შედარება მიღწეული ორი პანდუსით

ორ კითხვაში მიღებული განსხვავებების ვიზუალიზაცია.

ნაბიჯი 17: ADC კითხვის სხვაობის ქცევა (ERROR)

ADC კითხვის სხვაობის ქცევა (ERROR)
ADC კითხვის სხვაობის ქცევა (ERROR)

ქვემოთ მოყვანილი მრუდი გვიჩვენებს, თუ როგორ იქცევა ADC კითხვის სხვაობა გაზომვის ფუნქციის შესაბამისად. მონაცემთა ეს კოლექცია მოგვცემს საშუალებას ვიპოვოთ შესწორების ფუნქცია.

ამ მრუდის საპოვნელად, ჩვენ უბრალოდ ვხატავთ განსხვავებას, რომელიც ნაპოვნია თითოეულ გაზომვაში, როგორც ახ. წ. თითოეული პოზიციის ფუნქცია (0 -დან 4095 წლამდე).

ნაბიჯი 18: ADC კითხვის სხვაობის ქცევა - გამოსწორების ფუნქციის პოვნა

ADC კითხვის სხვაობა ქცევა - გამოსწორების ფუნქციის პოვნა
ADC კითხვის სხვაობა ქცევა - გამოსწორების ფუნქციის პოვნა

ჩვენ შეგვიძლია განვსაზღვროთ კორექციის ფუნქცია ტრენდის ხაზის დამატებით, ახლა უფრო მაღალი ხარისხის, სანამ ის საკმარისად არ ჯდება ჩვენს მონაცემებთან.

ნაბიჯი 19: სხვა პროგრამული უზრუნველყოფის გამოყენება

სხვა პროგრამული უზრუნველყოფის გამოყენება
სხვა პროგრამული უზრუნველყოფის გამოყენება
სხვა პროგრამული უზრუნველყოფის გამოყენება
სხვა პროგრამული უზრუნველყოფის გამოყენება
სხვა პროგრამული უზრუნველყოფის გამოყენება
სხვა პროგრამული უზრუნველყოფის გამოყენება
სხვა პროგრამული უზრუნველყოფის გამოყენება
სხვა პროგრამული უზრუნველყოფის გამოყენება

მოსახვევების განსაზღვრის სხვა საინტერესო პროგრამული უზრუნველყოფა არის PolySolve, რომელიც შეიძლება გამოყენებულ იქნას პირდაპირ ბმულზე: https://arachnoid.com/polysolve/ ან გადმოწერილი როგორც Java პროგრამა.

ის იძლევა უმაღლესი ხარისხის მრავალწევრიანი რეგრესიების გამოყენებას და ფორმატირებული ფუნქციის, ასევე სხვა ფუნქციონალურობის განხორციელებას.

მისი გამოსაყენებლად, უბრალოდ შეიყვანეთ მონაცემები პირველ ტექსტურ ყუთში. მონაცემები უნდა დაიცვას ბრძანება X, Y გამოყოფილი მძიმით ან ჩანართით. გამოიჩინეთ სიფრთხილე წერტილის სწორად გამოყენება ათწილადის სახით.

დიაგრამა გამოჩნდება მომდევნო ყუთში, თუ შეყვანილი მონაცემები სწორად არის ფორმატირებული.

აი, როგორ წავიდა ჩვენი ADC შეცდომის მრუდი.

ეს ფანჯარა წარმოგიდგენთ რეგრესიის შედეგს, მათ შორის ფუნქციის ადეკვატურობის მონაცემებს, რაც თავის მხრივ შეიძლება გამომავალი ფორმატირებული იყოს რამდენიმე გზით: როგორც C / C ++ ფუნქცია, კოეფიციენტების ჩამონათვალი, ფუნქცია Java- ზე დაწერილი და ა.

შენიშვნა: ყურადღება მიაქციეთ ათობითი გამყოფებს

ნაბიჯი 20: მუდმივები და დაყენება ()

აქვე აღვნიშნავ, რომ GPIO გამოიყენება ანალოგური გადაღებისთვის. მე ვიწყებ სერიულ პორტს, ისევე როგორც ანალოგურ გადაღებისთვის განსაზღვრულ პინს.

const int pin_leitura = 36; // GPIO usado para captura analógica void setup () {Serial.begin (1000000); // მიუთითეთ პორტატული სერიული პუნქტი გამართვისთვის pinMode (pin_leitura, INPUT); // Pino utilizado para captura analógica}

ნაბიჯი 21: მარყუჟი () და კორექტირების ფუნქცია

ჩვენ ვიღებთ მორგებული ძაბვის დაჭერას და ვბეჭდავთ მნიშვნელობებს სწორი შესწორებებით ან მის გარეშე.

void loop () {int valor_analogico = analogRead (pin_leitura); // realiza a captura da tensão ajustada //Serial.print(valor_analogico + f (valor_analogico)); // imprime os valores para debug (COM CORREÇÃO) Serial.print (valor_analogico); // imprimime os valores para debug (SEM CORREÇÃO) Serial.print (","); Serial.print (4095); // cria uma linha para marcar o valor máximo de 4095 Serial.print (","); Serial.println (0); // cria uma linha para marcar o valor mínimo de 0}

გაითვალისწინეთ მე -12 სტრიქონი, რომ ჩვენ გვაქვს მონაცემების დაბეჭდვის შესაძლებლობა განსხვავების ფუნქციის დამატებით f (analog_value).

ნაბიჯი 22: PolySolve კორექტირების ფუნქციის გამოყენება

აქ ჩვენ ვიყენებთ PolySolve ფუნქციას Arduino IDE- ს შიგნით.

/* რეჟიმი: ნორმალური მრავალწევრიანი ხარისხი 6, 2365 x, y მონაცემთა წყვილი კორელაციის კოეფიციენტი (r^2) = 9, 907187626418e-01 სტანდარტული შეცდომა = 1, 353761109831e+01 გამომავალი ფორმა: C/C ++ ფუნქცია: საავტორო უფლება © 2012, P. ლუტუსი - https://www.arachnoid.com. Ყველა უფლება დაცულია. */ ორმაგი f (ორმაგი x) {დაბრუნება 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2) + -3.470360275448e-07 * pow (x, 3) + 2.082790802069e- 10 * pow (x, 4) + -5.306931174991e-14 * pow (x, 5) + 4.787659214703e-18 * pow (x, 6); }

მიაქციეთ ყურადღება მძიმით წერტილის შეცვლას, როგორც ათობითი გამყოფი.

ნაბიჯი 23: გადაღება კორექციით - პლოტერი სერიული

Capture With Correct - Plotter Serial
Capture With Correct - Plotter Serial

ნაბიჯი 24: გამოთვლითი ღირებულება

გამოთვლითი ღირებულება
გამოთვლითი ღირებულება
გამოთვლითი ღირებულება
გამოთვლითი ღირებულება

მრავალწევრიანი გამოთვლების შესასრულებლად აუცილებელია პროცესორმა გაუმკლავდეს ამ ამოცანას. ამან შეიძლება გამოიწვიოს შეფერხება შესრულებაში, რაც დამოკიდებულია წყაროს კოდზე და გამოთვლილ სიმძლავრეზე.

აქ ჩვენ ვხედავთ ტესტის შედეგების ცხრილს მრავალ გრადუსიანი მრავალწევრების გამოყენებით. შენიშნეთ განსხვავება იმ დროებს შორის, როდესაც pow () ფუნქცია გამოიყენებოდა და როცა არა.

ნაბიჯი 25: ტესტი კოდი - დაყენება () და მარყუჟის დაწყება ()

აქ, ჩვენ გვაქვს კოდი, რომელიც გამოიყენება ჩვენს ტესტში.

void setup () {Serial.begin (1000000); // iniciando a porta serial somente para debug} void loop () {float valor_analogico = 500.0; // um valor arbtrario float quantidade = 10000.0; // quantidade de chamadas float contador = 0.0; // contador de chamadas

ნაბიჯი 26: ტესტი კოდი - მარყუჟი () და დამუშავება

მე გამოვიყენე micros () ფუნქცია, რომ მივიღო მნიშვნელობა მიკროწამებში.

// ============= inicia o processo float agora = micros (); // marca o instante inicial while (contador <quantidade) {// v (valor_analogico); // função vazia // r (valor_analogico); // função com retorno // f0 (valor_analogico); // grau 0 // f1 (valor_analogico); // grau 1 // f2 (valor_analogico); // grau 2 // f3 (valor_analogico); // grau 3 // f4 (valor_analogico); // grau 4 // f5 (valor_analogico); // grau 5 // f6 (valor_analogico); // grau 6 // f13_semPow (valor_analogico); // grau 13º SEM a função POW // f13_comPow (valor_analogico); // grau 13º COM função POW contador ++; } აგორა = (მიკროს () - აგორა) / კვანტიდადი; // განსაზღვრეთ ინტერვალი, რომლითაც შეგიძლიათ გაიაროთ // ============== საბოლოო პროცესი

ნაბიჯი 27: ტესტის კოდი - მარყუჟი () - შედეგები

ჩვენ ვბეჭდავთ 13 ხარისხის ფუნქციიდან დაბრუნებულ მნიშვნელობას POW– ით და შედარებისთვის, ასევე დამუშავების ინტერვალს.

// imprime o valor retornado da função de grau 13 com e sem POW para comparação Serial.print (f13_semPow (valor_analogico)); // grau 13º SEM função POW Serial.print (" -"); Serial.print (f13_comPow (valor_analogico)); // grau 13º COM função POW Serial.print (" -"); // imprime o intervalo do processamento Serial.println (აგორა, 6); }

ნაბიჯი 28: სატესტო კოდი - გამოყენებული ფუნქციები

0 და 1 ხარისხის ცარიელი ფუნქციები (მხოლოდ დაბრუნებით).

// FUNÇÃO VAZIA ორმაგი 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 2 ორჯერ f2 (ორმაგი x) {დაბრუნება 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2); } // FUNÇÃO DE GRAU 3 double f3 (double x) {return 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2) + -3.470360275448e-07 * pow (x, 3); } // FUNÇÃO DE GRAU 4 double f4 (double x) {return 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2) + -3.470360275448e-07 * pow (x, 3) + 2.082790802069e-10 * ძალა (x, 4); }

მე –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) + 2.082790802069e-10 * pow (x, 4) + -5.306931174991e-14 * pow (x, 5); } // FUNÇÃO DE GRAU 6 double f6 (double x) {return 2.202196968876e + 02 + 3.561383996027e-01 * x + 1.276218788985e-04 * pow (x, 2) + -3.470360275448e-07 * pow (x, 3) + 2.082790802069e-10 * pow (x, 4) + -5.306931174991e-14 * pow (x, 5) + 4.787659214703e-18 * pow (x, 6); }

მე –13 ხარისხის ფუნქცია POW– ის გამოყენებით.

// FUNÇÃO DE GRAU 13 USANDO O POW ორმაგი f13_comPow (ორმაგი x) {დაბრუნება 2, 161282383460e + 02 + 3, 944594843419e-01 * x + 5, 395439724295e-04 * pow (x, 2) + -3, 968558178426e-06 * pow (x, 3) + 1, 047910519933e-08 * pow (x, 4) + -1, 479271312313e-11 * pow (x, 5) + 1, 220894795714e-14 * pow (x, 6) + -6, 136200785076e-18 * pow (x, 7) + 1, 910015248179e-21 * pow (x, 8) + -3, 566607830903e-25 * pow (x, 9) + 5, 000280815521e-30 * pow (x, 10) + 3, 434515045670e-32 * pow (x, 11) + -1, 407635444704e-35 * pow (x, 12) + 9, 871816383223e-40 * pow (x, 13); }

მე –13 ხარისხის ფუნქცია POW– ის გამოყენების გარეშე.

// FUNÇÃO DE GRAU SEM USAR O POW ორმაგი f13_semPow (ორმაგი x) {დაბრუნება 2, 161282383460e + 02 + 3, 944594843419e-01 * x + 5, 395439724295e-04 * x * x + -3, 968558178426e-06 * 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 * x + -6, 136200785076e-18 * x * x * x * x * x * x * x + 1, 910015248179e-21 * x * x * x * x * x * x * x * x + -3, 566607830903e- 25 * x * 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 * x * x; }

ნაბიჯი 29: ფაილები

ჩამოტვირთეთ ფაილები:

PDF

ინო

ცხრილები

გირჩევთ: