用委托改写一个经典函数指针问题

本文介绍了一个使用C语言实现的积分计算程序,通过定义不同的数学函数并利用委托进行积分运算。文章展示了如何创建委托、定义被积函数以及实现梯形法则进行数值积分。

“类比是科学发现的最基本方式”----拉普拉斯

学习委托为了便于理解改写一个C语言积分问题:

using System;

namespace Dgtst
{
   public delegate float funDeletegate(float x);
  
   class myMath
   {
     public float f1(float x)
     {
       float  fVal;
       fVal=1+x*x;
       return fVal;
     }
    
     public float f2(float x)
     {
       float  fVal;
       fVal=1+x+x*x+x*x*x;
       return fVal;
     }
    
     public float f3(float x)
     {
       float  fVal;
       fVal=x/(1+x*x);
       return fVal;
     }
    
    public float Integral(funDeletegate funDg,float a,float b)
    {
     float s,h,y;
     int n,i;
     s=(funDg(a)+funDg(b))/(float)2.0;
     n=100;
     h=(b-a)/n;
     for(i=1;i<n;i++)
     {
      s=s+funDg(a+i*h);
     }
     y=s*h;
     return y;
    }
  }
 
  class myMain
  {
   public static void Main()
   {
    float y1,y2,y3;
    myMath mytst=new myMath();
    y1=mytst.Integral(new funDeletegate(mytst.f1),(float)0.0, (float)1.0);
    y2=mytst.Integral(new funDeletegate(mytst.f2),(float)0.0, (float)2.0);
    y3=mytst.Integral(new funDeletegate(mytst.f3),(float)0.0,(float)3.5);
    Console.Write("y1={0:f},y2={1:f},y3={2:f}",y1,y2,y3);
    Console.ReadLine();
   }
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值