📄 example6_4.java
字号:
import java.applet.*;
import java.awt.*;
public class Example6_4 extends Applet
{
public static double f(double x)
{double y;
if(x==0)y=1;
else y=Math.sin(x)/x;
return y; }
public static int romberg(double a,double b,double[][] t )
{double x,h,s;
int k;
h=b-a;t[0][0]=(f(a)+f(b))*h/2;
for(k=1;k<=3;k++)
{t[k][0]=0;x=a+h/2;s=0;
while(x<b){s+=f(x);x+=h;}
t[k][0]=(t[k-1][0]+s*h)/2;
h/=2;}
t[0][1]=t[1][0]+(t[1][0]-t[0][0])/3;
t[1][1]=t[2][0]+(t[2][0]-t[1][0])/3;
t[2][1]=t[3][0]+(t[3][0]-t[2][0])/3;
t[0][2]=t[1][1]+(t[1][1]-t[0][1])/15;
t[1][2]=t[2][1]+(t[2][1]-t[1][1])/15;
t[0][3]=t[1][2]+(t[1][2]-t[0][2])/63;
k=-1;
do
{k++;if(k>10)return 10;
t[k+4][0]=0;x=a+h/2;s=0;
while(x<b){s+=f(x);x+=h;}
t[k+4][0]=(t[k+3][0]+s*h)/2;h/=2;
t[k+3][1]=t[k+4][0]+(t[k+4][0]-t[k+3][0])/3;
t[k+2][2]=t[k+3][1]+(t[k+3][1]-t[k+2][1])/15;
t[k+1][3]=t[k+2][2]+(t[k+2][2]-t[k+1][2])/63;
}while(Math.abs(t[k][3]-t[k+1][3])>1e-7);
return k+1;
}
public void paint(Graphics g)
{double[][] t=new double[13][4];
int i,n;
n=romberg(0,1,t);
g.drawString("T1 T2 T3 T4",10,20);
for(i=0;i<=n;i++)
{g.drawString(""+t[i][0]+" "+t[i][1]+" "+t[i][2]+" "+t[i][3],10,40+20*i);}
g.drawString(""+t[n+1][0]+" "+t[i][1]+" "+t[i][2],10,20*n+60);
g.drawString(""+t[n+2][0]+" "+t[n+2][1],10,20*n+80);
g.drawString(""+t[n+3][0],10,20*n+100);
g.drawString("积分近似值为"+t[n][3],10,20*n+120);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -