/* * fplt.java - revised 20 Jan 08 - width 451, height 393 * @author jackord@kw.igs.net * Euler/Feynman plot */ import java.applet.Applet; import java.awt.*; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class fplt extends Applet implements ActionListener { int kk=0; String b1s="Plot Graph"; Button b1=new Button(b1s); public void init() { setBackground(new Color(211, 211, 211)); // Light Gray Background add(b1); b1.addActionListener(this); } public void paint(Graphics g) { double k, m, t, dt, y, dy, v, a; int x1, y1, x2, y2; g.setFont(new Font("TimesRoman", Font.PLAIN, 16)); g.setColor(Color.black); g.drawRect(38, 44, 400, 300); g.drawString("0", 38-3, 344+20); g.drawString("1", 435, 344+20); g.drawString("T", 238, 376); g.drawString("0", 38-12, 344+6); g.drawString("2", 38-12, 50); g.drawString("Y", 6, 202); if (kk>0) { k=8; m=2; dt=0.2; t=0; y=0; v=2.8; a=-k*y/m; // Euler Algorithm g.setColor(Color.blue); x1=38; y1=344; g.drawString("Euler Algorithm", 220, 212); for (int i=1; i<=5; i++) { t=t+dt; y=y+v*dt; v=v+a*dt; a=-k*y/m; x2=38+(int)(400*t); y2= 344-(int)(150*y); g.drawLine(x1, y1, x2, y2); x1=x2; y1=y2; } t=0; y=0; v=2.8; a=-k*y/m; // Feynman Algorithm g.setColor(Color.red); x1=38; y1=344; g.drawString("Feynman Algorithm", 220, 257); v=v+a*dt/2; for (int i=1; i<=5; i++) { t=t+dt; y=y+v*dt; a=-k*y/m; v=v+a*dt; x2=38+(int)(400*t); y2= 344-(int)(150*y); g.drawLine(x1, y1, x2, y2); x1=x2; y1=y2; } t=0; y=0; dt=.005; // Analytic Solution g.setColor(Color.black); x1=38; y1=344; g.drawString("Analytic Solution", 220, 302); for (int i=1; i<=200; i++) { t=t+dt; y=1.4*Math.sin(2*t); x2=38+(int)(400*t); y2= 344-(int)(150*y); g.drawLine(x1, y1, x2, y2); x1=x2; y1=y2; } kk=0; } } public void actionPerformed(ActionEvent e) { // Button String tst; tst=e.getActionCommand(); if (b1s.equals(tst)) { kk=1; } repaint(); } }