比较简洁的最小拟合java代码 public class BestFitting { double t[]={0.0,1.0,2.0,3.0,4.0,5.0}; double y[]={1.0,2.7,5.8,6.6,7.5,9.9}; double a[][]; double at[][]; double ata[][]; double atb[][]; double ans[]; int ti=0; BestFitting(int n){ if(n<0||n>6){ System.out.println("wrong input,you must input a 0<=number<=5"); System.exit(0); } ti=n; ans=new double[n]; a=new double[6][n]; at=new double[n][6]; ata=new double[at.length][a[0].length]; atb=new double[at.length][1]; for(int i=0;i<6;i++){ for(int j=0;j<n;j++){ if(j==0) a[i][j]=1; else{ a[i][j]=Math.pow(t[i], j); //System.out.print(a[i][j]); } } } } public double[][] mut(double a[][],double b[][] ){ double c[][]=new double[a.length][b[0].length]; for(int i=0;i<a.length;i++){ for(int j=0;j<b[0].length;j++){ for(int k=0;k<a[0].length;k++){ c[i][j]+=a[i][k]*b[k][j]; } } } return c; } public double[][] trans(double tem[][]){ double t1[][]=new double[tem[0].length][tem.length]; for(int i=0;i<tem.length;i++){ for(int j=0;j<tem[0].length;j++){ t1[j][i]=tem[i][j]; } } return t1; } public void gauss(){ at=this.trans(a); this.output(a); ata=this.mut(at, a); this.output(ata); double y1[][]=new double[y.length][1]; for(int i=0;i<y.length;i++){ y1[i][0]=y[i]; } atb=this.mut(at, y1); this.output(atb); //以下使用高斯消元 形成下三角阵 for(int i=ata.length-1;i>0;i--){ for(int j=i-1;j>=0;j--){ double temp=ata[j][i]/ata[i][i]; for(int k=0;k<ata.length;k++){ ata[j][k]-=temp*ata[i][k]; //atb[k][0]-=temp*atb[i][0]; } /*for(int k=0;k<=j;k++){ atb[k][0]-=temp*atb[i][0]; }*/ atb[j][0]-=temp*atb[i][0]; } } this.output(ata); this.output(atb); for(int i=0;i<ata.length;i++){ ans[i]=atb[i][0]/ata[i][i]; for(int j=0;j<ata.length;j++){ atb[j][0]-=ans[i]*ata[j][i]; } } for(int i=0;i<ata.length;i++){ System.out.println("x["+i+"] is :"+ans[i]); } } public void output(double a[][]){ for(int i=0;i<a.length;i++){ for(int j=0;j<a[0].length;j++){ System.out.print(a[i][j]+"\t"); } System.out.println(" "); } } public static void main(String[] args) { BestFitting da=new BestFitting(6); da.gauss(); } } /* 0.230769231 0.789871215620869 3.1550095077718354 -0.6290208360133488 0.07125234549040926 */
- 粉丝: 0
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- rdf0412-kcu116-pcie-c-2019-1.zip(XILINX KCU116 源码)
- 基于C#语言的winform界面火车票订票系统(源码+实验报告)
- 【华为OD部分真题及讲解】华为OD部分真题及讲解
- 基于Python+Django的京东商品比价系统源码+全部资料(毕业设计).zip
- G460 G560 Z460 Z560的最新BIOS 2.18版(无白名单)
- MetaJUI v0.4
- 基于Python+Django的京东商品比价系统源码+全部资料(毕业设计).zip
- linux常用命令大全
- 立体相机标定-使用OpenCV+Cpp对立体相机进行标定-calibration-附项目源码+流程教程-优质项目实战.zip
- 基于SpringBoot+Mysql开发的酒店管理系统