บทความนี้อธิบายฟังก์ชั่นการปรับเส้นโค้ง N-order ที่ใช้โดย Java แบ่งปันสำหรับการอ้างอิงของคุณดังนี้:
ในบทความก่อนหน้า Java ใช้วิธีการแก้ปัญหาพหุนาม N-order เดียว หลังจากสามารถแก้ปัญหาพหุนามได้จำเป็นต้องใช้คลาสที่จะทำนายข้อมูลในอนาคตตามข้อมูลจุดตัวอย่างหลายตัว เมทริกซ์ที่ติดตั้งได้รับการโพสต์ในบทความก่อนหน้านี้ดังนั้นฉันจะไม่พูดถึงที่นี่ บทความนี้ส่วนใหญ่มุ่งเน้นไปที่วิธีการคำนวณค่าสัมประสิทธิ์เมทริกซ์ตามจุดตัวอย่างและคำนวณค่าของจุดที่คาดการณ์ไว้
หลักการนั้นง่ายมากและพบสูตรในบทความก่อนหน้า ฉันจะโพสต์รหัสที่นี่โดยตรง
คลาส commonAlgorithm.PolynomiaSoluter ที่เขียนในบทความก่อนหน้านี้ใช้
แพ็คเกจ Commonalgorithm; นำเข้า Commonalgorithm.polynomialsluter; นำเข้า Java.lang.math; ชั้นเรียนสาธารณะน้อยที่สุด square {ส่วนตัวสองเท่า [] [] Matrixa; สองครั้งส่วนตัว [] Arrayb; ปัจจัยสองเท่าส่วนตัว [] ปัจจัย; คำสั่ง INT ส่วนตัว; Public น้อยที่สุด () {} / * * หลังจากการสร้างอินสแตนซ์ก่อนการคำนวณคุณต้องป้อนพารามิเตอร์ก่อนและสร้างสูตร arrayx เป็นพิกัดแกน x ของจุดสุ่มตัวอย่างและจัดเรียงตามลำดับการสุ่มตัวอย่าง * ตามลำดับของการติดตั้ง เมื่อติดตั้งเส้นโค้งลำดับสูงที่มีคำสั่งซื้อต่ำอาจไม่ถูกต้อง แต่คำสั่งซื้อสูงเกินไปจะทำให้เกิดการคำนวณช้า*/ บูลีนสาธารณะสร้างฟอร์เมีย (double [] arrayx, double [] arrayy, int ลำดับ) {ถ้า (arrayx.length! = arrayy.length) this.order = order; int len = arrayx.length; // เมทริกซ์ X และ y ในการทำงานที่เหมาะสม matrixa = ใหม่สองเท่า [คำสั่ง + 1] [คำสั่ง + 1]; arrayb = ใหม่สองครั้ง [คำสั่ง + 1]; // สร้างเมทริกซ์ y และส่วนหนึ่งของพลังงาน <= คำสั่งซื้อในเมทริกซ์ x สำหรับ (int i = 0; i <order+1; i ++) {double sumx = 0; สำหรับ (int j = 0; j <len; j ++) {double tmp = math.pow (arrayx [j], i); sumx += tmp; arrayb [i] += tmp * arrayy [j]; } สำหรับ (int j = 0; j <= i; j ++) matrixa [j] [i - j] = sumx; } // สร้างส่วนของพลังงาน> คำสั่งซื้อในเมทริกซ์ x สำหรับ (int i = คำสั่งซื้อ+1; i <= คำสั่งซื้อ * 2; i ++) {double sumx = 0; สำหรับ (int j = 0; j <len; j ++) sumx+= math.pow (arrayx [j], i); สำหรับ (int j = i - order; j <order+1; j ++) {matrixa [i - j] [j] = sumx; }} // อินสแตนซ์ polynomiasuluter และแก้ปัญหาระบบสมการเพื่อรับลำดับสัมประสิทธิ์ของแต่ละปัจจัยคำสั่ง polynomialsuluter soluter = polynomialsuluter ใหม่ (); ปัจจัย = soluter.getResult (Matrixa, ArrayB); ถ้า (ปัจจัย == null) ส่งคืนเท็จ; อื่นกลับมาจริง; } // ผลลัพธ์ของการคำนวณพิกัดที่ระบุตามพิกัดอินพุตและปัจจัยลำดับสัมประสิทธิ์การคำนวณสองครั้งสาธารณะ (double x) {double result = ปัจจัย [0]; สำหรับ (int i = 1; i <= order; i ++) ผลลัพธ์+= ปัจจัย [i] * math.pow (x, i); ผลการกลับมา; -PS: นี่คือเครื่องมือการคำนวณบางอย่างสำหรับคุณที่จะอ้างถึง:
เส้นโค้งพหุนามออนไลน์และฟังก์ชั่นเส้นโค้งเครื่องมือที่เหมาะสม:
http://tools.vevb.com/jisuanqi/create_fun/
วาดเครื่องมือกราฟพหุนาม/ฟังก์ชั่นกราฟออนไลน์:
http://tools.vevb.com/jisuanqi/fun_draw
เครื่องมือการคำนวณฟังก์ชั่น unary unary (eq):
http://tools.vevb.com/jisuanqi/equ_jisuanqi
เครื่องคิดเลขทางวิทยาศาสตร์ออนไลน์ use_advanced เครื่องคิดเลขออนไลน์เครื่องคิดเลข:
http://tools.vevb.com/jisuanqi/jsqkeexue
เครื่องคิดเลขออนไลน์ _Standard เครื่องคิดเลข:
http://tools.vevb.com/jisuanqi/jsq
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับอัลกอริทึม Java ผู้อ่านที่มีความสนใจในเว็บไซต์นี้สามารถดูหัวข้อ: "โครงสร้างข้อมูล Java และการสอนอัลกอริทึม", "บทสรุปของเคล็ดลับการดำเนินงาน Java Dom", "บทสรุปของไฟล์ Java และเคล็ดลับการดำเนินการไดเรกทอรี" และ "สรุป
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน