代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
最小二乘法求多次拟合
作者:
天顺
/ 发布于
2016/4/12
/
571
import java.util.*; public class Nihe { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int n, m, i, j, k; System.out.println("输入x的个数"); Scanner sc = new Scanner(System.in); n = sc.nextInt(); double a[] = new double[n]; double b[] = new double[n]; System.out.println("输入x"); Scanner str1 = new Scanner(System.in); for (i = 0; i < n; i++) a[i] = str1.nextDouble();// 数组a存储x的值 System.out.println("输入y"); Scanner str2 = new Scanner(System.in); for (i = 0; i < n; i++) b[i] = str2.nextDouble();// 数组b存储y的值 double sumx = 0; double sumy = 0; for (i = 0; i < n; i++) { sumx += a[i];// x的类和; sumy += b[i];// y的类和; } // System.out.println("x的类和"+sumx); // System.out.println("y的类和"+sumy); System.out.println("输入拟合次数"); Scanner str3 = new Scanner(System.in); m = str3.nextInt(); int s = 2 * m; double Sumx[] = new double[s]; for (i = 0; i < s; i++) { double sum = 0; for (j = 0; j < n; j++) { double r = 1; for (k = 0; k <= i; k++) r = r * a[j]; sum += r; } Sumx[i] = sum; } /* * for(i=0;i<s;i++){ System.out.print(Sumx[i]+" "); } */ // System.out.println(); double Sumxy[] = new double[m]; for (i = 0; i < m; i++) { double sumxy = 0; for (j = 0; j < n; j++) { double p = 1; double w = 0; for (k = 0; k <= i; k++) p = p * a[j]; w = p * b[j]; sumxy += w; } Sumxy[i] = sumxy; } /* * for(i=0;i<m;i++){ System.out.print(Sumxy[i]+" "); } */ // System.out.println(); int t = m + 1; int q = m + 2; double A[][] = new double[t][q]; A[0][0] = n; A[0][q - 1] = sumy; for (j = 1; j < q - 1; j++) A[0][j] = Sumx[j - 1]; for (i = 1; i < t; i++) for (j = 0; j < q - 1; j++) A[i][j] = Sumx[i + j - 1]; for (i = 1; i < t; i++) A[i][q - 1] = Sumxy[i - 1]; /* * for (i = 0; i < t; i++) { int count1 = 0; for (j= 0; j < q;j++) { * System.out.print(A[i][j] + " "); count1++; if (count1 == q) * System.out.println(); } } */ for (k = 0; k < t; k++) { for (i = k + 1; i < t; i++) { double L = A[i][k] / A[k][k]; for (j = 0; j < q; j++) A[i][j] = A[i][j] - L * A[k][j]; } } for (k = t - 1; k >= 0; k--) { for (i = k - 1; i >= 0; i--) { double L = A[i][k] / A[k][k]; for (j = q - 1; j >= k; j--) A[i][j] = A[i][j] - L * A[k][j]; } } // 求多项式的系数 /* * for (i = 0; i < t; i++) { int count1 = 0; for (j= 0; j < q;j++) { * System.out.print(A[i][j] + " "); count1++; if (count1 == q) * System.out.println(); } } */ double r[] = new double[t]; for (i = 0; i < t; i++) { r[i] = A[i][q - 1] / A[i][i]; // System.out.println("x"+i+"="+r[i]); } double x; System.out.println("输入计算的值"); Scanner sc1 = new Scanner(System.in); x = sc1.nextDouble(); double SUM = 0; double Z[] = new double[t]; for (i = 0; i < t; i++) { double z = 1; for (j = 1; j <= i; j++) z = z * x; Z[i] = z * r[i]; } for (i = 0; i < t; i++) SUM += Z[i]; System.out.println("f(" + x + ")" + "=" + SUM); } }
试试其它关键字
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
天顺
贡献的其它代码
(
18
)
.
获取url中的参数
.
数据库查询语句构造类
.
字符相似度对比通用类
.
带毫秒的字符转换成时间(DateTime)格式的通用方法
.
批量替换字段中的字符
.
查询每所学校语文成绩最高的学生信息
.
检查代理ip的有效性
.
jquery增加table的行数
.
实现开灯关灯效果
.
Table 固定宽度和换行
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3