编写程序,利用辛甫生公式求S=∫10 e^-x^2dx(积分上限为1,下限为0)取n为10及100两种情况。辛甫生公式:
S≈h/3[(f(x0)+f(xn))+2(f(x2)+f(x4)+…+f(xn-2))+4(f(x1)+f(x3)+…+f(xn-1))]
其中,h=(b-a)/n;
     x0=a,xn=b;
     f(xi)=f(a+I*h).=========================================我想问:f(xi)=f(a+I*h).这个怎么回事啊?数学不好,还有若求值,就要用到自然对数,那在计算机中又怎么办呢.我查查资料,希望知道的人帮分析下.

解决方案 »

  1.   

    S=∫e^-x^2dx(积分上限为1,下限为0,不知怎么编辑,上面写错了)
      

  2.   

    up~Have a look everybody!~`
      

  3.   

    f(xi)=f(a+I*h).
    是不是..
    f(xi)=f(a+i*h).(i是下标)f(xi)就是把a-b n等分之后各点得函数值....就是利用求和球极限得思想来球定积分......(极限就是,到达允许得误差范围内)
      

  4.   

    matlab, mathmatics这些东东里有此功能吧,不过可能看不到源码。
      

  5.   

    数学系的飘过,qiyadeng()的说法是对的,他是个近似值,当N趋于无穷时近似于S,i是下标,取N个断点
      

  6.   

    import java.math.*;
    public class Integral
    {
      public static void main(String []args)
     {
       double s1=0,s2=0,h;
       int a=0,b=1;
      final int N=10;
      h=(b-a)/N;
      for(int i=1;i<=N-1;i++)
       {
         if(i%2==0)
         s1+=Math.exp(-i*i);
         else 
         s2+=Math.exp(-i*i);
       }
       s1=(h/3)*(Math.exp(-0*0)+Math.exp(-N*N)+2*s1+4*s2);
       System.out.println(s1);
      }
       
    }
    ///看看有什么问题??
      

  7.   

    ///自已修改了,应该可以了.~~
    import java.math.*;
    import java.io.*;
    public class Integral1
    {
      public static void main(String []args)
     {
       double s1=0,s2=0,h;
       int a=0,b=1,n=0;
       System.out.println("请输入n的值(10或100):");
      try   
      {BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
      n= Integer.parseInt(reader.readLine());
       
      }   
      catch(Exception   e)   
      {   
      System.out.println("cannot   read");   
      }  
      h=(double)(b-a)/n;
      for(int i=1;i<=n-1;i++)
       {
         if(i%2==0)
         s1=s1+Math.exp(-i*i);
         else 
         s2=s2+Math.exp(-i*i);
       }
       s1=(double)(h/3)*(Math.exp(-0*0)+Math.exp(-n*n)+2*s1+4*s2);
       System.out.print("积分的结果是:");
       System.out.println(s1);
    System.out.println(h);
       
      }
       
    }
      

  8.   

    import java.math.*;
    import java.io.*;
    public class Integral1
    {
      public static void main(String []args)
     {
       double s1=0,s2=0,h;
       int a=0,b=1,n=0;
       System.out.println("请输入n的值(10或100):");
      try   
      {BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
      n= Integer.parseInt(reader.readLine());
       
      }   
      catch(Exception   e)   
      {   
      System.out.println("cannot   read");   
      }  
      h=(double)(b-a)/n;
      for(int i=1;i<=n-1;i++)
       {
         if(i%2==0)
         s1=s1+Math.exp(-i*i);
         else 
         s2=s2+Math.exp(-i*i);
       }
       s1=(double)(h/3)*(Math.exp(-0*0)+Math.exp(-n*n)+2*s1+4*s2);
       System.out.print("积分的结果是:");
       System.out.println(s1);
    System.out.println(h);
       
      }
       
    }