📄 weifen.java
字号:
import java.awt.*;import java.applet.*;import java.awt.event.*;import java.lang.*;public class weifen extends Applet implements ActionListener{ Button A, B, C,D; boolean choosea, chooseb, choosec,choosed; double x0,y0,h; public void init() { A = new Button("直接欧拉法"); B = new Button("改进欧拉法"); C = new Button("四阶龙格库塔法"); D = new Button("y(x)=1/(2*exp(x)-x-1)"); add(D);add(A);add(B);add(C); A.addActionListener(this);B.addActionListener(this); C.addActionListener(this);D.addActionListener(this); x0=0;y0=1;h=0.01; } public double fdao(double x,double y){ return(-y-x*y*y); } public double yzq(double x){ return(1/(2*Math.exp(x)-x-1)); } public void actionPerformed(ActionEvent ae) { String str = ae.getActionCommand(); if (str.equals("y(x)=1/(2*exp(x)-x-1)")) { choosea = true;//chooseb=false;choosec=false;choosed=false; repaint(); } if (str.equals("直接欧拉法")) { chooseb = true;//choosea = false;choosec=false;choosed=false; repaint(); } if (str.equals("改进欧拉法")) { choosec = true;//choosea = false;chooseb=false;choosed=false; repaint(); } if (str.equals("四阶龙格库塔法")) { choosed = true;//choosea = false;chooseb=false;choosec=false; repaint(); } } public void paint(Graphics g) { //绘图 g.drawLine(50, 350, 50, 30); g.drawLine(50, 350, 500, 350); g.drawLine(50, 30, 54, 39); g.drawLine(50, 30, 46, 39); g.drawLine(500, 350, 495, 345); g.drawLine(500, 350, 495, 355); g.drawString("x", 505, 360); g.drawString("y", 40, 32); g.drawString("0", 40, 355); g.drawLine(50,280,55,280);g.drawString("0.25", 20, 285); g.drawLine(50,210,55,210);g.drawString("0.5", 23, 215); g.drawLine(50,140,55,140);g.drawString("0.75", 20, 145); g.drawLine(50,70,55,70);g.drawString("1", 40, 75); for(int i=1;i<5;i++) g.drawLine(50+i*100,350,50+i*100,345);//比例为1:100 g.drawString("1",148,365);g.drawString("2",248,365); g.drawString("3",348,365);g.drawString("4",448,365); g.drawLine(400, 40, 423, 40);g.drawString("原微分曲线", 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); g.setColor(Color.green);g.drawLine(400, 100, 423, 100); g.drawString("四阶龙格库塔法", 425, 105); if (choosea) { g.setColor(Color.black); int m=50,n=70; double a=0.1,j; for(int k=50;k<450;k++){ j=yzq(a)*280; /*try{ Thread.sleep(5);//延迟 }catch(InterruptedException e){}*/ g.drawLine(m,n,k,350-(int)j); m=k;n=350-(int)j; a+=0.01; } } if (chooseb) { g.setColor(Color.blue); double x00=x0,y00=y0,j,x1,y1; int m=50,n=70; for(int k=50;k<=450;k++){ x1=x00+h; y1=y00+h*fdao(x00,y00); j=y1*280; /*try{ Thread.sleep(5);//延迟 }catch(InterruptedException e){}*/ g.drawLine(m,n,k,350-(int)j); m=k;n=350-(int)j; x00=x1;y00=y1; } } if(choosec){ g.setColor(Color.red); double x00=x0,y00=y0,yp,yc,j,x1,y1; int m=50,n=70; for(int k=50;k<=450;k++){ x1=x00+h; yp=y00+h*fdao(x00,y00); yc=y00+h*fdao(x1,yp); y1=(yp+yc)/2; j=y1*280; /*try{ Thread.sleep(5);//延迟 }catch(InterruptedException e){}*/ g.drawLine(m,n,k,350-(int)j); m=k;n=350-(int)j; x00=x1;y00=y1; } } if(choosed){ g.setColor(Color.green); double x00=x0,y00=y0,k1,k2,k3,k4,j,x1,y1; int m=50,n=70; for(int k=50;k<=450;k++){ x1=x00+h; k1=fdao(x00,y00); k2=fdao(x00+h/2,y00+k1*h/2); k3=fdao(x00+h/2,y00+k2*h/2); k4=fdao(x1,y00+h*k3); y1=y00+(k1+2*k2+2*k3+k4)*h/6; j=y1*280; /*try{ Thread.sleep(5);//延迟 }catch(InterruptedException e){}*/ g.drawLine(m,n,k,350-(int)j); m=k;n=350-(int)j; x00=x1;y00=y1; } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -