How to Incorporate a Numerical Solution into a Physics Java Applet?

  • Context: Java 
  • Thread starter Thread starter Robben
  • Start date Start date
  • Tags Tags
    Java Physics
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
8 replies · 3K views
Robben
Messages
166
Reaction score
2

Homework Statement


[/B]
I would like to make a physics applet.

I have a numerical solution of the Lotka-Volterra model located here:
https://www.physicsforums.com/threads/lotka-volterra-model-eulers-method.803382/#post-5044961


Homework Equations



None

The Attempt at a Solution


[/B]
I want to be able to make graphs of my numerical solution and I am wondering how do I incorporate my numerical solution of the Lotka-Volterra model into an applet?

I tried searching GUI applets for Java but it is so broad the I would like to narrow it down for only physics application like making graphs or making a wave that corresponds to the wave equation.

Any links or videos of how to make a physics applet would be of great help.

My numerical solution:

Java:
public class Lotka {
    public static void main(String[] args) {
        double[] prey = new double[1000];
        double[] predator = new double[1000];
        double[] dt = new double[101];
        double[] b = new double[101];
        prey[0] = 10;
        predator[0] = 5;   
        dt[0] = 0;
        b[0] = 0.01;   
   
        for (int j = 1; j < 101; j ++) {
            dt[j] = 2 + dt[j-1];
            b[j] = b[0]*((double)j/2);  
        }    
   
        for(int i = 1; i < 100; i++) {
            prey[i] = prey[i-1] + (0.2*prey[i-1]*(1-prey[i-1]/500)
               -(b[i]*prey[i-1]*predator[i-1])/(1+b[i]*prey[i-1]))*(1/dt[i]);
            predator[i] = predator[i-1] + (0.1*predator[i-1]*(1-predator[i-1]
                /(0.2*prey[i-1])))*(1/dt[i]);
            //System.out.println("" + prey[i] + " " + predator[i]);  
        }      
    }      
}
 
Physics news on Phys.org
jedishrfu said:
Checkout Open Source Physics at www.compadre.org/osp

They have a whole collection of java software for making physics simulations including charting and ODE solvers.

Thanks for the link! I will be studying it now.
 
jedishrfu said:
Checkout Open Source Physics at www.compadre.org/osp

They have a whole collection of java software for making physics simulations including charting and ODE solvers.

I noticed, in order to draw a line in my java applet it must be integers, i.e. for Graphics g then g.drawLine() must have int values and not double. Since my Lotka model numerical solution has double values from 10.0 to 9.87 (for the prey) and 4.99 to 4.82 (for the predator) how do I go about doing this? How do I get my drawline to take in double values instead of int?
 
you have to develop scaling for what you want to draw

So say you decide your image is 1000x1000 pixels and your measurements range from 0cm to 15cm then
to draw a 3cm line you must compute linelength = 3 * 1000 / 15 = 200 pixels...
 
[/code][/QUOTE]
jedishrfu said:
you have to develop scaling for what you want to draw

So say you decide your image is 1000x1000 pixels and your measurements range from 0cm to 15cm then
to draw a 3cm line you must compute linelength = 3 * 1000 / 15 = 200 pixels...

Hm, my measurements are

##p_0 = 10, \ q _0 = 5##
##p_1 = 9.946, \ q_1 = 4.925##
##p_2 = 9.89538, \ q_2 = 4.85231##
##p_3 = 9.84803, \ q_3 = 4.78187##
##\ldots## up to ##4.99## for predator (q) and ##10.0## for prey (p). Now my image pixel size is arbitrary and I just extended Applet, i.e. I have the following code in my applet:

Java:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;

   public class LotkaApplet extends Applet
   implements MouseListener, ActionListener, Runnable{
...
}
 
jedishrfu said:
Use getWidth() and getHeight() java applet methods to get the canvas size .
I think I would have to extend 2D graphics for this.