分类
外汇交易市场策略

期权定价问题的有限元Richardson外推法

03-24 1223

【精品】Richardson外推加速算法在数值公式中的应用要点解析.doc

Richardson外推加速法在数值微分与积分 中的应用 信息与计算科学专业学生:XX 指导老师:XX [摘要]:本文介绍了数值微分与数值积分的Richardson外推加速算法,基于Euler-Maclaurin公式给出了算法的推导过程,再根据Richardson外推方法推导出了收敛更快的数值微分与积分公式,经数值实验验证该公式有良好的计算效果. 关键词:Richardson外推法,Romberg算法,Euler-Maclaurin公式 Abstract: the paper gives a introduction of Richardson’s Extrapolation Method, then, listing the derivation and proof of Richardson’s Extrapolation depending on Euler-Maclaurin. According to the Richardson’s Extrapolaton,this paper got the faster numerical differentiation and integral formula.The formula is prove to be efficient by numerical experiment. Keyword: Richardson抯 Extrapolation, Romberg抯 Algoritm, Euler-Maclaurin Algoritm la0 引言: 外推法用以低阶公式产生高精度收敛效果进而改善序列收敛效率,它是在20世纪前期由英国数学家,物理学家,气象学家Lewis Fry 提出的.在数值分析领域,外推法有很多实际应用,如隆贝格积分方法,是在梯形公式的基础上应用外推法导出的;还有用于求解常微分方程的Bulirsch–Stoer算法. 1 Richardson外推加速算法 1.1 Richardson外推加速算法 李查逊外推加速法基于如下原理 定理 设 ,则成立 式中系数 与无关 这里的与将要出现的等均为与无关的系数. 将以上两个式子做线性组合: 则: 若令 则可以从余项展开式中消去误差的主要部分项,从而得到 这样构造出的 ,其实就是柯特斯公式序列,它与积分值I的逼近阶为六阶如此继续下去,每加速一次,误差的量级便提高2阶按公式 经过次加速后,余项便取下列形式: 这就是外推加速法. 1.2 算法程序 #include #include #include using namespace std; double f(double x); double cal(int k, double h, int c); double a,b,T[100][100]; // 存放数据,为一个下三角矩阵int main() < a = 0; b = 1; //积分的上、下限double e , n, h = b-a; // e 为所设的精度,可以用输入来指定cout>e; int i, m, k=0,c=1; T[0][0] = h*(f(a)+f(b))/2; // 算出第一个梯形解do< k++; T[k][0] = cal(k,h,c); // h = (b-a)/c ; c是分区间的段数,h 是步长m = 1; while(m //while h /= 2; c *=2; >while(fabs(T[k][k] - T[k-1][k-1]) > e); //没达到设定精度则继续向下算,否则出// cout cin>>n; return 0; > double cal(int k, double h, int c)< //复化梯形公式的递推关系double t = 0;

Richardson外推加速法.doc

