⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 example5_11.java

📁 清华大学2002年出版的《科学与工程数值计算算法Java》配套源码
💻 JAVA
字号:
import java.applet.*;
import java.awt.*;
public class Example5_11 extends Applet
{
 public double enspl(double[] x,double[] y,double t,double[] s)
 {int i,j,k,n=x.length;
  double g0,g1,t0,t1,t2,t3;
  double[] u=new double[n+3];
  for(k=0;k<n-1;k++)u[k+2]=(y[k+1]-y[k])/(x[k+1]-x[k]);
  u[1]=2*u[2]-u[3];u[0]=2*u[1]-u[2];
  u[n+1]=2*u[n]-u[n-1];u[n+2]=2*u[n+1]-u[n];
  for(k=0;k<n-1;k++)if(t<x[k+1])break;
  s[0]=Math.abs(u[k+1]-u[k]);s[1]=Math.abs(u[k+2]-u[k+1]);
  s[2]=Math.abs(u[k+3]-u[k+2]);s[3]=Math.abs(u[k+4]-u[k+3]);
  if(s[0]+s[2]<1e-12)g0=(u[k+1]+u[k+2])/2;
  else g0=(s[2]*u[k+1]+s[0]*u[k+2])/(s[2]+s[0]);
  if(s[1]+s[3]<1e-12)g1=(u[k+2]+u[k+3])/2;
  else g1=(s[3]*u[k+2]+s[1]*u[k+3])/(s[3]+s[1]);
  s[0]=y[k];s[1]=g0;s[2]=(3*u[k+2]-2*g0-g1)/(x[k+1]-x[k]);
  s[3]=(g1+g0-2*u[k+2])/(x[k+1]-x[k])/(x[k+1]-x[k]);
  g0=t-x[k];g1=((s[3]*g0+s[2])*g0+s[1])*g0+s[0];
  return g1;
}

 public void paint(Graphics g)
 {double[] x={-1,-0.95,-0.75,-0.55,-0.3,0,0.2,0.45,0.6,0.8,1};
  double[] y=new double[11];
  double[] s=new double[4];
  double f,t,eps=1e-7;
  int i;
  for(i=0;i<11;i++)y[i]=1.0/(1+25*x[i]*x[i]);
  t=-0.85;f=enspl(x,y,t,s);
  g.drawString("t="+t+"  f(t)="+f+"  实际值="+(1.0/(1+25*t*t)),10,20);
  g.drawString("三次插值多项式系数为"+s[0]+"  "+s[1],10,40);
  g.drawString("                   "+s[2]+"   "+s[3],10,60);
  t=0.15;f=enspl(x,y,t,s);
  g.drawString("t="+t+"  f(t)="+f+"  实际值="+(1.0/(1+25*t*t)),10,100);
  g.drawString("三次插值多项式系数为"+s[0]+"  "+s[1],10,120);
  g.drawString("                   "+s[2]+"  "+s[3],10,140);

 }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -