用java写成的一个物理数据处理程序
来源:互联网 发布:护考软件排行 编辑:程序博客网 时间:2024/05/21 07:59
1.首先,处理物理数据有几点困难:精度要求高,有积分,数据公式繁杂。
2.其实double是可以满足精度的,不必使用BigDecimal了。BigDecimal无法开方。
3.积分利用先微分后积分的思想。重点是明白函数的意义。
4.关于函数调用的思想,实际上如果对一个函数积分,只需要给这个函数输入一个X值,输出一个Y值即可。
题目在
程序是
import java.math.BigDecimal;import java.math.MathContext;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTabbedPane;import javax.swing.JTextField;public class Test {//中途用到的常量:double A,w,Ex,xi,B,BD,beta,CTH,X,Nc,hc;//手动输入变量double NA,b,V,d,T,aerfa,R2,ND,ED,lamd,Area,I,EC,fai;//aerfa不能太大或者太小 ,因为下面进行pow的时候用的是double,//常用的中间转换值static double temp1, temp2, temp3;//常数static double q,epu0,epus,c,R1,gD,kB,rouI;final static int size1 = 13;//觉得分成多少分double xsize = 1000;//界面:static JTabbedPane jtp1;static JFrame jf;JPanel jp ;//JLabel jl1 , jl2, jl3, jl4, jl5, jl6,jl7,jl8,jl9,jl10,jl11,jl12,jl13,jl14;JButton jb1, jb2;JLabel[] jl;JTextField []jtf;public static void main(String[] args) {// TODO Auto-generated method stub Test test = new Test();} Test() { inputValue(); constValue(); //参数无用 ex(0.01); //参数无用// X = 0.0000000001;// while(X<=0.000000001)// {// Mx(X);// X=X+0.0000000001;// } Mx(0.000012); //参数无用 Jx(); ita(); } //先给一些输入的数赋值. void inputValue() { NA = 10000000000000000000d;b = 0.000003d;V = 2d;d = 0.000015d;T = 10d;aerfa = 50000d;R2 = 0.3d;ED = 0.000000000000000000864d;ND = 500000000000000000000000d;lamd = 0.000015d;//原来误写成8Area = 0.00000004d;//I = new BigDecimal(jtf[12].getText().toString());EC = 700000d;fai = 100000000000000d;X = 0.0000000002d;hc = 1.863*Math.pow(10, -25); } void constValue(){//计算qq = 1.6*Math.pow(10, -19);System.out.println("q: "+q);//epu0epu0 = 8.854*Math.pow(10, -12);//System.out.println("epu0: "+epu0);//epusepus = 11.7; //c c = 3*Math.pow(10, 8); //R1,gD R1 = 0.3; gD = 2; //kB kB = 1.38*Math.pow(10, -23); //System.out.println("59:kB: "+kB); //rouI rouI = 1.6*Math.pow(10, -17); //A A = q*NA/(epu0*epus); //System.out.println("A: "+A); //BD BD = 6*Math.pow(10, -4)/Math.pow(T, 1.5); Nc = 2.8*Math.pow(10, 19)*T/300; //System.out.println("in 89: Nc: "+Nc); beta = 1/T*kB; CTH = ND*BD*Nc*ED*Math.pow(10, 0-beta)/gD;// System.out.println("CTH in 91: "+CTH);} //计算Ex double ex(double x) { if(V>0) { double temp = 2*V/A +Math.pow(b,2); temp = Math.sqrt(temp); // System.out.println("w in 118: "+w); w = temp-b; //System.out.println("w in 120: "+w); if(w<=d) { if(x>=0&&x<w) { Ex = A*(w-x); }else if(x<0&&x>=(0-b)) { Ex = A*w; } }else { w=d; B = (V-A*b*d+0.5*Math.pow(d, 2))/(b+d); if(x>=0&&x<w) { Ex = A*(d-x)+B; }else if(x<0&&x>=(0-b)) { Ex = A*d+B; } } }else{ //暂时不写 } return Ex; } double c1(double x) { temp1 = aerfa*(1-R1)*fai*(Math.pow(Math.E, 0-(aerfa*x))+R2*Math.pow(Math.E, (aerfa*x-2*aerfa*d))); temp2 = 1- R1*R2*Math.pow(Math.E, (0-2*aerfa*d)); return temp1/temp2; } double gx(double x) { return c1(x)+CTH; } double roux(double x) { if(x>=0 && x < w) { //System.out.println("in roux: (返回值)ND: "+ND); // System.out.println("in roux: (返回值)rouI: "+rouI); // System.out.println("in roux: (返回值)EC: "+EC); // System.out.println("in roux: (返回值)ex(x): "+ex(x)); temp1 = ND*rouI*Math.pow(10, ((0-EC)/ex(x))); // System.out.println("in roux: (返回值)pow: "+Math.pow(10, (0-EC/ex(x)))); System.out.println("in roux: (返回值)temp1: "+temp1); }else { System.out.println("in rouX, wrong!!"); return 0; } return temp1; } double Mx(double x) { double total = 0; // System.out.println("in Mx: X: "+X); //System.out.println("in Mx: w: "+w); if(x>=0&&x<w) { //double t1 = 1000; double xTemp = x/xsize; for ( double i = 0; i < xsize; i++) { total =total+ xTemp*roux(i*xTemp+xTemp/2); } //System.out.println("Mx: "+( total)); //System.out.println("Mx: "+Math.pow(10, total)); total = Math.pow(10, total); }else { System.out.println("in Mx, wrong!!!!!!!!"); } return total; } double Jx() { // double t1 = 1000; double xTemp = w/xsize; double total = 0; for ( double i = 0; i < xsize; i++){total =total+ xTemp*gx(i*xTemp+xTemp/2)*Mx(i*xTemp+xTemp/2);//System.out.println("in Jx: total: "+total);} return total; } double theterx(double x) { double total = 0; total = Math.pow(Math.E, -aerfa*x)+R2*Math.pow(Math.E,aerfa*x-aerfa*d ); return total; } double theter() { double total = 0; // double t1 = 1000; double xTemp = w/xsize; for ( double i = 0; i < xsize; i++){total =total+ xTemp*theterx(i*xTemp+xTemp/2);//System.out.println("in Jx: theterx: "+xTemp*theterx(i*xTemp+xTemp/2));} //System.out.println("theter: "+total); return total; } double theterM() { //double t1 = 1000; double xTemp = w/xsize; double total = 0;// System.out.println("开始调用theterM: "// + "\n"// + "\n"// + "\n"// + "\n"); for ( double i = 0; i < xsize; i++){//total =total+ xTemp*theterx(i*xTemp+xTemp/2)*Mx(i*xTemp+xTemp/2); //System.out.println("theterM: theterx: "+xTemp*theterx(i*xTemp+xTemp/2));// System.out.println("theterM: Mx: "+Mx(i*xTemp+xTemp/2));// System.out.println("theterM: Mx: "+Mx(i*xTemp+xTemp/2)); //System.out.println("theterM: Mx*theterx: "+xTemp*theterx(i*xTemp+xTemp/2)*Mx(i*xTemp+xTemp/2)); //total =total+ xTemp*theterx(i*xTemp+xTemp/2); total =total+ xTemp*theterx(i*xTemp+xTemp/2)*Mx(i*xTemp+xTemp/2);//System.out.println("in Jx: total: "+total);}// System.out.println("theterM: "+total); return total; } double I() { double total = 0; // double t1 = 1000; double xTemp = w/xsize; for ( double i = 0; i < xsize; i++) { total =total+ xTemp*gx(i*xTemp+xTemp/2)*Mx(i*xTemp+xTemp/2)*(2*Mx(i*xTemp+xTemp/2)-1); //System.out.println("in Jx: theterx: "+xTemp*theterx(i*xTemp+xTemp/2)); } total = total*q*A; // System.out.println("theter: "+total); return total; } double ita() { double total =0; //参数均无意义。 total = aerfa*(1-R1)*theter()/(1-R1*R2*Math.pow(Math.E, -2*aerfa*d)); System.out.println("in ita: ita: "+total); double De = theterM()/theter(); System.out.println("in ita: De: "+De); double R = q*lamd*total*De/hc; System.out.println("in ita: R: "+R); double Dstar = R*Math.sqrt(Area)/Math.sqrt(2*q*I()); System.out.println("in ita: Dstar: "+Dstar); System.out.println("in ita: fai(平方)*Dsta: "+Math.sqrt(fai)*Dstar ); System.out.println("in ita: fai(平方)*Dsta: "+(fai)*Dstar ); return total; } }
0 0
- 用java写成的一个物理数据处理程序
- 用python写一个简单的用户登陆程序(要求写成函数)
- 将用eclipse写成的JAVA程序转换为exe(实用!)
- 经过漫长的试验,我终于写成一个简单的快速排序程序了。
- Rhino-用纯Java写成的JavaScript的开放源代码实现
- 假如我的生活可以写成程序
- 将算法写成程序的方法
- 5将例题2.4改写成一个多文件程序
- 怎么样把一个靠左一个靠右的文字用简洁方法写成一列
- JAVA小写的人民币写成大写
- 将 java 改写成 beanshell 的经验之谈
- JAVA程序中的JSON数据处理
- java的一个程序
- 的一个Java程序
- C++的程序也会写成没有效率的代码
- java 相邻的数据处理
- java MessagePack的数据处理
- 用c++写成的最小二乘法的源代码
- iOS下的实际网络连接状态检测
- Windows句柄
- 【代码笔记】iOS-点击搜索按钮,或放大镜后都会弹出搜索框
- Activity、ViewGroup与View的事件分发机制
- 使用vector创建一个二维数组(一)
- 用java写成的一个物理数据处理程序
- javascript面试题_2
- IPNC RDK5.0 make sysall 无法通过问题
- opencv中CvSeq的取点用法
- Android - 计时器
- LeetCode题解:First Bad Version
- 新建cocos 2d-x 项目的错误
- 半年总结之哪些年的管理
- 分享你最喜欢的技巧和提示(Xcode,Objective-C,Swift,C...等等)