2012-2013(1)专业课程实践论文 Richardson外推加速法 张译鹤 0818180120 R数学08-1班 黄 曼 0818180219 R数学08-2班 算法理论 外推法用以低阶公式产生高精度收敛效果进而改善序列收敛效率,它是在20世纪前期由英国数学家,物理学家,气象学家Lewis Fry 提出的。在数值分析领域,外推法有很多实际应用,如隆贝格积分方法,是在梯形公式的基础上应用外推法导出的;还有用于求解常微分方程的Bulirsch–Stoer算。 李查逊外推加速法基于如下原理 定理 设 ,则成立 式中系数 与无关 这里的与将要出现的等均为与无关的系数 将以上两个式子做线性组合: 则: 若令 则可以从余项展开式中消去误差的主要部分项,从而得到 这样构造出的 期权定价问题的有限元Richardson外推法 ,其实就是柯特斯公式序列,它与积分值I的逼近阶为六阶如此继续下去,每加速一次, 如此继续下去,每加速一次,误差的量级便提高2阶按公式 经过次加速后,余项便取下列形式: 这就是外推加速法。 二、算法框图 三、算法程序 #include 期权定价问题的有限元Richardson外推法 #include #include using namespace std; double f(期权定价问题的有限元Richardson外推法 double x); double cal(int k, double h, int c); double a,b,T[100][100]; // 存放数据,为一个下三角矩阵int main() < a = 0; b = 1; //积分的上、下限double e , n, h = b-a; // e 为所设的精度,可以用输入来指定cout>e; int i, m, k=0,c=1; T[0][0] = h*(f(a)+f(b))/2; // 算出第一个梯形解do< k++; T[k][0] = cal(k,h,c); // h = (b-a)/c ; c是分区间的段数,h 是步长m = 1; while(m //while h /= 2; c *=2; >while(fabs(T[k][k] - T[k-1][k-1]) > e); //没达到设定精度则继续向下算,否则出// cout cin>>n; return 0; > double cal(int k, double h, int c) < //复化梯形公式的递推关系double t = 0; int i; for(i = 0; i < c; i++) t += f(a+(i+0.5)*h); return T[k-1][0]/2 + h*t/2; >double f(double x) < // 被积函数,此处不同题函数不同 return x*sqrt(x); >四、算法实现 例1.用外推法计算控制精度e为0.001时的积分值 解:运行程序 显示出 请输入控制精度:输入e的值为0.001,回车。 显示结果:0 0.500000 1 0.426777 0.402369 期权定价问题的有限元Richardson外推法 2 0.407018 0.400432 0.400303 期权定价问题的有限元Richardson外推法 3 0.401812 0.400077 0.400054 0.400050 4 0.400463 0.400014 0.400009 0.400009 例2.用外推法计算控制精度e为0.0000001时的积分值 解:运行程序 显示出 请输入控制精度:输入e的值为0.0000001,回车。 显示结果:0 0.500000 1 0.426777 0.402369 2 0.

数值计算 - Richardson外推法求一阶导数(C++实现)

c橘子 于 2019-06-01 21:09:34 发布 期权定价问题的有限元Richardson外推法 3190 收藏 2

求导只需将 f 中的函数替换即可。

它将理查森外推法应用于泰勒级数,以使用“n”次迭代来逼近任何函数 f(x) 在 x_0 处的导数。 这是一个 O(n^2) 算法,可以在“数值数学和计算,Ward Cheney 和 David Kincaid,第 6 期权定价问题的有限元Richardson外推法 版”第 4.3 节中找到。

一阶和二阶复阶导数近似。 cdiff(F,X) 返回在 X 处计算的函数 F 的一阶导数近似值。 F 是具有单个输入参数的函数句柄,它返回与浮点数组 X 具有相同维度的输出。 灵感来源: http : //blogs.mathworks.com/cleve/2013/10/14/complex-step-differentiation/

03-25 782

数值代数–理查森外推法实验四一、实验名称理查森外推算法二、实验目的与要:实验目的:掌握理查森外推算法。实验要:1. 给出理查森外推算法思路,2. 用C语言实现算法,运行环境为Microsoft Visual C++。三、算法思路:1. 假设函数泰勒展开式可表示为 和,将两式相减,消去偶数项,则,整理得到下式,记L表示,表示微分形式,则有 (1)用h/2代替h,有 (2),由(1)(2)两式子.

03-24 1223

01-01 377

11-03 8096

一个通用的理查森外推例程,可以执行多个外推步骤,可以容纳任意领先的误差项,可以处理任何统一的细化方案例如 h/2、h/3、h/5 等,并且可以报告完整的外推表,包括与已知的良好解决方案进行比较。 能够处理矢量输入。 与 MATLAB 和 Octave 兼容。 包括 Octave 风格的单元测试。 一个人为的用法示例: 假设您的近似序列是 [1, 2, 3, 4],其中每个连续值都将网格细化了 3 倍。假设近似中的三个主要误差项是 O(h^2)、O(h^4 ) 和 O(h^5) 并且您知道确切值是 4.14。 然后你会调用 Octave:78> [result, normtable] = richardson([1,2,3,期权定价问题的有限元Richardson外推法 4],[2,4,5], 3, 4.14) 期权定价问题的有限元Richardson外推法 结果 = 4.14163223140496 常态 = 3.13999999999999968 NaN NaN NaN

