java画二次函数曲线_基于JAVA拟合二次函数设计与实现.doc

基于JAVA拟合二次函数设计与实现

基于JAVA拟合二次函数设计与实现

摘要:Java是一种简单的,面象对象的,分布式的,解释的,键壮的,安全的,结构的,中立的,可移植的,性能很优异的多线程的,动态的语言。该文用JAVA实现拟合二次函数,随机选取六组数据,求解相关系数矩阵的值,带入数据求出真值,最后对结果进行验证,结果显示达到了预期效果。

关键词:Java;二次函数;系数

中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)15-3667-02

Java是由Sun最初设计用于嵌入程序的可移植性“小C++”。在网页上运行小程序的想法着实吸引了不少人的目光,Java不仅仅适于在网页上内嵌动画,而且是一门极好的完全的软件编程的小语言。“虚拟机”机制、垃圾回收以及没有指针等使它很容易实现不易崩溃且不会泄漏资源的可靠程序。JAVA丢弃了很多C++的复杂功能,形成一门紧凑而易学的语言。不像C++,Java强制面向对象编程,要在Java里写非面向对象的程序就像要在Pascal里写“空心粉式代码”一样困难。 Java的优点很多:二进制码可移植到其他平台;程序可以在网页中运行;内含的类库非常标准且极其健壮;自动分配合垃圾回收避免程序中资源泄漏等等。本文即为用JAVA实现拟合二次函数。

1 整体模块设计

本设计主要有以下几个模块:

1)用户界面模块:实现用户与计算机系统交互的接口。用户可以通过此界面实现求找有关二次函数的操作。如输入一组实验参数、从一批实验数据中随机选取一组实验数据、根据所选数据计算对应的二次函数表达式、验证所求函数的可取性、清除以前操作等功能。

2)数据随机选取模块:随机选取六组能唯一确定一个六元一次方程的数据。

3)行列式的求值模块:通过x、y以及实验结果f(x,y)转化成所求函数系数的系数矩阵,并求解相关系数矩阵的值。以便函数系数确定之用。

4)验证模块:把实验数据带入所求的函数(模拟)算出真值,并根据所测实数据计算(模拟)平均误差。若不在误差限定范围之内,返回数随机选取模块继续测算并选取新的函数,若在误差限定范围之内,则结束。

本设计需要根据实验数据,拟合一条二次函数:f(x,y)=ax2+by2+cxy+dx+ey+f,使f(x,y)-f(x,y)最小。其具体设计原理图如图1所示。

2 具体实现

2.1 类设计

1) 类名:WZ;作用:主类

public class WZ

{public static void main(String args[])

{ MyFrame frame1=new MyFrame();//实例化MyFrame类 }}

2) 类名:MyFrame;作用:建立一个图形窗口

继承的父类:Frame类

实现的接口:ActionListener,WindowListener,TextListener。

3) 类名:Arrary;作用:实现六行六列行列式的求值

4) 类名:Show;作用:输出所求的函数,及对函数中系数正负的处理

5) 类名:random;作用:随机选取六组实验数据,并且这六组实验数据能唯一确定一个六元一次方程。

2.2 主要功能的实现

行列式求出二次函数的系数:

……

all=arr.suan(w,0.0d);//使用Arrary类中的函数求出行列式的值

for(int i=0;i<6;i++)

{ w[i][0]=h[i];}

r1=arr.suan(w,0.0d);//使用Arrary类中的函数求出行列式的值

for(int i=0;i<6;i++)

{w[i][0]=x[i]*x[i];

w[i][1]=h[i];}

…………

for(int i=0;i<6;i++)

{w[i][0]=x[i]*x[i];

w[i][1]=y[i]*y[i];

w[i][2]=x[i]*y[i];

w[i][3]=x[i];

w[i][4]=y[i];

w[i][5]=h[i];}

r6=arr.suan(w,0.0d);//使用Arrary类中的函数求出行列式的值

a=r1/all;//得出线性方程组的解,也就是所要求的方程系数

……

f=r6/all;

sss.setText(show.fun(a,b,c,d,g,f).toString());}//在相应区域显示该拟合函数

输出所求的函数表达式:

class Show

{ int a,b,c,d,e,f;

public StringBuffer fun(d

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值