ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:100.52KB ,
资源ID:6633260      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6633260.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数值计算 第三章.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数值计算 第三章.docx

1、数值计算 第三章/* * author:邓仕军 * time:2012-04-26 * Lagrange插值法 */publicclass Program3_1 privatedoubledata; privateintsize; public Program3_1() init(); public Program3_1(double data, int size) init(data, size); voidinit(double data, int size) this.data = data; this.size = size; voidinit() this.data = newdou

2、ble ; this.size = 0; voidsetData(double data, int size) this.data = data; this.size = size; publicintgetSize() returnthis.size; voidSetSize(int size) this.size = size; publicdouble getData() returnthis.data; publicdouble interpolation(double x) double temp = 1d; double sum = 0d; for (inti = 0; ithis

3、.size; i+) for (int j = 0; j this.size; j+) if (i != j) temp *= (x - dataj0) / (datai0 - dataj0); sum += (temp * datai1); temp = 1d; return sum; publicvoid print() System.out.print(X ); for (inti = 0; ithis.size; i+) System.out.print(datai0 + ); System.out.println(); System.out.print(y=f(x) ); for (

4、inti = 0; i= 0; i-) if (i = 0) this.parameter0 = this.getData()01; else this.parameteri = (this.getData()i1 - this.getData()i - 11) / (this.getData()i0 - this.getData()i - 10); for (inti = 2; i= i; j-) this.parameterj = (this.getParameter()j - this .getParameter()j - 1) / (this.getData()j0 - this.ge

5、tData()j - i0); voidinit() this.data = newdouble ; this.size = 0; this.parameter = newdoublesize; voidsetData(double data, int size) init(data, size); publicintgetSize() returnthis.size; publicdouble getData() returnthis.data; publicdouble getParameter() returnthis.parameter; double function(double

6、x) double sum = 0d; for (inti = this.getSize() - 2; i= 1; i-) if (i = this.getSize() - 2) sum += (x - this.getData()i - 10) * this.getParameter()i + this .getParameter()i - 1); else sum *= (x - this.getData()i - 10); sum += this.getParameter()i - 1; return sum; / function publicvoid print() / 可以看到,证

7、实因为data中数据得以保存,在这里实现打印这个函数式多么的方便 System.out.print(X ); for (inti = 0; ithis.size; i+) System.out.print(datai0 + ); System.out.println(); System.out.print(y=f(x) ); for (inti = 0; ithis.size; i+) System.out.print(datai1 + ); System.out.println(); / Program3_2/* * author邓仕军 * time 2012-04-28 * version

8、0.2 * Newton插值法:不用parameter,仅仅使用data这个二维数组,保存系a1,a2.,an,这样确实节约了空间, * 但在后面如果需要使用data中数据,就非常不方便了.因此,我并不认为这是一种比版本0.1明智的做法 */class Program3_2 privatedouble data;/ 给定用来算均差的列表 privateintsize;/ data值的对数 public Program3_2() init(); public Program3_2(double data, int size) init(data, size); voidinit(double d

9、ata, int size) this.data = data; this.size = size; this.print(); / 因为data中的数据会被破坏,因此print就只有放在这里,才能让用户看到正在本该属于data的数据 /(事实上现在的print函数也因为data的改变,并不能再提供我们所希望的打印功能) /放在这里显然不符合面向对象理念,但在本程序中也没多大关系 for (inti = 1; i= i; j-) this.dataj1 = (this.dataj1 - this.dataj - 11) / (this.dataj0 - this.dataj - i0); vo

10、idinit() this.data = newdouble ; this.size = 0; voidsetData(double data, int size) init(data, size); publicintgetSize() returnthis.size; publicdouble getData() returnthis.data; double function(double x) double sum = 0d; for (inti = this.getSize() - 2; i= 1; i-) if (i = this.getSize() - 2) sum += (x

11、- this.getData()i - 10) * this.getData()i1 + this .getData()i - 11); else sum *= (x - this.getData()i - 10); sum += this.getData()i - 11; return sum; / function publicvoid print() System.out.print(X ); for (inti = 0; ithis.size; i+) System.out.print(datai0 + ); System.out.println(); System.out.print

12、(y=f(x) ); for (inti = 0; ithis.size; i+) System.out.print(datai1 + ); System.out.println(); / Program3_2publicclass TestProgram3_2 publicstaticvoid main(String args) double data =newdouble144,12,169,13,225,15; int size=3; Program3_2 a=new Program3_2(data,size); System.out.println(测试f(175)=+a.functi

13、on(175); System.out.println(-); data =newdouble0.4,0.41075,0.55,0.57815,0.65,0.69675,0.80,0.88811; size=4; a.setData(data, size); System.out.println(测试f(0.596)=+a.function(0.596); System.out.println(-); data =newdouble0.80,0.88811,0.90,1.02652,1.05,1.25382; size=3; a.setData(data, size); System.out.

14、println(测试f(0.955)=+a.function(0.955); 运行结果:/* *author 邓仕军 *version 0.1 *time 2012-05-03 * Hermite插值 */classHermite Derivative der;/ 导数类 privatedouble data;/ 传进来的数据 privateintsize;/ data值的对数 privatedouble a_x;/ (x) privatedouble b_x;/ (x) privateintcount; publicHermite() init(); publicHermite(double

15、 data, int size) init(data, size); voidinit() this.data = newdouble ; this.size = 0; this.count = 0; this.a_x = newdoublesize; this.b_x = newdoublesize; try der = new Derivative(this, this.getClass().getDeclaredMethod(fX, double.class); catch (NoSuchMethodException | SecurityException e) e.printStac

16、kTrace(); voidinit(double data, int size) this.data = data; this.count = 0; this.size = size; this.a_x = newdoublesize; this.b_x = newdoublesize; try der = new Derivative(this, this.getClass().getDeclaredMethod(fX, double.class); catch (NoSuchMethodException | SecurityException e) e.printStackTrace(

17、); / init(.); voidsetData(double data, int size) init(data, size); publicintgetSize() returnthis.size; publicdouble getData() returnthis.data; double function(double x) double sum = 0d; / 求参数 for (inti = 0; ithis.getSize(); i+) count = i;/ L(x)确定下标i a_xi = (1 - 2 * (x - this.getData()i0) * der.getDe

18、rivative(this.getData()i0) * lX(i, x) * lX(i, x); b_xi = (x - this.getData()i0) * lX(i, x) * lX(i, x); / 求值 for (inti = 0; ithis.getSize(); i+) sum += this.a_xi * this.getData()i1; for (inti = 0; ithis.getSize(); i+) sum += this.b_xi * this.getData()i2; return sum; /* * 被求导的函数 */ doublefX(double x)

19、returnlX(count, x); /* * L(X),k为下标 */ doublelX(int k, double x) double sum = 1d; for (inti = 0; ithis.size; i+) if (i != k) sum *= (x - datai0) / (datak0 - datai0); return sum; publicvoid print() System.out.printf(%8s, i:); for (inti = 0; ithis.size; i+) System.out.printf(%12s, i); System.out .print

20、ln(n -); System.out.printf(%8s, X); for (inti = 0; ithis.size; i+) System.out.printf(%12.5f, datai0); System.out.println(); System.out.printf(%8s, y=f(x); for (inti = 0; ithis.size; i+) System.out.printf(%12.5f, datai1); System.out.println(); System.out.printf(%8s, y=f(x); for (inti = 0; ithis.size;

21、 i+) System.out.printf(%12.5f, datai2); System.out.println(); System.out.printf(%8s, (x); for (inti = 0; ithis.size; i+) System.out.printf(%12.5f, a_xi); System.out.println(); System.out.printf(%8s, (x); for (inti = 0; ithis.size; i+) System.out.printf(%12.5f, b_xi); System.out.println(); importjava

22、.lang.reflect.InvocationTargetException;importjava.lang.reflect.Method;/* *author 邓仕军 *version 0.1 *time 2012-05-03 * Derivative:求一个函数的导数,运用反射机制 */class Derivative Method method; Object obj; public Derivative(Object obj, Method f) this.method = f; this.obj = obj; strictfpdoublegetDerivative(double x) double deriva1 = 0d, deriva2 = 0d; boolean flag = true; doubleDx = 0.0001;/ 增量X finaldouble precision =

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1