没有合适的资源?快使用搜索试试~ 我知道了~
C#数值计算算法编程数值积分类Integral的设计.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 199 浏览量
2022-05-06
15:12:14
上传
评论
收藏 128KB DOC 举报
温馨提示
试读
11页
C#数值计算算法编程数值积分类Integral的设计.doc
资源推荐
资源详情
资源评论
C#数值计算算法编程数值积分类 Integral 的设计
namespace CSharpAlgorithm.Algorithm
{
/**
* 计算数值积分的类Integral
*
* @author 周长发
* @version 1.0
*/
public abstract class Integral
{
/**
* 抽象函数:计算积分函数值,必须在派生类中覆盖该函数
*
* @param x - 函数变量
* @return double型,对应的函数值
*/
public abstract double Func(double x);
/**
* 基本构造函数
*/
public Integral()
{
}
/**
* 变步长梯形求积法
*
* 调用时,须覆盖计算函数f(x)值的虚函数double Func(double x)
*
* @param a - 积分下限
* @param b - 积分上限,要求b>a
* @param eps - 积分精度要求
* @return double 型,积分值
*/
public double GetValueTrapezia(double a, double b, double eps)
{
int n,k;
double fa,fb,h,t1,p,s,x,t=0;
// 积分区间端点的函数值
fa=Func(a);
fb=Func(b);
// 迭代初值
n=1;
h=b-a;
t1=h*(fa+fb)/2.0;
p=eps+1.0;
// 迭代计算
while (p>=eps)
{
s=0.0;
for (k=0;k<=n-1;k++)
{
x=a+(k+0.5)*h;
s=s+Func(x);
}
t=(t1+h*s)/2.0;
p=Math.Abs(t1-t);
t1=t;
n=n+n;
h=h/2.0;
}
return(t);
}
/**
* 变步长辛卜生求积法
*
* 调用时,须覆盖计算函数f(x)值的虚函数double Func(double x)
*
* @param a - 积分下限
* @param b - 积分上限,要求b>a
* @param eps - 积分精度要求
* @return double 型,积分值
*/
public double GetValueSimpson(double a, double b, double eps)
{
int n,k;
double h,t1,t2,s1,s2=0,ep,p,x;
// 计算初值
n=1;
h=b-a;
t1=h*(Func(a)+Func(b))/2.0;
s1=t1;
ep=eps+1.0;
// 迭代计算
while (ep>=eps)
{
p=0.0;
for (k=0;k<=n-1;k++)
{
x=a+(k+0.5)*h;
p=p+Func(x);
}
t2=(t1+h*p)/2.0;
s2=(4.0*t2-t1)/3.0;
ep=Math.Abs(s2-s1);
t1=t2; s1=s2; n=n+n; h=h/2.0;
}
return(s2);
}
/**
* 自适应梯形求积法
*
* 调用时,须覆盖计算函数f(x)值的虚函数double Func(double x)
*
* @param a - 积分下限
* @param b - 积分上限,要求b>a
* @param d - 对积分区间进行分割的最小步长,当子区间的宽度
* 小于d时,即使没有满足精度要求,也不再往下进行分割
* @param eps - 积分精度要求
* @return double 型,积分值
*/
public double GetValueATrapezia(double a, double b, double d, double eps)
{
double h,f0,f1,t0,z;
double[] t = new double[2];
// 迭代初值
剩余10页未读,继续阅读
资源评论
老帽爬新坡
- 粉丝: 83
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功