• 大小: 146KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-13
  • 语言: Java
  • 标签: LU算法  

资源简介

牛顿下山法、 亚当姆斯法、 最小二乘法、 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个文件信息

评论

共有 条评论

相关资源