// agrprice.java // agricultural yield based on relative price // adapted from a program in basic by H.T. Odum & E. Odum, 1994. import java.applet.Applet; import java.awt.*; public class agrprice extends Applet { Label prompt1,prompt2,prompt3; TextField input1,input2,input3; float i0,c,f,a,t,p,r,k0,k1,k2,k3,k4,k5,k6,k7,dt,t0,p0,a0,c0,ti,ci,ai,pi,da,dc; public void init() { prompt1 = new Label("Amount of goods and services F (e.g. 4): "); input1 = new TextField(10); add(prompt1);add(input1); prompt2 = new Label("Function of decreasing goods and services (set 0 or 1): "); input2 = new TextField(10); add(prompt2);add(input2); prompt3 = new Label("Environmental inputs (set value between 0 and 10): "); input3 = new TextField(10); add(prompt3);add(input3); } public boolean action(Event e, Object o) { f=(float)Integer.parseInt(input1.getText()); k7=0.01f*(float)Integer.parseInt(input2.getText()); i0=0.1f*(float)Integer.parseInt(input3.getText()); repaint(); return true; } public void paint(Graphics g) { g.drawRect(160,120,320,180); g.drawLine(160,200,480,200); c=1;a=1000;k0=0.0001f;k1=0.083f;k2=0.00306f;k3=0.025f;t=0; k4=0.1f;k5=2f;k6=96.5f;dt=0.2f;t0=3;p0=0.5f;a0=0.005f;c0=10; ti=t;ai=a;ci=c; pi=k6*f/ci; while ((t*t0)<320) { r=i0/(1+k0*a); p=k6*f/c; f=f-k7*f; da=p*k5*c-k3*a-k1*r*a; dc=k2*r*a-k4*c-k5*c; a=a+da*dt; c=c+dc*dt; g.setColor(Color.blue); g.drawLine((int)(160+ti*t0),(int)(300-ci*c0),(int)(160+t*t0),(int)(300-c*c0)); g.setColor(Color.red); g.drawLine((int)(160+ti*t0),(int)(200-ai*a0),(int)(160+t*t0),(int)(200-a*a0)); g.setColor(Color.green); g.drawLine((int)(160+ti*t0),(int)(300-pi*p0),(int)(160+t*t0),(int)(300-p*p0)); ti=t;ci=c;ai=a;pi=p; t+=dt; } } } // Stefan Kontur & Enrique Ortega. September 2000.