📄 math.java
字号:
import java.lang.Math.*;
public class math{
double a=0.00001,b=6,error=0.001;
public double f(double x){
return Math.sin(x)/x;
}
public double longbg(){
double h,k,s,x,s1=0.0,s2,c1=0.0,c2,T1,T2,R1=0.0,R2;
h=b-a;
T1=(f(a)+f(b))*h/2;
k=1;
W1: while(true){
s = 0;
x = a + h / 2;
do {
s = s + f(x);
x = x + h;
}
while (x < b);
T2 = (T1 + h * s) / 2;
s2 = T2 + (T2 - T1) / 3;
if (k == 1) {
k = k + 1;
h = h / 2;
T1 = T2;
s1 = s2;
continue W1;
}
else
c2=s2+(s2-s1)/15;
if(k==2){
c1 = c2;
k = k + 1;
h = h / 2;
T1 = T2;
s1 = s2;
continue W1;
}
else
R2=c2+(c2-c1)/63;
if(k==3){
R1=R2;
c1=c2;
k = k + 1;
h = h / 2;
T1 = T2;
s1 = s2;
continue W1;
}
else if(Math.abs(R2-R1)>=error){
R1 = R2;
c1 = c2;
k = k + 1;
h = h / 2;
T1 = T2;
s1 = s2;
continue W1;
}
else
break W1;
}
return(R2);
}
public double bianbc(){//变步长算法
double h,T1,T2,S,x;
h=b-a;
T1=((Math.sin(a))/a+(Math.sin(b))/b)*h/2;
W1:while(true){
S=0;
x=a+h/2;
do{
S = S + Math.sin(x)/x;;
x = x + h;
}while(x<b);
T2=(T1+h*S)/2;
if(Math.abs(T2-T1)>=error){
h = h / 2;
T1 = T2;
}
else
break W1;
}
return(T2);
}
public static void main(String args[]){
math m=new math();
System.out.println("变步长算法值为:"+m.longbg());
System.out.println("龙贝格算法值为:"+m.bianbc());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -