Advertisement
OverSkillers

Coelhos/Raposas(Euler e Kutta)

Mar 1st, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.30 KB | None | 0 0
  1. /*
  2.  * To change this license header, choose License Headers in Project Properties.
  3.  * To change this template file, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */
  6. package ficha_3;
  7. import java.util.*;
  8. import java.io.File;
  9. import java.io.FileNotFoundException;
  10. import java.io.PrintWriter;
  11. import java.util.logging.Level;
  12. import java.util.logging.Logger;
  13.  
  14.  
  15. /**
  16.  *
  17.  * @author j_mig_000
  18.  */
  19. public class Ficha_3 {
  20.  
  21.     static int animaisEuler(double coelhos,double raposas,ArrayList<String> coelhosArray,ArrayList<String> raposasArray,double vezes,float passo){
  22.        
  23.         double somaCoelho,somaRaposa;
  24.         double a11 = 5;
  25.         double a12 = 0.05;
  26.         double a21 =  0.0004;
  27.         double a22 = 0.2;
  28.         for(float i=passo;i<=vezes;i+=passo){
  29.             somaCoelho =(a11*coelhos)-(a12*coelhos*raposas);
  30.             somaRaposa =(a21*coelhos*raposas)-(a22*raposas);
  31.             coelhos += passo*somaCoelho;
  32.             raposas += passo*somaRaposa;
  33.             coelhosArray.add(String.valueOf(coelhos));
  34.             raposasArray.add(String.valueOf(raposas));
  35.         }
  36.        
  37.         return 0;
  38.        
  39.     }
  40.    
  41.     static void runge_kutta(float passo, float vezes,double coelhos,double raposas,ArrayList<String> coelhosArray,ArrayList<String> raposasArray){
  42.         double a11 = 5;
  43.         double a12 = 0.05;
  44.         double a21 =  0.0004;
  45.         double a22 = 0.2;
  46.         double somaCoelhos,somaCoelhos1;
  47.         double somaRaposas,somaRaposas1;
  48.         double c1=0.5;
  49.         double c2=0.5;
  50.         double alpha=1;
  51.         double k1C,k1R,k2C,k2R;
  52.         for(float i=passo;i<=vezes;i+=passo){
  53.             somaCoelhos=(a11*coelhos)-(a12*coelhos*raposas);
  54.             somaRaposas=(a21*coelhos*raposas)-(a22*raposas);
  55.             k1C=passo*somaCoelhos;
  56.             k1R=passo*somaRaposas;
  57.             somaCoelhos1=(a11*(coelhos+alpha*k1C))-(a12*(coelhos+alpha*k1C)*(raposas+alpha*k1R));
  58.             somaRaposas1=(a21*(coelhos+(alpha*k1C))*(raposas+(alpha*k1R)))-(a22*(raposas+(alpha*k1R)));
  59.             k2C=passo*somaCoelhos1;
  60.             k2R=passo*somaRaposas1;
  61.             coelhos+=k1C*c1+k2C*c2;
  62.             raposas+=k1R*c1+k2R*c2;
  63.             coelhosArray.add(String.valueOf(coelhos));
  64.             raposasArray.add(String.valueOf(raposas));
  65.         }
  66.     }
  67.    
  68.     static void CSV(ArrayList<String> Coelhos,ArrayList<String> Raposas) throws FileNotFoundException{
  69.         PrintWriter pwCoelhos = new PrintWriter(new File("GraficosCoelhos.csv"));
  70.         StringBuilder sbCoelhos = new StringBuilder();
  71.         PrintWriter pwRaposas = new PrintWriter(new File("GraficosRaposas.csv"));
  72.         StringBuilder sbRaposas = new StringBuilder();
  73.         sbCoelhos.append("Coelhos");
  74.         sbCoelhos.append('\n');
  75.         sbRaposas.append("Raposas");
  76.         sbRaposas.append('\n');
  77.        
  78.         for (String Coelho : Coelhos) {
  79.             sbCoelhos.append(Coelho);
  80.             sbCoelhos.append('\n');
  81.         }
  82.         pwCoelhos.write(sbCoelhos.toString());
  83.         pwCoelhos.close();
  84.        
  85.         for (String Raposa : Raposas) {
  86.             sbRaposas.append(Raposa);
  87.             sbRaposas.append('\n');
  88.         }
  89.         pwRaposas.write(sbRaposas.toString());
  90.         pwRaposas.close();
  91.     }
  92.    
  93.     /**
  94.      * @param args the command line arguments
  95.      */
  96.     public static void main(String[] args) {
  97.         // TODO code application logic here
  98.        
  99.         ArrayList<String> listaR = new ArrayList<>();
  100.         ArrayList<String> listaC = new ArrayList<>();
  101.         listaR.add("85");
  102.         listaC.add("520");
  103.         ArrayList<String> listaR_kutta = new ArrayList<>();
  104.         ArrayList<String> listaC_kutta = new ArrayList<>();
  105.         listaR_kutta.add("85");
  106.         listaC_kutta.add("520");
  107.         float passo = (float) 0.5;
  108.         int tempo = 10;
  109.         animaisEuler(Double.parseDouble(listaC.get(0)), Double.parseDouble(listaR.get(0)),listaC,listaR, tempo, passo);
  110.         runge_kutta(passo,tempo,Double.parseDouble(listaC.get(0)), Double.parseDouble(listaR.get(0)),listaC_kutta,listaR_kutta);
  111.        
  112.         try {
  113.             CSV(listaC_kutta,listaR_kutta);
  114.         } catch (FileNotFoundException ex) {
  115.             Logger.getLogger(Ficha_3.class.getName()).log(Level.SEVERE, null, ex);
  116.         }
  117.        
  118.     }
  119.    
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement