资源简介
牛顿下山法、
亚当姆斯法、
最小二乘法、
LU算法、
龙贝格算法、
三次样条函数、
高斯赛戴尔迭代 等几个方法的java代码实现 ,
计算方法实验
配有界面 、 测试数据 和 帮助图片
10分绝对值
代码片段和文件信息
package com.li.jisuanfangfa;
import java.io.*;
import java.math.BigDecimal;
public class Adams {
public static void main(String[] args) {
double x0 = 0;
double y0 = 1;
double h = 0.1;
int N = 10;
File fileSave = new File(“E:\\Adams\\fileSave.txt“);
Adams.Adams(x0 y0 h N fileSave);
}
public static void Adams(double x0 double y0 double h int N
File fileSave) {
// 使用经典格式提供y1y2y3
double X[] = new double[4];
double Y[] = new double[4];
X[0] = x0;
Y[0] = y0;
for (int i = 1; i < 4; i++) {
X[i] = X[i - 1] + h;
double k1 = dfxADAMS(X[i - 1] Y[i - 1]);
double k2 = dfxADAMS(X[i - 1] + h / 2 Y[i - 1] + (h / 2) * k1);
double k3 = dfxADAMS(X[i - 1] + h / 2 Y[i - 1] + (h / 2) * k2);
double k4 = dfxADAMS(X[i] Y[i - 1] + h * k3);
Y[i] = Y[i - 1] + (h / 6) * (k1 + 2 * k2 + 2 * k3 + k4);
}
// 亚当姆斯预报-校正系统
int n = 4;
double x[] = new double[N + 1];
double y[] = new double[N + 1];
double yy[] = new double[N + 1];
double yp[] = new double[N + 1];
for (int i = 0; i < 4; i++) {
x[i] = X[i];
y[i] = Y[i];
yy[i] = 0;
yp[i] = dfxADAMS(x[i] y[i]);
}
while (n <= N) {
x[n] = x[n - 1] + h;
yy[n] = y[n - 1]
+ (h / 24)
* (55 * yp[n - 1] - 59 * yp[n - 2] + 37 * yp[n - 3] - 9 * yp[n - 4]);
y[n] = y[n - 1]
+ (h / 24)
* (9 * dfxADAMS(x[n] yy[n]) + 19 * yp[n - 1] - 5
* yp[n - 2] + yp[n - 3]);
yp[n] = dfxADAMS(x[n] y[n]);
n++;
}
// 输出结果
BufferedWriter writer = null;
try {
writer = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(fileSave)));
for (int i = 0; i <= N; i++) {
if (i < 4) {
writer.write(approximate(x[i] 6) + “\t\t\t“
+ approximate(y[i] 6));
} else {
writer.write(approximate(x[i] 6) + “\t“
+ approximate(yy[i] 6) + “\t“
+ approximate(y[i] 6));
}
writer.newLine();
}
} catch (Exception e) {
System.out.println(“输出文件失败!“);
System.out.println(e);
} finally {
try {
writer.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
private static double approximate(double x int scale) {
if (scale <= 0) {
throw new IllegalArgumentException(“非法参数:保留位数须大于0!“);
}
BigDecimal b = new BigDecimal(x);
BigDecimal one = new BigDecimal(1);
return b.divide(one scale BigDecimal.ROUND_HALF_UP).doubleValue();
}
private static double dfxADAMS(double x double y) {
if (y != 0) {
return y - 2 * x / y;
} else {
return Double.NaN;
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-12-28 20:21 计算方法\
目录 0 2013-12-28 20:21 计算方法\JSfangfa\
文件 301 2013-12-16 19:00 计算方法\JSfangfa\.classpath
文件 384 2013-12-16 19:00 计算方法\JSfangfa\.project
目录 0 2013-12-28 20:21 计算方法\JSfangfa\.settings\
文件 598 2013-12-16 19:00 计算方法\JSfangfa\.settings\org.eclipse.jdt.core.prefs
目录 0 2013-12-28 20:21 计算方法\JSfangfa\bin\
目录 0 2013-12-28 20:21 计算方法\JSfangfa\bin\com\
目录 0 2013-12-28 20:21 计算方法\JSfangfa\bin\com\li\
目录 0 2013-12-28 20:21 计算方法\JSfangfa\bin\com\li\jisuanfangfa\
文件 3817 2013-12-24 16:40 计算方法\JSfangfa\bin\com\li\jisuanfangfa\Adams.class
文件 3663 2013-12-23 18:19 计算方法\JSfangfa\bin\com\li\jisuanfangfa\Duri_Ritter.class
文件 4186 2013-12-24 11:53 计算方法\JSfangfa\bin\com\li\jisuanfangfa\GossSeidel.class
文件 3823 2013-12-28 00:17 计算方法\JSfangfa\bin\com\li\jisuanfangfa\LU.class
文件 1162 2013-12-23 20:31 计算方法\JSfangfa\bin\com\li\jisuanfangfa\Newton.class
文件 3287 2013-12-24 14:15 计算方法\JSfangfa\bin\com\li\jisuanfangfa\Romberg.class
文件 7502 2013-12-28 00:22 计算方法\JSfangfa\bin\com\li\jisuanfangfa\SplineFunction.class
文件 4199 2013-12-27 21:10 计算方法\JSfangfa\bin\com\li\jisuanfangfa\TheLeastSquareMethod.class
文件 2858 2013-12-24 15:26 计算方法\JSfangfa\bin\com\li\jisuanfangfa\Tools.class
文件 825 2013-12-28 00:25 计算方法\JSfangfa\bin\com\li\jisuanfangfa\ViewPanel$1.class
文件 15964 2013-12-28 00:25 计算方法\JSfangfa\bin\com\li\jisuanfangfa\ViewPanel.class
文件 182 2013-12-28 00:03 计算方法\JSfangfa\fileSave.txt
目录 0 2013-12-28 20:21 计算方法\JSfangfa\src\
目录 0 2013-12-28 20:21 计算方法\JSfangfa\src\com\
目录 0 2013-12-28 20:21 计算方法\JSfangfa\src\com\li\
目录 0 2013-12-28 20:21 计算方法\JSfangfa\src\com\li\jisuanfangfa\
文件 2666 2013-12-24 16:40 计算方法\JSfangfa\src\com\li\jisuanfangfa\Adams.java
文件 2730 2013-12-23 13:18 计算方法\JSfangfa\src\com\li\jisuanfangfa\Duri_Ritter.java
文件 3606 2013-12-24 11:53 计算方法\JSfangfa\src\com\li\jisuanfangfa\GossSeidel.java
文件 3108 2013-12-28 00:17 计算方法\JSfangfa\src\com\li\jisuanfangfa\LU.java
文件 1157 2013-12-23 20:31 计算方法\JSfangfa\src\com\li\jisuanfangfa\Newton.java
............此处省略34个文件信息
评论
共有 条评论