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

📄 jifen.java

📁 计算方法课
💻 JAVA
字号:
import java.awt.*;import java.applet.*;import java.awt.event.*;import java.lang.*;public class jifen extends Applet implements ActionListener{  double a=0.0001,b=6,error=0.0001;  Button A, B,C;  boolean choosea, chooseb,choosec;  public void init() {    A = new Button("龙贝格算法");    B = new Button("变步长梯形算法");    C=new Button("f(x)曲线");    add(C);add(A);add(B);    A.addActionListener(this);    B.addActionListener(this);    C.addActionListener(this);    }  public void actionPerformed(ActionEvent ae) {    String str = ae.getActionCommand();    if (str.equals("龙贝格算法")) {      choosea = true;chooseb=false;choosec = false;      repaint();    }    if(str.equals("变步长梯形算法")){        chooseb=true;choosea = false;choosec = false;        repaint();    }    if(str.equals("f(x)曲线")){      choosec = true;choosea=false;chooseb=false;      repaint();    }  }  public void paint(Graphics g) { //绘图    g.drawLine(30, 350, 30, 30);    g.drawLine(30, 250, 400, 250);    g.drawLine(30, 30, 34, 39);    g.drawLine(30, 30, 26, 39);    g.drawLine(400, 250, 395, 245);    g.drawLine(400, 250, 395, 255);    for(int i=1;i<7;i++)    	g.drawLine(30+i*50,250,30+i*50,245);//比例为1:50    g.drawString("1",78,265);g.drawString("2",128,265);    g.drawString("3",178,265);g.drawString("4",228,265);    g.drawString("5",278,265);g.drawString("6",328,265);    g.drawLine(30,300,35,300);g.drawString("-0.5",8,305);    g.drawLine(30,200,35,200);g.drawString("0.5",10,205);    g.drawLine(30,150,35,150);g.drawString("1",20,155);    g.drawString("x", 405, 260);    g.drawString("y", 20, 32);    g.drawString("0", 20, 255);    g.drawString("a=0,b=6,误差为:0.0001",50,380);    g.setColor(Color.green);    g.drawLine(400, 40, 423, 40);    g.drawString("f(x)曲线", 425, 45);    g.setColor(Color.blue);    g.drawLine(400, 60, 423, 60);    g.drawString("龙贝格曲线", 425, 65);    g.setColor(Color.red);    g.drawLine(400, 80, 423, 80);    g.drawString("变步长梯形曲线", 425, 85);    if(choosec){      g.setColor(Color.green);      g.drawString("y=sin(x)/x",150,200);      int x=30,y=150;double a=0.02;      for(int i=31;i<=330;i++){      	double j=f(a)*100;        g.drawLine(x,y,i,250-(int)j);        try{          Thread.sleep(5);        }catch(InterruptedException e){}        x=i;y=250-(int)j;        a+=0.02;      }    }    if (choosea) {      g.setColor(Color.blue);      int x=30,y=150;      double j,a=0.02;      for(int i=31;i<=330;i++){      	j=f(a)*100;      	g.drawLine(x,y,i,250-(int)j);        try{          Thread.sleep(5);        }catch(InterruptedException e){}        if((boolean)(i%20==0))        g.drawLine(x,y,x,250);        x=i;y=250-(int)j;        a+=0.02;      }      g.drawString("龙贝格算法值为:",50,350);      String T=new String();      g.drawString(T.valueOf(longbg()),150,350);    }    if (chooseb) {      g.setColor(Color.red);      int x=30,y=150;      double j,a=0.02;      for(int i=31;i<=330;i++){      	j=f(a)*100;      	g.drawLine(x,y,i,250-(int)j);        try{            Thread.sleep(5);        }catch(InterruptedException e){}        if((boolean)(i%10==0))        g.drawLine(x,y,x,250);        x=i;y=250-(int)j;        a+=0.02;      }      g.drawString("变步长算法值为:",300,350);      String T=new String();      g.drawString(T.valueOf(bianbc()),400,350);      }  } public double f(double x){   return Math.sin(x)/x; } public double longbg(){//龙贝格算法   double h, k, s, x, s1 = 0.0, s2, c1 = 0.0, c2, T1, T2, R1 = 0.0, R2;   h = b - a;   T1 = (f(a) + f(b)) * h / 2;   k = 1;   W1:while (true) {     s = 0;     x = a + h / 2;     do {       s = s + f(x);       x = x + h;     }     while (x < b);     T2 = (T1 + h * s) / 2;     s2 = T2 + (T2 - T1) / 3;     if (k == 1) {       k = k + 1;       h = h / 2;       T1 = T2;       s1 = s2;       continue W1;     }     else       c2 = s2 + (s2 - s1) / 15;     if (k == 2) {       c1 = c2;       k = k + 1;       h = h / 2;       T1 = T2;       s1 = s2;       continue W1;     }     else       R2 = c2 + (c2 - c1) / 63;     if (k == 3) {       R1 = R2;       c1 = c2;       k = k + 1;       h = h / 2;       T1 = T2;       s1 = s2;       continue W1;     }     else if (Math.abs(R2 - R1) >= error) {       R1 = R2;       c1 = c2;       k = k + 1;       h = h / 2;       T1 = T2;       s1 = s2;       continue W1;     }     else       break W1;   }   return(R2); }  public double bianbc(){//变步长算法    double h,T1,T2,S,x;    h=b-a;    T1=((Math.sin(a))/a+(Math.sin(b))/b)*h/2;    W1:while(true){    S=0;     x=a+h/2;     do{     S = S + Math.sin(x)/x;;     x = x + h;     }while(x<b);     T2=(T1+h*S)/2;     if(Math.abs(T2-T1)>=error){     h = h / 2;     T1 = T2;     }     else     break W1;     }     return(T2);   }}

⌨️ 快捷键说明

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