郑州做网站公司汉狮,做网站跟网站设计的区别,做服装最好的网站建设,用狗做头像的网站本文主要向大家介绍了Java语言实现求解一元n次多项式的方法示例#xff0c;通过具体的内容向大家展示#xff0c;希望对大家学习JAVA语言有所帮助。项目需要做趋势预测#xff0c;采用线性拟合、2阶曲线拟合和指数拟合的算法#xff0c;各种线性拟合算法写成矩阵大概是这么…本文主要向大家介绍了Java语言实现求解一元n次多项式的方法示例通过具体的内容向大家展示希望对大家学习JAVA语言有所帮助。项目需要做趋势预测采用线性拟合、2阶曲线拟合和指数拟合的算法各种线性拟合算法写成矩阵大概是这么个形式其中x是横坐标采样值y是纵坐标采样值i是采样点序列号a是系数N是采样点个数n是阶数所以线性拟合最后就转成了一个解高阶方程组的问题。不知道有没有什么好用的java矩阵运算的包我很不擅长搜集这种资料所以只好捡起了已经放下多年的线性代数自己写了个java程序用增广矩阵的算法来解高阶方程组。直接贴代码好了package commonAlgorithm;public class PolynomialSoluter {private double[][] matrix;private double[] result;private int order;public PolynomialSoluter() {}// 检查输入项长度并生成增广矩阵private boolean init(double[][] matrixA, double[] arrayB) {order arrayB.length;if (matrixA.length ! order)return 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];return true;}public double[] getResult(double[][] matrixA, double[] arrayB) {if (!init(matrixA, arrayB))return null;// 高斯消元-正向for (int i 0; i order; i) {// 如果当前行对角线项为0则与后面的同列项非0的行交换if (!swithIfZero(i))return null;// 消元for (int j i 1; j order; j) {if (matrix[j][i] 0)continue;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;}}// 高斯消元-反向-去掉了冗余计算for (int i order - 1; i 0; i--) {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 swithIfZero(int i) {if (matrix[i][i] 0) {int j i 1;// 找到对应位置非0的列while (j order matrix[j][i] 0)j;// 若对应位置全为0则无解if (j order)return false;elseswitchRows(i, j);}return true;}private void switchRows(int i, int j) {double[] tmp matrix[i];matrix[i] matrix[j];matrix[j] tmp;}}复制代码有更好的算法或者有合适的矩阵运算包欢迎交流PS这里再为大家推荐几款计算工具供大家进一步参考借鉴在线一元函数(方程)求解计算工具http://tools.jb51.net/jisuanqi/equ_jisuanqi科学计算器在线使用_高级计算器在线计算http://tools.jb51.net/jisuanqi/jsqkexue在线计算器_标准计算器http://tools.jb51.net/jisuanqi/jsq本文由职坐标整理并发布希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道