📄 newton.java
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Newton {
/**
* Creates a new instance of <code>Newton</code>.
*/
public Newton() {
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new newFrame().init();
}
}
class newFrame extends JFrame
{
public void init()
{
MyPanel hello=new MyPanel();
getContentPane().add(hello);
hello.thread.start();
//以下代码设置JFrame窗体的外观
setSize(400,400);
setLocation(200,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
}
class MyPanel extends JPanel implements Runnable
{
Thread thread;
double xpoint[],ypoint[];
double x[]={1.0,2.0,3.0,4.0,5.0,6.0,7.0};
//double y[]={1.0,1.414214,1.732051,2.0,2.236068,2.449490,2.645751};
double y[]={0.1,0.4,0.9,1.6,2.5,3.6,4.9};
double a[];
double p;
int N=7;
int num;
public MyPanel()
{
xpoint=new double[100];
ypoint=new double[100];
setSize(500, 500);
thread=new Thread(this);
a=new double[7];
///////////////////////////以下计算差商值保存在数组a中
for(int i=0;i<N;i++)
{
a[i]=y[i];
}
for(int k=1;k<N;k++)
{
for(int j=N-1;j>=k;j--)
{
a[j]=(a[j]-a[j-1])/(x[j]-x[j-k]);
}
}
////////////////////////////以下计算牛顿插值
for(int i=0,k=-50;i<100;i++)
{
xpoint[i]=k;
p=a[N-1];
for(int j=N-1;j>=0;j--)
{
p=p*(xpoint[i]-x[j])+a[j];
}
k++;
ypoint[i]=p;
}
}
public void run()
{
for(num=2;num<99;num++) //显示前num个点
{
repaint();
try{
thread.sleep(50);
}
catch(InterruptedException e)
{
}
}
}
public void paintComponent(Graphics g)
{
g.setColor(Color.white);
g.clearRect(0, 0, 400, 440);
g.setColor(Color.red);
g.drawLine(0, 200, 400, 200);
g.drawLine(200, 400, 200, 0);
g.translate(200,200);
g.setColor(Color.blue);
for(int i=0;i<num;i++)
{
g.drawLine((int)xpoint[i],-(int)(ypoint[i]),(int)xpoint[i+1],-(int)(ypoint[i+1]));
}
g.setColor(Color.black);
g.drawString("x[ ]={1.0,2.0,3.0,4.0,5.0,6.0,7.0}",-190,-180);
g.drawString("y[ ]={0.1,0.4,0.9,1.6,2.5,3.6,4.9}",-190,-160);
g.drawString("牛顿插值算法",-180,-100);
//g.drawString(""+xpoint[60]+" "+ypoint[60],-180,-50);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -