تصف هذه المقالة طريقة تنفيذ Java لحل متعدد الحدود من الدرجة الواحدة. شاركه للرجوع إليه ، على النحو التالي:
يحتاج المشروع إلى جعل تنبؤات الاتجاه ، باستخدام خوارزميات مثل التركيب الخطي ، والمنحنى المكون من 2 ترتيب وتركيبه الأسي. تتم كتابة خوارزميات تركيب خطية مختلفة في المصفوفات في هذا النموذج:
عندما تكون x هي قيمة أخذ العينات الإحداثي الأفقي ، y هي قيمة أخذ عينات الإحداثيات العمودية ، فأنا هو رقم التسلسل لنقطة أخذ العينات ، A هو المعامل ، n هو عدد نقاط أخذ العينات ، و n هو الترتيب ، لذلك فإن التركيب الخطوي يتحول أخيرًا إلى مشكلة في حل نظام المعادلات العليا.
لا أعرف ما إذا كان هناك أي حزمة تشغيل مصفوفة Java سهلة الاستخدام. أنا لست جيدًا في جمع هذا النوع من المعلومات ، لذلك اضطررت إلى التقاط الجبر الخطي الذي وضعته لسنوات عديدة وكتبت برنامج Java بنفسي لاستخدام خوارزمية المصفوفة المعززة لحل المعادلات ذات الترتيب العالي. فقط الصق الكود:
حزمة CommonalGorithm ؛ فئة polynomialsoluter {private double [] [] matrix ؛ النتيجة المزدوجة الخاصة [] ؛ ترتيب int الخاص ؛ متعدد الحدود العامة () {} // تحقق من طول الإدخال وإنشاء المصفوفة المعززة المنطقية init (double [] [] matrixa ، double [] arrayb) {order = arrayb.length ؛ if (matrixa.length! = order) return false ؛ Matrix = جديد مزدوج [الطلب] [Order + 1] ؛ لـ (int i = 0 ؛ i <order ؛ i ++) {if (matrixa [i] .Length! = order) return false ؛ لـ (int j = 0 ؛ j <order ؛ j ++) {matrix [i] [j] = matrixa [i] [j] ؛ } matrix [i] [order] = arrayb [i] ؛ } النتيجة = جديد مزدوج [الطلب] ؛ العودة صحيح. } public double [] getResult (double [] [] matrixa ، double [] arrayb) {if (! init (matrixa ، arrayb)) return null ؛ // gaussian delination-for (int i = 0 ؛ i <order ؛ i ++) {// إذا كان المصطلح القطري للصف الحالي هو 0 ، فسيتم تبادله مع الصف مع نفس العمود من الصفوف التالية التي لا تكون 0 إذا (! swithifzero (i)) null ؛ // القضاء على (int j = i+1 ؛ j <order ؛ j ++) {if (matrix [j] [i] == 0) متابعة ؛ عامل مزدوج = المصفوفة [j] [i] / matrix [i] [i] ؛ لـ (int l = i ؛ l <order+1 ؛ l ++) matrix [j] [l] = matrix [j] [l] - matrix [i] [l] * factor ؛ }} // gaussian delination-reprovar-remote-remote accoutations for (int i = order-1 ؛ i> = 0 ؛ i--) {result [i] = matrix [i] [order] / matrix [i] [i] ؛ لـ (int j = i -1 ؛ j> -1 ؛ j--) matrix [j] [order] = matrix [j] [order] -result [i] * matrix [j] [i] ؛ } نتيجة الإرجاع ؛ } swethifzero boolean الخاص (int i) {if (matrix [i] [i] == 0) {int j = i + 1 ؛ // ابحث عن العمود الذي ليس صفرًا في الموضع المقابل بينما (j <order && matrix [j] [i] == 0) j ++ ؛ // إذا كانت جميع المواضع المقابلة 0 ، فلا يوجد حل إذا كان (J == Order) يعود خطأ ؛ آخر عمليات التبديل (I ، J) ؛ } إعادة صواب ؛ } private void switchrows (int i ، int j) {double [] tmp = matrix [i] ؛ Matrix [i] = matrix [j] ؛ المصفوفة [j] = tmp ؛ }}مرحبًا بك في التواصل إذا كانت هناك خوارزمية أفضل أو حزمة تشغيل مصفوفة مناسبة.
ملاحظة: فيما يلي بعض أدوات الحساب لتشير إلى:
أداة حساب حلول أحادية الإنترنت (Eq) عبر الإنترنت:
http://tools.vevb.com/jisuanqi/equ_jisuanqi
الآلة الحاسبة العلمية عبر الإنترنت use_advanced calculator calculator على الإنترنت:
http://tools.vevb.com/jisuanqi/jsqkeexue
الآلة الحاسبة على الانترنت calculator_standard:
http://tools.vevb.com/jisuanqi/JSQ
لمزيد من المعلومات حول خوارزميات Java ، يمكن للقراء المهتمين بهذا الموقع عرض الموضوعات: "بنية بيانات Java وبرنامج تعليمي الخوارزمية" ، "ملخص" Tips Java ".
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.