Advertisement
Guest User

Untitled

a guest
Jun 18th, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.93 KB | None | 0 0
  1. import java.util.Scanner;
  2. import javax.swing.JOptionPane;
  3. import javax.swing.JTextField;
  4. import java.io.*;
  5. import java.text.DecimalFormat;
  6. public class Main {
  7. public static void main(String[] args) throws Exception{
  8. Scanner scan=new Scanner(System.in);
  9. DecimalFormat df=new DecimalFormat();
  10. df.applyPattern("0.0000");
  11. boolean loop=true;
  12. //caso eu precise quebrar o while mais pra frente.
  13. while(loop==true){
  14. int menu=printMenu();
  15. switch(menu){
  16. default:{
  17. Encerrar();
  18. break;
  19. }
  20. case 0:{
  21. Object n = JOptionPane.showInputDialog(null, "Por favor digite o número de pontos no gráfico:");
  22. String argn=((String) n);
  23. int contador_n=Integer.parseInt(argn);
  24. double x[]=new double[contador_n];
  25. double y[]=new double[contador_n];
  26. JTextField entrada_y=new JTextField();
  27. JTextField entrada_x=new JTextField();
  28. Object[] entrada={
  29. "X:",entrada_x,
  30. "Y:",entrada_y
  31. };
  32. double sumx=0,sumy=0;
  33. for(int i=0;i<contador_n;i++){
  34. int option = JOptionPane.showConfirmDialog(null, entrada, "Valor ("+(i+1)+"/"+contador_n+")", JOptionPane.OK_CANCEL_OPTION);
  35. if(option!=JOptionPane.OK_OPTION) Encerrar();
  36. String texto_x = entrada_x.getText();
  37. String texto_y = entrada_y.getText();
  38. x[i]=Double.parseDouble(texto_x);
  39. y[i]=Double.parseDouble(texto_y);
  40. sumx+=x[i];
  41. sumy+=y[i];
  42. sumx=Round(sumx);
  43. sumy=Round(sumy);
  44. JOptionPane.showMessageDialog(null,texto_x+" "+texto_y+"\n"+x[i]+" "+y[i]
  45. +"\n"+sumx+" "+sumy);
  46. entrada_x.setText("");
  47. entrada_y.setText("");
  48. }
  49. double sumx2=somatorio_x2(contador_n,x);
  50. double sumlny=somatorio_lny(contador_n,y);
  51. double sumxlny=somatorio_xlny(contador_n,x,y);
  52. double a1=calc_a1(contador_n,sumx,sumx2,sumlny,sumxlny);
  53. double a0=calc_a0(contador_n,sumx,sumx2,sumlny,sumxlny);
  54. double ymed=sumlny/contador_n;
  55. double erro=erroExp(contador_n,x,y,a0,a1,ymed);
  56. JOptionPane.showMessageDialog(null,"sumx="+sumx+"\nsumx2="+sumx2+"\nsumlny="+sumlny+
  57. "sumxlny="+sumxlny+"\n"+a0+" "+a1);
  58. double a=Math.pow(Math.E,a0);
  59. double b=a1;
  60. a=Round(a);
  61. b=Round(b);
  62. JOptionPane.showMessageDialog(null,"Y = "+a+"e^"+b+"x\n\n"+"R² = "+erro+"\nr = "+Math.sqrt(erro));
  63. }
  64. case 1:{
  65. Object n = JOptionPane.showInputDialog(null, "Por favor digite o número de pontos no gráfico:");
  66. String argn=((String) n);
  67. int contador_n=Integer.parseInt(argn);
  68. double x[]=new double[contador_n];
  69. double y[]=new double[contador_n];
  70. JTextField entrada_y=new JTextField();
  71. JTextField entrada_x=new JTextField();
  72. Object[] entrada={
  73. "X:",entrada_x,
  74. "Y:",entrada_y
  75. };
  76. double sumx=0,sumy=0;
  77. for(int i=0;i<contador_n;i++){
  78. int option = JOptionPane.showConfirmDialog(null, entrada, "Valor ("+(i+1)+"/"+contador_n+")", JOptionPane.OK_CANCEL_OPTION);
  79. if(option!=JOptionPane.OK_OPTION) Encerrar();
  80. String texto_x = entrada_x.getText();
  81. String texto_y = entrada_y.getText();
  82. x[i]=Double.parseDouble(texto_x);
  83. y[i]=Double.parseDouble(texto_y);
  84. sumx+=x[i];
  85. sumy+=y[i];
  86. sumx=Round(sumx);
  87. sumy=Round(sumy);
  88. JOptionPane.showMessageDialog(null,texto_x+" "+texto_y+"\n"+x[i]+" "+y[i]
  89. +"\n"+sumx+" "+sumy);
  90. entrada_x.setText("");
  91. entrada_y.setText("");
  92. }
  93. double sumx2=somatorio_x2(contador_n,x);
  94. double sumlnx=somatorio_lnx(contador_n,y);
  95. double sumlnxy=somatorio_lnxy(contador_n,x,y);
  96. double a1=calc_a1(contador_n,sumx,sumx2,sumlnx,sumlnxy);
  97. double a0=calc_a0(contador_n,sumx,sumx2,sumlnx,sumlnxy);
  98. double ymed=sumlnx/contador_n;
  99. double erro=erroLog(contador_n,x,y,a0,a1,ymed);
  100. JOptionPane.showMessageDialog(null,"sumx="+sumx+"\nsumx2="+sumx2+"\nsumlny="+sumlnx+
  101. "sumxlny="+sumlnxy+"\n"+a0+" "+a1);
  102. double a=a0;
  103. double b=a1;
  104. a=Round(a);
  105. b=Round(b);
  106. JOptionPane.showMessageDialog(null,"Y = "+a+"+"+b+"lnx\n\n"+"R² = "+erro+"\nr = "+Math.sqrt(erro));
  107. break;
  108. }
  109. case 2:{
  110. File file = new File("C:\\Users\\Lucas\\Desktop\\test.txt");
  111. BufferedReader br = new BufferedReader(new FileReader(file));
  112. String st;
  113. int cont=1,cont_x=0,cont_y=0;
  114. double sumx=0;
  115. int contador_n=0;
  116. double sumy=0;
  117.  
  118. double x[]=new double[99999];
  119. double y[]=new double[99999];
  120. while ((st = br.readLine()) != null){
  121. cont++;
  122. contador_n++;
  123. double valor=Double.parseDouble(st);
  124. if(cont%2==0){
  125. x[cont_x]=valor;
  126. sumx+=valor;
  127. System.out.println("X = "+x[cont_x]);
  128. cont_x++;
  129. }else{
  130. y[cont_y]=valor;
  131. sumy+=valor;
  132. System.out.println("Y = "+y[cont_y]);
  133. cont_y++;
  134. }
  135. }
  136. contador_n=contador_n/2;
  137. double sumx2=somatorio_x2(contador_n,x);
  138. double sumlny=somatorio_lny(contador_n,y);
  139. double sumxlny=somatorio_xlny(contador_n,x,y);
  140. double a1=calc_a1(contador_n,sumx,sumx2,sumlny,sumxlny);
  141. double a0=calc_a0(contador_n,sumx,sumx2,sumlny,sumxlny);
  142. double ymed=sumlny/contador_n;
  143. double erro=erroExp(contador_n,x,y,a0,a1,ymed);
  144. JOptionPane.showMessageDialog(null,"sumx="+sumx+"\nsumx2="+sumx2+"\nsumlny="+sumlny+
  145. "sumxlny="+sumxlny+"\n"+a0+" "+a1);
  146. double a=Math.pow(Math.E,a0);
  147. double b=a1;
  148. a=Round(a);
  149. b=Round(b);
  150. JOptionPane.showMessageDialog(null,"Y = "+a+"e^"+b+"x\n\n"+"R² = "+erro+"\nr = "+Math.sqrt(erro));
  151. break;
  152.  
  153. }
  154. case 3:{
  155. File file = new File("C:\\Users\\Lucas\\Desktop\\test.txt");
  156. BufferedReader br = new BufferedReader(new FileReader(file));
  157. String st;
  158. int cont=1,cont_x=0,cont_y=0;
  159. double sumx=0;
  160. int contador_n=0;
  161. double sumy=0;
  162.  
  163. double x[]=new double[99999];
  164. double y[]=new double[99999];
  165. while ((st = br.readLine()) != null){
  166. cont++;
  167. contador_n++;
  168. double valor=Double.parseDouble(st);
  169. if(cont%2==0){
  170. x[cont_x]=valor;
  171. sumx+=valor;
  172. System.out.println("X = "+x[cont_x]);
  173. cont_x++;
  174. }else{
  175. y[cont_y]=valor;
  176. sumy+=valor;
  177. System.out.println("Y = "+y[cont_y]);
  178. cont_y++;
  179. }
  180. }
  181. contador_n=contador_n/2;
  182. double sumx2=somatorio_x2(contador_n,x);
  183. double sumlnx=somatorio_lnx(contador_n,y);
  184. double sumlnxy=somatorio_lnxy(contador_n,x,y);
  185. double a1=calc_a1(contador_n,sumx,sumx2,sumlnx,sumlnxy);
  186. double a0=calc_a0(contador_n,sumx,sumx2,sumlnx,sumlnxy);
  187. double ymed=sumlnx/contador_n;
  188. double erro=erroLog(contador_n,x,y,a0,a1,ymed);
  189. JOptionPane.showMessageDialog(null,"sumx="+sumx+"\nsumx2="+sumx2+"\nsumlny="+sumlnx+
  190. "sumxlny="+sumlnxy+"\n"+a0+" "+a1);
  191. double a=a0;
  192. double b=a1;
  193. a=Round(a);
  194. b=Round(b);
  195. JOptionPane.showMessageDialog(null,"Y = "+a+"+"+b+"lnx\n\n"+"R² = "+erro+"\nr = "+Math.sqrt(erro));
  196. break;
  197. }
  198. case 4:{
  199. Encerrar();
  200. break;
  201. }
  202. }
  203. }
  204. }
  205. public static double somatorio_lny(int contador_n, double y[]){
  206. double somatorio_lny=0;
  207. for(int i=0;i<contador_n;i++){
  208. somatorio_lny+=Math.log(y[i]);
  209. }
  210. somatorio_lny=Round(somatorio_lny);
  211. return somatorio_lny;
  212. }
  213. public static double somatorio_lnx(int contador_n, double x[]){
  214. double somatorio_lnx=0;
  215. for(int i=0;i<contador_n;i++){
  216. somatorio_lnx+=Math.log(x[i]);
  217. }
  218. somatorio_lnx=Round(somatorio_lnx);
  219. return somatorio_lnx;
  220. }
  221. public static double somatorio_x2(int contador_n, double x[]){
  222. double somatorio_x2=0;
  223. for(int i=0;i<contador_n;i++){
  224. somatorio_x2+=(x[i]*x[i]);
  225. }
  226. somatorio_x2=Round(somatorio_x2);
  227. return somatorio_x2;
  228. }
  229. public static double somatorio_xlny(int contador_n, double x[], double y[]){
  230. double somatorio_xlny=0;
  231. for(int i=0;i<contador_n;i++){
  232. somatorio_xlny+=(x[i]*(Math.log(y[i])));
  233. }
  234. somatorio_xlny=Round(somatorio_xlny);
  235. return somatorio_xlny;
  236. }
  237. public static double somatorio_lnxy(int contador_n, double x[], double y[]){
  238. double somatorio_lnxy=0;
  239. for(int i=0;i<contador_n;i++){
  240. somatorio_lnxy+=(x[i]*(Math.log(y[i])));
  241. }
  242. somatorio_lnxy=Round(somatorio_lnxy);
  243. return somatorio_lnxy;
  244. }
  245. public static double calc_a0(int n,double x,double x2,double lny,double xlny){
  246. double a0 = (x2*lny - xlny*x)/(n*x2 - x*x);
  247. return a0;
  248. }
  249. public static double calc_a1(int n, double x, double x2, double lny, double xlny){
  250. double a1 = (n*xlny - x*lny)/(n*x2 - x*x);
  251. return a1;
  252. }
  253. public static int printMenu(){
  254. Object[] options = { "Exponencial", "Logarítmico"};
  255. Object selected = JOptionPane.showOptionDialog(null, "Escolha o método desejado: ", "Menu",
  256. JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE,
  257. null, options, options[0]);
  258. int menu=((Integer) selected);
  259. if(menu==0){
  260. Object[] options2 = { "Manual", "Importar arquivo"};
  261. Object selected2 = JOptionPane.showOptionDialog(null, "Escolha o método desejado: ", "Menu",
  262. JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE,
  263. null, options2, options[0]);
  264. int menu2=((Integer) selected2);
  265. if(menu2==0){
  266. return 0;
  267. } if(menu2==1) return 2;
  268. else return 10;
  269. }if(menu==1){
  270. Object[] options2 = { "Manual", "Importar arquivo"};
  271. Object selected2 = JOptionPane.showOptionDialog(null, "Escolha o método desejado: ", "Menu",
  272. JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE,
  273. null, options2, options[0]);
  274. int menu2=((Integer) selected2);
  275. if(menu2==0){
  276. return 1;
  277. } if(menu2==1) return 3;
  278. } else return 10;
  279. return 10;
  280. }
  281. public static void Encerrar(){
  282. JOptionPane.showMessageDialog(null,"Adeus!");
  283. System.exit(0);
  284. }
  285. public static double Round(double valor){
  286. valor=valor*100000;
  287. valor = Math.round(valor);
  288. valor=valor/100000;
  289. return valor;
  290. }
  291. public static double erroExp(int n, double x[], double y[], double a0, double a1, double ymed){
  292. double St=0,Sr=0,erro,t,r;
  293. for(int i=0; i<n;i++){
  294. t=(Math.log(y[i])-ymed)*(Math.log(y[i])-ymed);
  295. r=(Math.log(y[i])-a0-a1*x[i])*(Math.log(y[i])-a0-a1*x[i]);
  296. St+=t;
  297. Sr+=r;
  298. System.out.println(St+"\t"+Sr+"\t"+y[i]+"\t"+a0+"\t"+a1);
  299. }
  300. erro=St-Sr;
  301. erro=erro/St;
  302. System.out.println(erro);
  303. return erro;
  304. }
  305. public static double erroLog(int n, double x[], double y[], double a0, double a1, double ymed){
  306. double St=0,Sr=0,erro,t,r;
  307. for(int i=0; i<n;i++){
  308. t=(y[i]-ymed)*(y[i]-ymed);
  309. r=(y[i]-a0-a1*Math.log(x[i]))*(y[i]-a0-a1*Math.log(x[i]));
  310. St+=t;
  311. Sr+=r;
  312. System.out.println(St+"\t"+Sr+"\t"+y[i]+"\t"+a0+"\t"+a1);
  313. }
  314. erro=St-Sr;
  315. erro=erro/St;
  316. System.out.println(erro);
  317. return erro;
  318. }
  319. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement