この記事では、単一のN度多項式を解決するJava実装方法について説明します。次のように、参照のために共有してください。
このプロジェクトは、線形フィッティング、2次曲線フィッティング、指数フィッティングなどのアルゴリズムを使用して、トレンド予測を行う必要があります。さまざまな線形フィッティングアルゴリズムがこの形式のマトリックスに書き込まれます。
xは水平座標サンプリング値である場合、yは垂直座標サンプリング値、iはサンプリングポイントのシーケンス番号、aは係数、nはサンプリングポイントの数、nは順序であるため、最終的に線形フィッティングは高次方程式のシステムを解く問題に変わります。
使いやすいJavaマトリックス操作パッケージがあるかどうかはわかりません。私はこの種の情報を収集するのが得意ではないので、長年にわたって置いていた線形代数を拾い上げ、拡張マトリックスのアルゴリズムを使用して高次方程式を解くためにJavaプログラムを自分で書きました。コードを貼り付けるだけです:
パッケージCommonalgorithm; public class PolonomialSoluter {private double [] [] Matrix;プライベートダブル[]結果;プライベートイントオーダー; public PolynomialSoluter(){} //入力長を確認し、拡張マトリックスのprivate boolean init(double [] [] matrixa、double [] arrayb){order = arrayb.length; if(matrixa.length!= order)falseを返します。 matrix = new double [Order] [Order + 1]; for(int i = 0; i <order; i ++){if(matrixa [i] .length!= order)return false; for(int j = 0; j <order; j ++){matrix [i] [j] = matrixa [i] [j]; } matrix [i] [order] = arrayb [i]; } result = new double [Order]; trueを返します。 } public double [] getResult(double [] [] matrixa、double [] arrayb){if(!init(matrixa、arrayb))return null; // Gaussian Elimination-for(int i = 0; i <order; i ++){//現在の行の斜めの項が0の場合、(!swithifzero(i))return null; //(int j = i+1; j <order; j ++){if(matrix [j] [i] == 0)継続; double factor = matrix [j] [i] / matrix [i] [i]; for(int l = i; l <order+1; l ++)matrix [j] [l] = matrix [j] [l] - matrix [i] [l] * factor; }} //(int i = order-1; i> = 0; i-)のgaussian elimination-remination-remote-remote redundant redundant calucations {result [i] = matrix [i] [order] / matrix [i] [i]; for(int j = i -1; j> -1; j-)matrix [j] [order] = matrix [j] [order] - result [i] * matrix [j] [i]; } return result; } private boolean swethifzero(int i){if(matrix [i] [i] == 0){int j = i + 1; //対応する位置でゼロではない列を見つけます(j <order && matrix [j] [i] == 0)j ++; //対応するすべての位置が0の場合、(j ==順序)falseを返す場合、解決策はありません。それ以外の場合は、switchrows(i、j); } trueを返します。 } private void switchrows(int i、int j){double [] tmp = matrix [i]; Matrix [i] = matrix [j];マトリックス[j] = tmp; }}より良いアルゴリズムまたは適切なマトリックス操作パッケージがある場合は、通信してください。
PS:次のような計算ツールがいくつかあります。
オンライン統一関数(EQ)ソリューション計算ツール:
http://tools.vevb.com/jisuanqi/equ_jisuanqi
Scientific Calculator Online Use_Advanced Calculator Online Calculator:
http://tools.vevb.com/jisuanqi/jsqkeexue
オンラインcalculator_standard電卓:
http://tools.vevb.com/jisuanqi/jsq
Javaアルゴリズムの詳細については、このサイトに興味のある読者は、「Javaデータ構造とアルゴリズムのチュートリアル」、「Java操作DOMノードのヒントの要約」、「Javaファイルの要約およびディレクトリ操作のヒント」、「Java Cache操作のヒントの要約」というトピックを見ることができます。
この記事がみんなのJavaプログラミングに役立つことを願っています。