在工程中,经常会遇到积分问题,这时原函数往往都是找不到的,因此就需要用计算方法的数值积分来求。

    public class Integral
{
/// <summary>
/// 梯形公式
/// </summary>
/// <param name="fun">被积函数</param>
/// <param name="up">积分上限</param>
/// <param name="down">积分下限</param>
/// <returns>积分值</returns> public static double TiXing(Func<double, double> fun, double up, double down)
{
return (up - down) / * (fun(up) + fun(down));
}
/// <summary>
/// 辛普森公式
/// </summary>
/// <param name="fun">被积函数</param>
/// <param name="up">积分上限</param>
/// <param name="down">积分下限</param>
/// <returns>积分值</returns>
public static double Simpson(Func<double, double> fun, double up, double down)
{
return (up - down) / * (fun(up) + fun(down) + * fun((up + down) / ));
}
/// <summary>
/// 科特克斯公式
/// </summary>
/// <param name="fun">被积函数</param>
/// <param name="up">积分上限</param>
/// <param name="down">积分下限</param>
/// <returns>积分值</returns>
public static double Cotes(Func<double, double> fun, double up, double down)
{
double C = (up - down) / * ( * fun(up) + * fun(down) + * fun((up + * down) / )
+ * fun((up + down) / ) + * fun(( * up + down) / ));
return C;
} /// <summary>
/// 复化梯形公式
/// </summary>
/// <param name="fun">被积函数</param>
/// <param name="N">区间划分快数</param>
/// <param name="up">积分上限</param>
/// <param name="down">积分下限</param>
/// <returns>积分值</returns>
public static double FuHuaTiXing(Func<double, double> fun, int N, double up, double down)
{
double h = (up - down) / N;
double result = ;
double x = down;
for (int i = ; i < N - ; i++)
{
x += h;
result += fun(x);
}
result = (fun(up) + result * + fun(down)) * h / ;
return result;
} /// <summary>
/// 复化辛浦生公式
/// </summary>
/// <param name="fun">被积函数</param>
/// <param name="N">区间划分快数</param>
/// <param name="up">积分上限</param>
/// <param name="down">积分下限</param>
/// <returns>积分值</returns>
public static double FSimpson(Func<double, double> fun, int N, double up, double down)
{
double h = (up - down) / N;
double result = ;
for (int n = ; n < N; n++)
{
result += h / * (fun(down) + * fun(down + h / ) + fun(down + h));
down += h;
}
return result;
}
/// <summary>
/// 复化科特斯公式
/// </summary>
/// <param name="fun">被积函数</param>
/// <param name="N">区间划分快数</param>
/// <param name="up">积分上限</param>
/// <param name="down">积分下限</param>
/// <returns>积分值</returns>
public static double FCotes(Func<double, double> fun, int N, double up, double down)
{
double h = (up - down) / N;
double result = ;
for (int n = ; n < N; n++)
{
result += h / * ( * fun(down) + * fun(down + h / ) + * fun(down + h / ) +
* fun(down + * h / ) + * fun(down + h));
down += h;
}
return result;
}
/// <summary>
/// 龙贝格算法
/// </summary>
/// <param name="fun">被积函数</param>
/// <param name="e">结果精度</param>
/// <param name="up">积分上限</param>
/// <param name="down">积分下限</param>
/// <returns>积分值</returns>
public static double Romberg(Func<double, double> fun, double e, double up, double down)
{
double R1 = , R2 = ;
int k = ; //2的k次方即为N(划分的子区间数)
R1 = ( * C(fun, * (int)Math.Pow(, k), up, down) - C(fun, (int)Math.Pow(, k++), up, down)) / ;
R2 = ( * C(fun, * (int)Math.Pow(, k), up, down) - C(fun, (int)Math.Pow(, k++), up, down)) / ;
while (Math.Abs(R2 - R1) > e)
{
R1 = R2;
R2 = ( * C(fun, * (int)Math.Pow(, k), up, down) - C(fun, (int)Math.Pow(, k++), up, down)) / ;
}
return R2;
}
private static double S(Func<double, double> fun, int N, double up, double down)
{
return ( * FuHuaTiXing(fun, * N, up, down) - FuHuaTiXing(fun, N, up, down)) / ;
}
private static double C(Func<double, double> fun, int N, double up, double down)
{
return ( * S(fun, * N, up, down) - S(fun, N, up, down)) / ;
}
}

计算方法(二)用C#实现数值积分的更多相关文章

  1. MATLAB介绍

    MATLAB MATLAB[1]  是美国MathWorks公司出品的商业数学软件,用于算法开发.数据可视化.数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink ...

  2. stock 基本操作

    追涨停   量比 大于5      0%-2%   个股    2点卖     37分钟买   板块5 -8 只涨停    板块分向标   追踪短期个股的涨跌现象    明白市场大级别趋势     主 ...

  3. 杂项-数学软件:MATLAB

    ylbtech-杂项-数学软件:MATLAB MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发.数据可视化.数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATL ...

  4. Image Processing and Analysis_8_Edge Detection:Finding Edges and Lines in Images by Canny——1983

    此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...

  5. [LeetCode] Unique Binary Search Trees 独一无二的二叉搜索树

    Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For examp ...

  6. android二维码生成

    前生: 一维码:条形码  数字 缺点:不好看,占面积, 好了,请看效果图: 在准备之前我们要导一个包:core-3.2.1.jar 下载请访问: http://download.csdn.net/do ...

  7. C学习笔记 知识集锦(二)

     1. 数组和指针 2. 字符串赋值 3. memset&memcpy 4. 机器数和真值,原码,反码和补码 5. 文件指针和文件描述符 6. 内存泄露和内存损坏 7. 什么是不可移植的程序 ...

  8. Spring学习总结(二)——静态代理、JDK与CGLIB动态代理、AOP+IoC

    一.为什么需要代理模式 假设需实现一个计算的类Math.完成加.减.乘.除功能,如下所示: package com.zhangguo.Spring041.aop01; public class Mat ...

  9. 响应性web设计实战总结(二)

    响应性web设计实战总结(二) 阅读目录 背景知识: Gulp-less安装及配置如下 对响应性web总结,之前总结过2篇文章:可以看如下: http://www.cnblogs.com/tugenh ...

随机推荐

  1. linux文件系统结构和权限

    linux文件系统的目录结构 熟话说的好,好记性不如烂笔头,虽然没用笔,但动动手指还是可以的.下面的目录结构都是摘抄过来的,动动手指来加深下印象吧,还能练习下打字速度,哈哈,多好啊. ...突然又改变 ...

  2. 文件操作-php

    <?php /* 建立缓存 可以用文件长时间保存数据 文件是以liunux为模型的 在Windows下只能获取file ,dir unknow linux 下可以获取block char dir ...

  3. JavaScript作用域链详解

    JavaScript的作用域链还是很有味道的,搞懂了这个知识点,闭包的问题也就迎刃而解咯 1.JavaScript的全局变量和局部变量 首先,先来看看js的全局变量和局部变量,js不是块级作用域,所以 ...

  4. javascript特殊运算符(in,instanceof,typeof,delete,void,逗号)

    in运算符                 in运算符要求其左边的运算数是一个字符串,或可以被转换为字符串,右边的运算数十一个对象或数组.如果该 运算符左边的值是右边对象的一个属性名,则返回true, ...

  5. C语言基础学习基本数据类型-Char类型

    char类型 char类型用于储存字母和标点之类的字符.但是在技术实现上char却是整数类型.为了处理字符,计算机使用一种数字编码,用特定的整数表示特定的字符.字符变量输入输出用%c符号.定义语法如下 ...

  6. 素数判定 AC 杭电

    素数判定 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  7. ARM内核和架构都是什么意思,它们到底是什么关系?

    ARM产品越来越丰富,命名也越来越多.很多朋友提问: ARM内核和架构都是什么意思?内核和架构的关系是什么?比如ARMv7架构,这个架构指的是什么?小编选出了几个精彩回答!希望对嵌友们在选择设计电路时 ...

  8. poj2255 (二叉树遍历)

    poj2255 二叉树遍历 Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu   Descripti ...

  9. chrome代理服务器设置

    在百度的内网很难访问chrome的相关站点,如果安装一些chrome的插件很不方便,所以呢,研究了一下chrome浏览器的代理模式,FQ安装插件. Chrome设置代理服务器的方法大体有几种: 1. ...

  10. @action 注解

    ================================================= 下载 注解配置 private String fileName; private String co ...