C# - 委托_求定积分通用方法

代码:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6
 7 namespace 委托_例子
 8 {
 9     static class Program
10     {
11         // 定义委托(Double类型)
12         delegate double Integand(double x);
13
14         //定义方法
15         static double Method1(double x)
16         {
17             return 2 * x + 1;
18         }
19
20         static double Method2(double x)
21         {
22             return x * x;
23         }
24
25         // 定义是用委托的方法
26         static double DefiniteIntegrate(Integand f, double a, double b)
27         {
28             const int sect = 1000;
29
30             double area = 0;
31
32             double delta = (b - a) / sect;
33
34             for (int i = 0; i < sect; i++)
35             {
36                 //此处的 f 就代表 Method1 或是 Method2。
37                 //传给他们一个double类型的值,返回一个double类型的值。
38                 //此时的double值就是长乘以宽“a + i * delta”
39                 area += delta * f(a + i * delta);
40             }
41
42             return area;
43         }
44
45         static void Main(string[] args)
46         {
47             //调用方法
48             //传入一个方法
49             Console.WriteLine(Program.DefiniteIntegrate(Method1, 1, 5));
50             Console.WriteLine();
51             Console.WriteLine(Program.DefiniteIntegrate(Method2, 0, 1));
52
53             Console.ReadKey();
54         }
55     }
56 }
57                     
时间: 2024-09-29 14:07:01

C# - 委托_求定积分通用方法的相关文章

C# 多线程 用委托实现异步_调用委托的BeginInvoke和EndInvoke方法

1.C#中的每一个委托都内置了BeginInvoke和EndInvoke方法,如果委托的方法列表里只有一个方法,那么这个方法就可以异步执行(不在当前线程里执行,另开辟一个线程执行).委托的BeginInvoke和EndInvoke方法就是为了上述目的而生的. 2.原始线程发起了一个异步线程,有如下三种执行方式: 方式一:等待一直到完成,即原始线程在发起了异步线程以及做了一些必要处理之后,原始线程就中断并等待异步线程结束再继续执行. 方式二:轮询,即原始线程定期检查发起的线程是否完成,如果没有则可

C# - 委托_ 匿名方法

代码: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 委托_例子 8 { 9 static class Program 10 { 11 // 定义委托(Double类型) 12 delegate double Integand(double x); 13 14 //

NewtonPrincipia_物体的运动_求向心力

NewtonPrincipia_物体的运动_求向心力 程序和数学的一个显而易见的区别就是:程序的每个变量必须依赖于某个具体的数,而数学的变量我们只要知道它是一个符号就可以了:程序中的变量必须是离散的,而数学中的变量是以连续的可以与数轴上的点一一对应的. 下面的叙述中很少有公式,且充满了比例.我曾经听到过一种观点,数学是交给笨的人使用的工具,而那些聪明的人,他们可以用最原始的方法找到解决方案.让我们看一下十七世纪的被苹果砸中的艾萨克,是怎样推导出向心力公式的.在现在的观点看来,其中涉及到的很多没有

数据结构:可以用求最短路径的方法思想求最长路径么?给出详细解答。。

数据结构:可以用求最短路径的方法思想求最长路径么?为什么呢? 这里求解最短路径的通用方法有Dijkstra算法和Floyd-Warshall算法,Dijkstra算法不允许边的权值为负,也不允许有回路,而Floyd-Warshall算法可以允许边的权值为负,但不允许负值边构成回路,即可以求解有回路的图 它们都有局限,这两种算法的思想可以用来求最长路径么?? 为什么 不可以? (感谢给我答案的好心人:来自于知乎:http://www.zhihu.com/question/27201255和CSDN

java把class类写入excel和读取出来的通用方法

这个例子中用了反射,泛型实现了通用的excel读写方法. 我们常常遇到要把一个类class写入excel的时候,有时候class的字段非常多,我们不可能一个个的去get写入excel.这里写了一个通用方法.只要传入数据的list和类型,就能很方便的把数据写入excel,也能很方便的读取出来. 例子下载: java通过class读写excel的例子 首先要引用这两个包 jxl.jar poi-3.9-20121203.jar 相关代码如下: BeanRefUtil 反射代码---自动get类cla

C# - 委托_多播委托

代码: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 委托_例子 8 { 9 static class Program 10 { 11 delegate void Show(string name); 12 13 static void CatShow(string

线段树求逆序数方法 HDU1394&amp;&amp;POJ2299

为什么线段树可以求逆序数? 给一个简单的序列 9 5 3 他的逆序数是3 首先要求一个逆序数有两种方式:可以从头开始往后找比当前元素小的值,也可以从后往前找比当前元素大的值,有几个逆序数就是几. 线段树就是应用从后往前找较大值得个数.(一边更新一边查) 当前个数是 n = 10 元素   9  5   3 9先加入线段树,T[9]+=1:查从T[9]到T[10]比9大的值,没有sum = 0: 5 加入线段树,T[5] += 1,查从T[5]到T[10]比5大的值,有一个9,sum +=1: 3

.NET基础架构方法—DataTableToExcel通用方法

p { display: block; margin: 3px 0 0 0; } --> .NET架构基础方法—DataTableToExcel通用方法(NPOI) 今天封装DataTaleToExcel通用方法,也是大家开发中特别常用的.首先去下载NPOI,链接http://npoi.codeplex.com/ ,使用包中的net4.0版本的dll,全部引用.官网中已经给了足够的示例,我只拿来异步分,给类命名为ExcelTools.cs .下面上代码 1 using System; 2 usi

.NET基础架构方法—DataTableToList通用方法

p { display: block; margin: 3px 0 0 0; } --> .NET架构基础方法—DataTableToList通用方法 我们经常需要将从数据库中所读取的数据以DataTable类型返回,也经常需要遍历DataTable转换为List>T<.我们也经常需要为每一个DataTable转换为List单独编写适合他们数据库架构地方法.下面上代码: public static class DataTableTools<T> where T : class