⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 work1.java

📁 Java实现牛顿插值多项式为基础的线性插值
💻 JAVA
字号:
/**
 * @(#)HelloLabel.java
 *
 *分段线性插值法
 *
 * HelloLabel application
 *
 * @author 503所 马灵霞
 * @version 1.00 2008/12/3
 */
import java.awt.Graphics2D;
import java.awt.geom.Line2D;
import java.awt.Graphics;
import java.awt.Container;
import javax.swing.JFrame;
import java.awt.Toolkit;
import java.awt.Image;
import java.awt.Dimension;
import javax.swing.JPanel;
public class work1 {
      public static void main(String[] args) {
    System.out.println("用分段线性插值法细化后的全部数据为:");
    for(int i=0;i<=190;i++){
    	System.out.println("坐标x为	"+i+"	时,y为:	"+Method.linear(i));
    }
    	BlankFrame frame=new BlankFrame();
    	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	frame.show();
        }
}
class Method{
	static double linear(double i){
		int dimension=13;	
    	double vectorX[]={0,4.74,9.50,19.00,38.00,57.00,76.00,95.00,114.00,133.00,152.00,171.00,190.00};
   		double vectorF[]={0.00,5.32,8.10,11.97,16.15,17.10,16.34,14.63,12.16,9.69,7.03,3.99,0.00};
    	double chashang[]=new double[12];
   		 //求差商,保存在数组chashang中
    	for(int j=0;j<=dimension-2;j++){
    		chashang[j]=(vectorF[j+1]-vectorF[j])/(vectorX[j+1]-vectorX[j]);
    	}
    	 if(i>=0.00&&i<4.74){
    		return(vectorF[0]+chashang[0]*(i-vectorX[0]));
    	}
    	else if(i>=4.74&&i<9.50){
    		return(vectorF[1]+chashang[1]*(i-vectorX[1]));
    	}
    	else if(i>=9.50&&i<19.00){
    		return(vectorF[2]+chashang[2]*(i-vectorX[2]));
    	}
    	else if(i>=19.00&&i<38.00){
    		return(vectorF[3]+chashang[3]*(i-vectorX[3]));
    	}
    	else if(i>=38.00&&i<57.00){
    		return(vectorF[4]+chashang[4]*(i-vectorX[4]));
    	}
    	else if(i>=57.00&&i<76.00){
    		return vectorF[5]+chashang[5]*(i-vectorX[5]);
    	}
    	else if(i>=76.00&&i<95.00){
    		return vectorF[6]+chashang[6]*(i-vectorX[6]);
    	}
    	else if(i>=95.00&&i<114.00){
    		return vectorF[7]+chashang[7]*(i-vectorX[7]);
    	}
    	else if(i>=114.00&&i<133.00){
    		return vectorF[8]+chashang[8]*(i-vectorX[8]);
    	}
    	else if(i>=133.00&&i<152.00){
    		return vectorF[9]+chashang[9]*(i-vectorX[9]);
    	}
    	else if(i>=152.00&&i<171.00){
    		return vectorF[10]+chashang[10]*(i-vectorX[10]);
    	}
    	else if(i>=171.00&&i<=190.00){
    		return vectorF[11]+chashang[11]*(i-vectorX[11]);
    	}
    	else{
    		return 0;
    	}
   	}
}
class BlankFrame extends JFrame{
	private static final int WIDTH=1200;
	private static final int HEIGHT=200;
	public BlankFrame(){
		Container con=getContentPane();
		setSize(WIDTH,HEIGHT);
		setTitle("分段线性插值");
		setLocation(10,10);
		StringPanel panel=new StringPanel();
		con.add(panel);
	}
}
class StringPanel extends JPanel{
	public static final double WIDTH=1200;
	public static final double HEIGHT=200;
	public void paintComponent(Graphics g){
		super.paintComponent(g);
		Graphics2D g2=(Graphics2D)g;
		double vectorX[]={0,4.74,9.50,19.00,38.00,57.00,76.00,95.00,114.00,133.00,152.00,171.00,190.00};
    		double vectorF[]={0.00,5.32,8.10,11.97,16.15,17.10,16.34,14.63,12.16,9.69,7.03,3.99,0.00};
		Line2D.Double lineX=new Line2D.Double(0,100,1000.00,100.00);
		g2.draw(lineX);
		g2.drawString("x",1000,90);
		Line2D.Double lineY=new Line2D.Double(0,100,0,0);
		g2.draw(lineY);
		g2.drawString("y",10,10);
    		for(int i=0;i<=11;i++){
    			Line2D.Double line=new Line2D.Double(vectorX[i]*5,100-vectorF[i]*5,vectorX[i+1]*5,100-vectorF[i+1]*5);
			g2.draw(line);
    			g2.drawString("。",(float)vectorX[i]*5,100-(float)vectorF[i]*5);
    		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -