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

📄 chazhi.java

📁 计算方法课
💻 JAVA
字号:
import java.awt.*;import java.applet.*;import java.awt.event.*;import java.util.Random;import java.lang.String;import java.io.*;public class chazhi extends Applet implements ActionListener{  static int N=7;  int minx, maxx;  int[] x, y;  Random ran = new Random();  Button a, b, c, d, e;  boolean choosea, chooseb, choosec, choosed, choosee;  public void init() {    x = new int[N + 1];    y = new int[N + 1];    a = new Button("随机产生点");    b = new Button("拉格朗日");    c = new Button("牛顿");    d = new Button("样条");    e = new Button("退出");    add(a);add(b);add(c);add(d);add(e);    a.addActionListener(this);    b.addActionListener(this);    c.addActionListener(this);    d.addActionListener(this);    e.addActionListener(this);  }  public void actionPerformed(ActionEvent ae) {    String str = ae.getActionCommand();    if (str.equals("随机产生点")) {      choosea = true;chooseb=false;choosec=false;choosed=false;choosee=false;      for (int i = 0; i <= N; i++) {        x[i] = ran.nextInt(60) + i * 50 + 60;        y[i] = ran.nextInt(50)+ 200-10*i;      }      minx = x[0];      maxx = x[N];      repaint();    }    if (str.equals("拉格朗日")) {      chooseb = true;      repaint();    }    if (str.equals("牛顿")) {      choosec = true;      repaint();    }    if(str.equals("样条")){    	choosed=true;    	repaint();    }    if(str.equals("退出")){    	choosee=true;    	repaint();    }  }  public void paint(Graphics g) { //绘图    g.drawLine(30, 350, 30, 30);    g.drawLine(30, 350, 500, 350);    g.drawLine(30, 30, 34, 39);    g.drawLine(30, 30, 26, 39);    g.drawLine(500, 350, 495, 345);    g.drawLine(500, 350, 495, 355);    g.drawString("x", 505, 360);    g.drawString("y", 20, 32);    g.drawString("0", 20, 355);    g.setColor(Color.blue);    g.drawLine(400, 60, 423, 60);    g.drawString("lagrange", 425, 65);    g.setColor(Color.red);    g.drawLine(400, 80, 423, 80);    g.drawString("newton", 425, 85);    g.setColor(Color.green);    g.drawLine(400, 100, 423, 100);    g.drawString("spline", 425, 105);    if (choosea) {      for (int i = 0; i <= N; i++) {        g.setColor(Color.black);        g.drawOval(x[i] - 2, y[i] - 2, 4, 4); //像素较正        g.fillOval(x[i] - 2, y[i] - 2, 4, 4);        Point p=new Point(x[i]-30,350-y[i]);        //String s=new String();              //坐标        //s=p.toString();        //g.setColor(Color.lightGray);       //g.drawString(s,x[i]+4,y[i]+4 );      }    }    if (chooseb) {      g.setColor(Color.blue);      float L, LI;      int i, j, k;      int m = x[0];      int n = y[0];      for (k = minx; k <= maxx; k++) {        L = 0;        for (i = 0; i <= N; i++) { //拉格朗日插值函数L=...          LI = 1;          for (j = 0; j <= N; j++) {            if ( (j != i)) LI = LI * (k - x[j]) / (x[i] - x[j]);          }          L = L + LI * y[i];        }        g.drawLine(m, n, k, (int) L);        m = k;        n = (int) L;      }    }    if (choosec) {      g.setColor(Color.red);      float[] f = new float[N + 1];      float NewTon;float t;      int k;      int m = x[0];      int n = y[0];      for (k = minx; k <= maxx; k++) {        for (int r = 0; r <= N; r++) {          f[r] = y[r];        }        NewTon =y[0];        t = 1;        for (int j = 1; j <= N; j++) {          t = t * (k - x[j - 1]);          for (int i = 0; i <= N - j; i++)          {            f[i] = (f[i + 1] - f[i]) / (x[j + i] - x[i]);          }          NewTon = NewTon + f[0] * t;        }        g.drawLine(m, n, k, (int) NewTon);        m = k;        n = (int) NewTon;      }    }     if(choosed)	  {		  g.setColor(Color.green);		  float h[]=new float[N+1];float a[]=new float[N+1];		  float c[]=new float[N+1];float d[]=new float[N+1];		  float b[]=new float[N+1];float s2[]=new float[N+1];		  float s1,s3;		  for(int k=0;k<N;k++)			  h[k]=x[k+1]-x[k];		  a[1]=2*(h[0]+h[1]);		  for(int k=2;k<N;k++)			  a[k]=2*(h[k-1]+h[k])-(h[k-1]*h[k-1])/a[k-1];		  for(int k=1;k<=N;k++)			  c[k]=(y[k]-y[k-1])/h[k-1];		  for(int k=1;k<N;k++)			  d[k]=6*(c[k+1]-c[k]);		  b[1]=d[1];		  for(int k=2;k<N;k++)			  b[k]=d[k]-b[k-1]*h[k-1]/a[k-1];		  s2[N-1]=b[N-1]/a[N-1];		  for(int k=N-2;k>0;k--)			  s2[k]=(b[k]-h[k]*s2[k+1])/a[k];		  s2[0]=0;s2[N]=0;		  for (int k =0; k <= N; k++){		  	int m=x[k];		  	int n=y[k];		  	for(int x1=x[k];x1<x[k+1];x1++){			  	s1=c[k+1]-s2[k+1]*h[k]/6-s2[k]*h[k]/3;	            s3=y[k]+s1*(x1-x[k])+s2[k]*(x1-x[k])*(x1-x[k])/2	            +(s2[k+1]-s2[k])*(x1-x[k])*(x1-x[k])*(x1-x[k])/(6*h[k]);                g.drawLine(m, n, x1, (int) s3);                m = x1;                n = (int)s3;                }           }         }         /*(choosee){          exit(0);         }*/}}

⌨️ 快捷键说明

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