สารบัญ:

คุณรู้เกี่ยวกับการปรับ ESP32 ADC หรือไม่: 29 ขั้นตอน
คุณรู้เกี่ยวกับการปรับ ESP32 ADC หรือไม่: 29 ขั้นตอน

วีดีโอ: คุณรู้เกี่ยวกับการปรับ ESP32 ADC หรือไม่: 29 ขั้นตอน

วีดีโอ: คุณรู้เกี่ยวกับการปรับ ESP32 ADC หรือไม่: 29 ขั้นตอน
วีดีโอ: สอนวิธีแก้ปัญหา ESP32 ADC การอ่านค่าไม่ตรง EP38 esp32 ADC tutorial 2024, กรกฎาคม
Anonim
Image
Image
ทรัพยากรที่ใช้
ทรัพยากรที่ใช้

วันนี้ฉันจะพูดถึงปัญหาทางเทคนิคเพิ่มเติม แต่สิ่งหนึ่งที่ฉันคิดว่าทุกคนที่ทำงานกับ ESP32 ควรรู้: ปัญหาของการปรับการอ่าน ADC (ตัวแปลงแอนะล็อกเป็นดิจิทัล) ฉันพบว่าสิ่งนี้สำคัญเพราะเมื่อทำ "การวัด" โดยเฉพาะอย่างยิ่งกับเครื่องมือที่มีเอาต์พุตแบบอะนาล็อก คุณต้องแน่ใจอย่างยิ่งว่าการอ่านนั้นดำเนินการอย่างถูกต้อง

ในวิดีโอวันนี้ เราจะทำการวัดโดยใช้ "ตัวแปลงอนาล็อก-ดิจิตอล" ของ ESP32 สังเกตความคลาดเคลื่อนของการแปลง และใช้วิธีการปรับ/สอบเทียบ ADC

ขั้นตอนที่ 1: AD Converter คืออะไร?

AD converter คือวงจรที่สามารถแปลงปริมาณแอนะล็อก (ต่อเนื่อง) เป็นค่าดิจิทัล (ไม่ต่อเนื่อง) นั่นหมายความว่าอย่างไร? หมายความว่าในขณะที่ค่าดิจิทัลสามารถสันนิษฐานได้เฉพาะค่าที่ไม่ต่อเนื่องที่เกิดจากการรวมกันของศูนย์และค่า แต่ปริมาณแอนะล็อกสามารถสมมติค่าใดก็ได้ภายในช่วง ตัวอย่างเช่น ถ้าเราวัดแรงดันไฟฟ้าของเซลล์ AA ในอุดมคติ เราจะสามารถหาค่าใดๆ ระหว่าง 0V ถึง 1.5V เนื่องจากเป็นปริมาณแอนะล็อก สถานะเอาต์พุตของหลอดไฟในอุดมคติต้องถือว่ามีเพียงสองสถานะ (ปิดหรือเปิด) ซึ่งเป็นขนาดที่ไม่ต่อเนื่อง เนื่องจากไมโครคอนโทรลเลอร์ทำงานโดยใช้ลอจิกแบบแยกส่วนนี้ เราจึงจำเป็นต้องมีวงจรที่สามารถแปลงปริมาณแอนะล็อกเป็นดิจิทัล (หรือแบบแยกส่วน)

ขั้นตอนที่ 2: ทรัพยากรที่ใช้

• การ์ด Lolin32 Lite หนึ่งใบ v1.0.0

• ออสซิลโลสโคป Tektronix TDS1001C สำหรับการจับภาพ

• สาย USB หนึ่งเส้นสำหรับ ESP32

• ออสซิลโลสโคป Hantek DSO4102C เป็นเครื่องกำเนิดสัญญาณ

ขั้นตอนที่ 3: ESP32 ADC

ESP32 ADC
ESP32 ADC

จากข้อมูลของ Espressif ชิป ESP32 อาจแสดงความแตกต่าง +/- 6% จากชิปตัวหนึ่งไปอีกตัวหนึ่งในผลลัพธ์ที่วัดได้

นอกจากนี้ การแปลงไม่มีคำตอบเชิงเส้นสำหรับทุกช่วงที่อ่านได้ Espressif มีวิธีการสอบเทียบและแนะนำให้ผู้ใช้ใช้วิธีอื่นหากเห็นว่าจำเป็นเพื่อให้ได้ความแม่นยำตามที่ต้องการ

เราจะทำการเก็บข้อมูล และจากนี้ เราจะแสดงการตอบสนองของ ADC และตัวอย่างการใช้กระบวนการทางคณิตศาสตร์เพื่ออ่านการปรับปรุง

มีหลายวิธี (ง่ายกว่าหรือซับซ้อนกว่า) ในการแก้ไขเหล่านี้ให้สำเร็จ การประเมินสิ่งที่เหมาะสมที่สุดสำหรับโครงการของคุณขึ้นอยู่กับคุณ

ที่แสดงนี้จะมีจุดประสงค์เพื่อเป็นตัวอย่างและพยายามระบุประเด็นที่น่าสนใจที่สามารถสังเกตได้ระหว่างการปรับ

ขั้นตอนที่ 4: วงจรที่ใช้

วงจรที่ใช้
วงจรที่ใช้

ฉันใช้ออสซิลโลสโคปกับเครื่องกำเนิดสัญญาณที่สูงถึง 25 MHz Hantek DSO4102C เราสร้างคลื่นที่อ่านโดย ESP A / D และออสซิลโลสโคป ข้อมูลที่รวบรวมถูกบันทึกไว้ใน csv และในสเปรดชีต ซึ่งฉันจะทิ้งไว้ที่ส่วนท้ายของบทความเพื่อดาวน์โหลด

ขั้นตอนที่ 5: ลงชื่อเข้าใช้ที่ใช้

ป้ายที่ใช้
ป้ายที่ใช้

เราเลือกสัญญาณสี่เหลี่ยมคางหมูความถี่ต่ำซึ่งช่วยให้สามารถเข้าถึงทางลาดที่วิ่งผ่านช่วงการแปลงทั้งหมด ซึ่งช่วยให้มีตัวอย่างจำนวนมากบนทางลาดเหล่านี้

ขั้นตอนที่ 6: ข้อมูลที่ได้รับจากออสซิลโลสโคป

ข้อมูลที่ได้รับจากออสซิลโลสโคป
ข้อมูลที่ได้รับจากออสซิลโลสโคป

ภาพที่จับได้ดำเนินการโดยออสซิลโลสโคป ข้อมูลถูกเก็บไว้ในไฟล์ csv สังเกตความโค้งเล็กน้อยบนทางลาดขึ้นและลงของสัญญาณ

ขั้นตอนที่ 7: ข้อมูลที่ได้รับจาก Oscilloscope (ไฟล์ csv ใน Excel)

ข้อมูลที่ได้รับจากออสซิลโลสโคป (ไฟล์ csv ใน Excel)
ข้อมูลที่ได้รับจากออสซิลโลสโคป (ไฟล์ csv ใน Excel)

เรามีตัวอย่างที่นี่

ขั้นตอนที่ 8: ข้อมูลที่ได้รับจาก ADC

ข้อมูลที่ได้รับจาก ADC
ข้อมูลที่ได้รับจาก ADC

ด้วยการเปลี่ยนอัตราการถ่ายโอนของซีเรียล เราสามารถดูข้อมูลที่ ADC จับได้ สังเกตการเสียรูปของสัญญาณสี่เหลี่ยมคางหมู

ข้อมูลที่สังเกตได้จากพล็อตเตอร์อนุกรม Arduino IDE

ขั้นตอนที่ 9: ข้อมูลที่ได้รับจาก ADC - Excel

ข้อมูลที่ได้รับจาก ADC - Excel
ข้อมูลที่ได้รับจาก ADC - Excel

การใช้อัตราที่สูงกว่าและเทอร์มินัลอนุกรม เราสามารถบันทึกค่าและนำไปใช้ใน Excel เพื่อการเปรียบเทียบของเรา

ขั้นตอนที่ 10: เปรียบเทียบ Climb Ramps

การเปรียบเทียบ Climb Ramps
การเปรียบเทียบ Climb Ramps

เราเปรียบเทียบทางลาดปีนเขาทั้งสองของที่จับทั้งสอง

สังเกตความโค้งที่เกิดขึ้นบนทางลาดทั้งสอง

โปรดทราบว่าสำหรับทางลาดเดียวกัน เรามีตัวอย่างของ ESP32 มากกว่าจากออสซิลโลสโคป

ขั้นตอนที่ 11: เท่ากับจำนวนตัวอย่าง

เท่ากับจำนวนตัวอย่าง
เท่ากับจำนวนตัวอย่าง
เท่ากับจำนวนตัวอย่าง
เท่ากับจำนวนตัวอย่าง

เนื่องจาก ESP32 ให้ตัวอย่างจำนวนมากกว่าออสซิลโลสโคป เราจึงต้องเทียบค่าเหล่านี้ เนื่องจากจะทำหน้าที่เป็นดัชนีเพื่อเปรียบเทียบเส้นโค้งทั้งสอง

สำหรับสิ่งนี้เราจะทำการเปรียบเทียบโดยตรง

เรามีตัวอย่าง 305 ตัวอย่างสำหรับทางลาดออสซิลโลสโคปและ 2365 ตัวอย่างสำหรับทางลาด ADC

เนื่องจากทางลาดอยู่ในช่วงเดียวกัน เราสามารถพูดได้ว่าเรามีตัวอย่าง ADC ประมาณ 7.75 ตัวอย่างสำหรับออสซิลโลสโคปแต่ละตัว

การคูณดัชนีของตัวอย่างออสซิลโลสโคปแต่ละตัวอย่างมีเส้นโค้งเดียวกัน แต่มีดัชนีที่เทียบเท่ากับ ADC และข้อมูลที่แจกจ่ายซ้ำ

ในการกรอกข้อมูลที่ขาดหายไปสำหรับตำแหน่งใหม่ เราจะใช้เส้นโค้งที่เหมาะกับข้อมูลที่ทราบทางสถิติ

ขั้นตอนที่ 12: เติมช่องว่าง - Trend Line

เติมช่องว่าง - Trend Line
เติมช่องว่าง - Trend Line
เติมช่องว่าง - Trend Line
เติมช่องว่าง - Trend Line

เลือกข้อมูลที่ทราบ (จุดสีน้ำเงิน) โดยคลิกแล้วคลิกปุ่มขวาเราเลือก: "เพิ่มเส้นแนวโน้ม …"

ในหน้าต่างที่ปรากฏขึ้น เราเลือกประเภทพหุนาม (ลำดับที่ 2 ก็เพียงพอแล้ว)

นอกจากนี้เรายังตรวจสอบตัวเลือก "ดูสมการในแผนภูมิ" และ "แสดงค่า R-squared ในแผนภูมิ"

เราคลิก "ปิด"

ขั้นตอนที่ 13: เติมช่องว่าง - เส้นโค้งพหุนามเกรด 2

การเติมช่องว่าง - เส้นโค้งพหุนามเกรด 2
การเติมช่องว่าง - เส้นโค้งพหุนามเกรด 2

Excel ให้ข้อมูลใหม่สองชิ้นแก่เรา สมการอันดับสองที่เหมาะสมกับข้อมูลมากที่สุด และสมการ R-squared ที่หาปริมาณความเพียงพอนี้

จำไว้ว่ายิ่งใกล้ 1 สมการยิ่งเหมาะสม

อย่าเจาะลึกถึงคณิตศาสตร์ที่เกี่ยวข้องกัน ลองใช้มันเป็นเครื่องมือ

ขั้นตอนที่ 14: การเติมช่องว่าง - การประเมินฟังก์ชัน

มาเติมช่องว่างการสุ่มตัวอย่างด้วยข้อมูลที่สร้างจากสมการกัน แล้วเปรียบเทียบทีละจุด

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

R² = 0, 9999

แรงดันออสซิลโลสโคป = -9E-08 * index2 + 0, 0014 * index + 0, 1505

ขั้นตอนที่ 15: การแปลงแรงดันออสซิลโลสโคปเป็นค่าเทียบเท่าเพื่อเปรียบเทียบกับ ADC

การแปลงแรงดันออสซิลโลสโคปเป็นค่าเทียบเท่าเพื่อเปรียบเทียบกับ ADC
การแปลงแรงดันออสซิลโลสโคปเป็นค่าเทียบเท่าเพื่อเปรียบเทียบกับ ADC

มาใช้ประโยชน์จากสิ่งนี้เพื่อแปลงค่าของแรงดันออสซิลโลสโคปเป็นค่า ADC ที่เทียบเท่ากัน

เนื่องจากค่าสูงสุดที่ได้รับใน ADP ของ ESP32 คือ 4095 ซึ่งเทียบเท่ากับค่าที่อ่านได้ 2.958V สำหรับดัชนีเดียวกัน เราสามารถพูดได้ว่า:

แต่ละโวลต์ในการวัดของออสซิลโลสโคปเท่ากับประมาณ 1384.4 หน่วยของ AD ดังนั้นเราจึงสามารถคูณการวัดทั้งหมดของออสซิลโลสโคปด้วยค่านี้

ขั้นตอนที่ 16: เปรียบเทียบสองทางลาดที่ได้รับ

เปรียบเทียบสองทางลาดที่ได้รับ
เปรียบเทียบสองทางลาดที่ได้รับ

การแสดงภาพความแตกต่างที่ได้จากการอ่านทั้งสองครั้ง

ขั้นตอนที่ 17: พฤติกรรมของความแตกต่างในการอ่าน ADC (ข้อผิดพลาด)

พฤติกรรมของความแตกต่างในการอ่าน ADC (ข้อผิดพลาด)
พฤติกรรมของความแตกต่างในการอ่าน ADC (ข้อผิดพลาด)

เส้นโค้งด้านล่างแสดงให้เห็นว่าความแตกต่างในการอ่านค่า ADC ทำงานอย่างไรตามฟังก์ชันของการวัด การรวบรวมข้อมูลนี้จะทำให้เราสามารถค้นหาฟังก์ชันการแก้ไขได้

ในการหาเส้นโค้งนี้ เราเพียงพลอตผลต่างที่พบในแต่ละหน่วยวัดเป็นฟังก์ชันของแต่ละตำแหน่งโฆษณาที่เป็นไปได้ (0 ถึง 4095)

ขั้นตอนที่ 18: พฤติกรรมการอ่านความแตกต่างของ ADC - การค้นหาฟังก์ชันการแก้ไข

พฤติกรรมการอ่านความแตกต่างของ ADC - การค้นหาฟังก์ชันการแก้ไข
พฤติกรรมการอ่านความแตกต่างของ ADC - การค้นหาฟังก์ชันการแก้ไข

เราสามารถกำหนดฟังก์ชันการแก้ไขใน Excel ได้โดยการเพิ่ม Trend Line ซึ่งขณะนี้มีระดับที่สูงขึ้น จนกว่าจะพอดีกับข้อมูลของเรา

ขั้นตอนที่ 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); //Iniciciando a porta serial somente สำหรับ debug pinMode(pin_leitura, INPUT); //Pino utilizado para captura analógica }

ขั้นตอนที่ 21: วนซ้ำ () และฟังก์ชันการแก้ไข

เราทำการดักจับแรงดันไฟฟ้าที่ปรับแล้วและเราพิมพ์ค่าโดยมีหรือไม่มีการแก้ไขที่ถูกต้อง

วงเป็นโมฆะ () { int valor_analogico = analogRead (pin_leitura); //realiza a captura da tensão ajustada //Serial.print(valor_analogico + f(valor_analogico)); // imprime os valores สำหรับดีบัก (COM CORREÇÃO) Serial.print(valor_analogico); //imprimime os valores สำหรับดีบัก (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 สงวนลิขสิทธิ์. */ double f(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); }

สังเกตการเปลี่ยนแปลงด้วยเครื่องหมายจุลภาคเป็นตัวคั่นทศนิยม

ขั้นตอนที่ 23: จับภาพด้วยการแก้ไข - พล็อตเตอร์ Serial

จับภาพด้วยการแก้ไข - พล็อตเตอร์ Serial
จับภาพด้วยการแก้ไข - พล็อตเตอร์ Serial

ขั้นตอนที่ 24: ต้นทุนการคำนวณ

ต้นทุนการคำนวณ
ต้นทุนการคำนวณ
ต้นทุนการคำนวณ
ต้นทุนการคำนวณ

ในการคำนวณพหุนาม โปรเซสเซอร์จำเป็นต้องจัดการกับงานนี้ ซึ่งอาจนำไปสู่ความล่าช้าในการดำเนินการ ขึ้นอยู่กับซอร์สโค้ดและกำลังในการคำนวณที่มี

ที่นี่ เราเห็นตารางผลลัพธ์ของการทดสอบโดยใช้พหุนามหลายดีกรี สังเกตความแตกต่างระหว่างเวลาที่ใช้ฟังก์ชัน pow () กับเวลาที่ไม่ได้ใช้

ขั้นตอนที่ 25: รหัสทดสอบ - การตั้งค่า () และการเริ่มต้นวนรอบ ()

ที่นี่เรามีรหัสที่ใช้ในการทดสอบของเรา

การตั้งค่าเป็นโมฆะ () { Serial.begin (1000000); // เริ่มต้น porta serial somente para debug } void loop () { float valor_analogico = 500.0; //um valor arbtrario float quantidade = 1,0000.0; //quantidade de chamadas float contador = 0.0; //คอนทาดอร์ เดอ ชามาดาส

ขั้นตอนที่ 26: รหัสทดสอบ - วนซ้ำ () และการประมวลผล

ฉันใช้ฟังก์ชัน micros () เพื่อรับค่าเป็นไมโครวินาที

//============= เริ่มต้นหรือประมวลผล float agora = micros (); //marca o instante เริ่มต้นในขณะที่ (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 a função POW contador++; } agora = (ไมโคร() - agora) / quantidade; //กำหนดหรือช่วงเวลา que se passou para cada iteração //============ ขั้นสุดท้าย o กระบวนการ

ขั้นตอนที่ 27: รหัสทดสอบ - วนซ้ำ () - Results

เราพิมพ์ค่าที่ส่งคืนจากฟังก์ชันเกรด 13 โดยมีและไม่มี POW เพื่อเปรียบเทียบ ตลอดจนช่วงการประมวลผล

// imprime o valor retornado da função de grau 13 com e sem POW สำหรับการเปรียบเทียบ Serial.print(f13_semPow(valor_analogico)); //grau 13º SEM a função POW Serial.print(" - "); Serial.print(f13_comPow(valor_analogico)); //grau 13º COM a função POW Serial.print(" - "); // imprime o ช่วงเวลาทำการประมวลผล Serial.println (agora, 6); }

ขั้นตอนที่ 28: รหัสทดสอบ - ฟังก์ชั่นที่ใช้

ฟังก์ชันว่าง (พร้อมผลตอบแทนเท่านั้น) ระดับ 0 และ 1

// FUNÇÃO VAZIAdouble v (double x) { } // FUNÇÃO SOMENTE COM RETORNO double r (double x) { return x; } // FUNÇÃO DE GRAU 0 double f0 (double x) { กลับ 2.202196968876e+02; } // FUNÇÃO DE GRAU 1 double f1 (double x) { return 2.202196968876e+02 + 3.561383996027e-01 * x; }

ฟังก์ชั่นเกรด 2, 3 และ 4

// FUNÇÃO DE GRAU 2double f2 (double x) { return 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 * pow(x, 4); }

ฟังก์ชั่นเกรด 5 และ 6

// FUNÇÃO DE GRAU 5double f5 (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); } // 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 POWdouble f13_comPow (double x) { return 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 POWdouble f13_semPow (double x) { return 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 * 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; }

ขั้นตอนที่ 29: ไฟล์

ดาวน์โหลดไฟล์:

ไฟล์ PDF

ฉันไม่

สเปรดชีต

แนะนำ: