piotranon

Untitled

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