07-22 3201

#include #include using namespace std; int main(void)< double epsilon = 0.0001; // 10^-4 // y = x^2+x+3; x=2 d=5 double x1 = 期权定价问题的有限元Richardson外推法 2+epsilon, x2 = 2-epsilon; double f1 = 期权定价问题的有限元Richardson外推法 pow(x1,2)+x1+3, f2 = pow(x2,2)+x2+3; double derivative

03-24 791

数值代数理查森外推法》由会员分享,可在线阅读,更多相关《数值代数理查森外推法(6页珍藏版)》请在人人文库网上搜索。1、实验四一、实验名称理查森外推算法二、实验目的与要:实验目的:掌握理查森外推算法。实验要:1. 给出理查森外推算法思路,2. 用C语言实现算法,运行环境为Microsoft Visual C+。三、算法思路:1. 假设函数泰勒展开式可表示为 和,将两式相减,消去偶数项,则,整理.

函数 RICHARDSONDER 在给定中心差分公式的初始步长 H_IN 和外推的阶数 N 的情况下,实现理查森外推算法,用于逼近 X0 点单值实函数 F 的一阶和二阶导数。 输出是一阶和二阶导数 F_PRIME_X0 和 F_SECOND_X0 的两个外推表。 每个表的第一列是使用的不同步长值的数组,而其他列包含导数外推; 从第 3 列开始的每一列的固定 h 的错误顺序比其左侧的低表中的 0 个条目是未计算的值。 因此,最佳近似值是每个表的最后一个元素最小误差和最小步长。 有关该函数的用法示例,请参阅 RICHARDSONSCRIPT。

Richardson外推法计算给定点处的一阶和二阶导数

崔小菜 于 2013-08-13 11:期权定价问题的有限元Richardson外推法 期权定价问题的有限元Richardson外推法 03:17 发布 3225 收藏 2

//计算给定点处的一阶和二阶导数
#include
#include

using namespace std;

class deriv
<
private:
int k;
double d1, d1_1, d1_2, d2, d2_1, d2_2, d1_new, d2_new;
double f_x, f_xhm, f_x2hm, 期权定价问题的有限元Richardson外推法 f_xhp, f_x2hp, h, x;

public:
double func(期权定价问题的有限元Richardson外推法 期权定价问题的有限元Richardson外推法 double y)
<
double f = 1 / sqrt(y) - 1.77 * log(1e4 * sqrt(y)) + 0.5;
return f;
>
void diffn();
>;

void main()
<
deriv differentiate;
differentiate.diffn();
>

void 期权定价问题的有限元Richardson外推法 deriv::diffn()
<
cout cin >> x;
cout cin >> h;
for (k = 0; k <
f_x = func(x);
f_xhp = func(x + h);
f_x2hp = func(期权定价问题的有限元Richardson外推法 x + 2 * h);
f_xhm = func(x - h);
f_x2hm = func(x - 2 * h);
d1 = (-f_x2hp + 8 * f_xhp - 8 期权定价问题的有限元Richardson外推法 * f_xhm + f_x2hm) / (12 * h);
d2 = (-f_x2hp + 16 * f_xhp - 30 * f_x + 16 * f_xhm - f_x2hm) / (12 * h * h);
if (k == 0)
<
d1_1 = d1;
d2_1 = d2;
>
if (k == 1)
<
d1_2 = d1;
d2_2 = d2;
>
h /= 2.0;
>
d1_new = (16 * d1_2 - d1_1) / 15;
d2_new = (16 期权定价问题的有限元Richardson外推法 * d2_2 - d2_1) / 15;
cout cout >