piotranon

Untitled

Mar 18th, 2020
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.49 KB | None | 0 0
  1. import java.sql.SQLOutput;
  2. import java.util.Scanner;
  3.  
  4. public class CałkowanieNumeryczne_MetodaTrapezów__7 {
  5.     public static void main(String[] args) {
  6.         Scanner sc =new Scanner(System.in);
  7.  
  8.         System.out.println("Podaj funkcję na podstawie przykładów:");
  9.         System.out.println("(3x^3+0x^2-2x^1+1)/(x+2)");
  10.         System.out.println("3x^3+-x^2+2x^1+1");
  11.  
  12.         String input=sc.nextLine();
  13. //        String input="3x^3+-x^2+2x^1+1";
  14.  
  15.         String licznik = input;
  16.         String mianownik = "1";
  17.  
  18.         if(input.contains("/")) {
  19.             System.out.println("/");
  20.             licznik = input.trim().toLowerCase().split("/")[0].substring(1,input.trim().toLowerCase().split("/")[0].length()-1);
  21.             mianownik = input.trim().toLowerCase().split("/")[1].substring(1,input.trim().toLowerCase().split("/")[1].length()-1);
  22.         }
  23.  
  24.         System.out.println("licznik : "+licznik);
  25.         System.out.println("mianownik : "+mianownik);
  26.  
  27.         float[] licznikfloat=new float[licznik.split("\\+").length];
  28.         String[] licznikarray=licznik.split("\\+");
  29.  
  30.         System.out.println("-----------------");
  31.         System.out.println("licznik");
  32.         for(int i=0;i<licznikfloat.length;i++)
  33.         {
  34.             String dozapisu;
  35.             if(licznikarray[i].contains("^"))
  36.             {
  37.                 int miejscedaszku=licznikarray[i].indexOf("^");
  38.                 dozapisu=licznikarray[i].substring(0,miejscedaszku-1);
  39.             }else
  40.             {
  41.                 dozapisu=licznikarray[i];
  42.             }
  43.  
  44.             if(dozapisu.length()==0)
  45.                 dozapisu="1";
  46.             else if(dozapisu.contains("-") && dozapisu.length()==1)
  47.                 dozapisu="-1";
  48.  
  49.             if(dozapisu.contains("-")){
  50.                 licznikfloat[i]=-Float.valueOf(dozapisu.substring(1));
  51.             }
  52.             else if(dozapisu.contains("("))
  53.             {
  54.                 licznikfloat[i]=Float.valueOf(dozapisu.substring(1,dozapisu.length()));
  55.             }
  56.             else if(dozapisu.contains(")"))
  57.             {
  58.                 licznikfloat[i]=Float.valueOf(dozapisu.substring(0,dozapisu.length()-1));
  59.             }
  60.             else
  61.             {
  62.                 licznikfloat[i]=Float.valueOf(dozapisu);
  63.             }
  64.  
  65.             System.out.println("float["+i+"]="+licznikfloat[i]);
  66.         }
  67.  
  68.  
  69.         float[] mianownikfloat=new float[mianownik.split("\\+").length];
  70.         String[] mianownikarray=mianownik.split("\\+");
  71.  
  72.         System.out.println("-----------------");
  73.         System.out.println("mianownik");
  74.         for(int i=0;i<mianownikfloat.length;i++)
  75.         {
  76.             String dozapisu;
  77.             if(mianownikarray[i].contains("^"))
  78.             {
  79.                 int miejscedaszku=mianownikarray[i].indexOf("^");
  80.                 dozapisu=mianownikarray[i].substring(0,miejscedaszku-1);
  81.             }else
  82.             {
  83.                 dozapisu=mianownikarray[i];
  84.             }
  85.  
  86.             if(dozapisu.length()==0)
  87.                 dozapisu="1";
  88.             else if(dozapisu.contains("x") && dozapisu.length()==1)
  89.                 dozapisu="1";
  90.             else if(dozapisu.contains("-") && dozapisu.length()==1)
  91.                 dozapisu="-1";
  92.  
  93.             if(dozapisu.contains("-")){
  94.                 mianownikfloat[i]=-Float.valueOf(dozapisu.substring(1));
  95.             }
  96.             else if(dozapisu.contains("("))
  97.             {
  98.                 mianownikfloat[i]=Float.valueOf(dozapisu.substring(1,dozapisu.length()));
  99.             }
  100.             else if(dozapisu.contains(")"))
  101.             {
  102.                 mianownikfloat[i]=Float.valueOf(dozapisu.substring(0,dozapisu.length()-1));
  103.             }
  104.             else {
  105.                 mianownikfloat[i] = Float.valueOf(dozapisu);
  106.             }
  107.  
  108.             System.out.println("float["+i+"]="+mianownikfloat[i]);
  109.         }
  110.         System.out.println(doMath(licznikfloat,mianownikfloat,2));
  111.  
  112.  
  113.         //LICZBA PUNKTOW TRAPEZOW PODZIAŁOWYCH
  114.         int n= 1000;
  115.  
  116.         System.out.println("Podaj xp:");
  117.         float xp=sc.nextFloat();
  118.         System.out.println("Podaj xk:");
  119.         float xk=sc.nextFloat();
  120.  
  121.         float dx=(xk-xp)/n;
  122.         float s=0;
  123.         for(int i=1;i<n;i++)
  124.             s+=doMath(licznikfloat,mianownikfloat,(xp+i*dx));
  125.  
  126.         s = (s+(doMath(licznikfloat,mianownikfloat,xp)+doMath(licznikfloat,mianownikfloat,xk))/2)*dx;
  127.         Double t=Math.floor(s*1000)/1000;
  128.  
  129.         System.out.println("Wartość całki wynosi: "+t);
  130.  
  131.     }
  132.     public static String rotate(String in)
  133.     {
  134.         StringBuilder out = new StringBuilder();
  135.         for(int i=in.length()-1;i>=0;i--)
  136.             out.append(in.charAt(i));
  137.  
  138.         return out.toString();
  139.     }
  140.     public static Float doMath(float[] licznik,float[] mianownik,float x)
  141.     {
  142.         float wyniklicznik=0;
  143.         for(int i=0;i<licznik.length;i++)
  144.         {
  145. //            System.out.println("ll"+(licznik.length-i-1));
  146.             wyniklicznik+=licznik[i]*Math.pow(x,licznik.length-i-1);
  147.         }
  148. //        System.out.println("wyniklicznik: "+wyniklicznik);
  149.         float wynikmianownik=0;
  150.         for(int i=0;i<mianownik.length;i++)
  151.         {
  152. //            System.out.println("mianownik:"+mianownik[i]);
  153. //            System.out.println("ll"+(mianownik.length-i-1));
  154.             wynikmianownik+=mianownik[i]*Math.pow(x,mianownik.length-i-1);
  155.         }
  156. //        System.out.println("wynikmianownik: "+wynikmianownik);
  157.         return wyniklicznik/wynikmianownik;
  158.     }
  159. }
Add Comment
Please, Sign In to add comment