理查森外推法 matlab,数值代数–理查森外推法.doc

数值代数–理查森外推法

实验四

一、实验名称

理查森外推算法

二、实验目的与要求:

实验目的:掌握理查森外推算法。

实验要求:1. 给出理查森外推算法思路,

2. 用C语言实现算法,运行环境为Microsoft Visual C++。

三、算法思路:

1. 假设函数泰勒展开式可表示为 和,将两式相减,消去偶数项,则,整理得到下式,记L表示,表示微分形式,则有 (1)用h/2代替h,有 (2),由(1)(2)两式子有推广这种方法,就是理查森外推法了。

2. 理查森外推法公式 , , 用下列公式计算,k=1,2,…,M,n=k,k+1,…,M。 则有,当n和k足够大时D(n,k)可充分接近。

3. 上机算法 input h , M

for n=0 to M do

D(n , 0)

end do

for k=1 to M do

for n=k to M do end do

end do

output D(n , k)

四、实验题目:

五、问题的解:

编写程序(程序见后面附录),输出结果如下:

分析得到的结果,发现在对角线附近D(n , k)的值越来越稳定,通过上面算法阐述,我们知道D(n , k)应该是越来越接近我们想求到的导数的,与实验结果一致。

六、附录:

实验编程,运行环境为Microsoft Visual C++

#include

#include

#include

double f1(double x) //定义函数f1(x)//

{double y;

y=(log(3.0+x)-log(3.0-x))/(2.0*x);

return(y);

}

double f2(double x) //定义函数f2(x)//

{double y;

y=(tan(asin(0.8)+x)-tan(asin(0.8)-x))/(2.0*x);

return(y);

}

double f3(double x) //定义函数f3(x)//

{double y;

y=(sin(x*x+x/3.0)-sin(x*x-x/3.0))/(2.0*x);

return(y);

}

void main()

{

double D1[4][4],D2[5][5],D3[6][6];

int i,j;

for(i=0;i<=3;i++) /*第一个问题的理查森算法*/

D1[i][0]=f1(1.0/pow(2,i));

for(j=1;j<=3;j++)

for(i=j;i<=3;i++)

D1[i][j]=D1[i][j-1]+(D1[i][j-1]-D1[i-1][j-1])/(pow(4,j)-1);

printf("第一道题结果:\n");

for(i=0;i<=3;i++)

{for(j=0;j<=i;j++)

printf("%0.12f ",D1[i][j]);

printf("\n");

}

for(i=0;i<=4;i++) /*第二个问题的理查森算法*/

D2[i][0]=f2(1.0/pow(2,i));

for(j=1;j<=4;j++)

for(i=j;i<=4;i++)

D2[i][j]=D2[i][j-1]+(D2[i][j-1]-D2[i-1][j-1])/(pow(4,j)-1);

printf("第二道题结果:\n");

for(i=0;i<=4;i++)

{for(j=0;j<=i;j++)

printf("%0.12f ",D2[i][j]);

printf("\n");

}

for(i=0;i<=5;i++) /*第三个问题的理查森算法*/

D3[i][0]=f3(1.0/pow(2,i));

for(j=1;j<=5;j++)

for(i=j;i<=5;i++)

D3[i][j]=D3[i][j-1]+(D3[i][j-1]-D3[i-1][j-1])/(pow(4,j)-1);

printf("第三道题结果:\n");

for(i=0;i<=5;i++)

{for(j=0;j<=i;j++)

printf("%0.12f ",D3[i][j]);

printf("\n");

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/564196.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 自动化出报表,python实现报表自动化详解

本篇文章将介绍&#xff1a;xlwt 常用功能xlrd 常用功能xlutils 常用功能xlwt写Excel时公式的应用xlwt写入特定目录(路径设置)xlwt Python语言中&#xff0c;写入Excel文件的扩展工具。可以实现指定表单、指定单元格的写入。支持excel03版到excel2013版。使用时请确保已经安装p…

C++ 右值引用

能出现在赋值号左边的表达式称为“左值”&#xff0c;不能出现在赋值号左边的表达式称为“右值”。一般来说&#xff0c;左值是可以取地址的&#xff0c;右值则不可以。 非 const 的变量都是左值。函数调用的返回值若不是引用&#xff0c;则该函数调用就是右值。之前我们了解的…

Sublime Text 3 详细安装教程

Sublime Text 3 详细安装 下载 官网下载地址https://www.sublimetext.com/3 安装 1 . 下载完成之后安装程序自动运行&#xff0c;默认安装路径&#xff0c;不要修改&#xff08;如果修改安装路径后期需要配置环境变量&#xff09; 注意&#xff1a;最好使用默认填入的安装…

matlab rgb2hsv v=1,为什么我在matlab中使用rgb2hsv时一直显示这个函数不存在呢?那源函数在哪下载?...

匿名用户1级2014-04-15 回答specfun工具箱没装可能给你个rgb2hsv源代码 复制下来同名保存就能用了function [h,s,v] rgb2hsv(r,g,b)switch nargincase 1,if isa(r, uint8),r double(r) / 255;elseif isa(r, uint16)r double(r) / 65535;endcase 3,if isa(r, uint8),r doubl…

php游戏怎么设置fms,[FMS]FMS使用需要注意的几种问题总结说明

[FMS]FMS使用需要注意的几种问题总结说明&#xff1a;* 中文编码&#xff1a;有些时候我们用flash去读取外部的php&#xff0c;asp.....文件里的中文显示在flash里会出现乱码的情况&#xff0c;为了解决在flash里显示中文很多教程里通常都直接加了一句System.useCodepagetrue问…

STL算法

STL 提供能在各种容器中通用的算法&#xff0c;如插入、删除、查找、排序等。算法就是函数模板。算法通过迭代器来操纵容器中的元素。 许多算法操作的是容器上的一个区间&#xff08;也可以是整个容器&#xff09;&#xff0c;因此需要两个参数&#xff0c;一个是区间起点元素…

oracle导出pck文件,Oracle sqlloader自动化导入迁移工具—可批量生成千万控制文件与批处理文件|一键执行(推荐)...

应用介绍一、设计概述与背景&#xff1a;在目前SQL Server数据库和Oracle数据库之间进行数据迁移工作&#xff0c;可以使用多种方案&#xff0c;其中采用文本文件作为数据交换的中间介质&#xff0c;具有如下特点&#xff1a;1、各个主流数据库都支持文本文件的导入、导出功能。…

STL中“大”、“小”和“相等”的概念

STL 中关联容器内部的元素是排序的。STL 中的许多算法也涉及排序、查找。这些容器和算法都需要对元素进行比较&#xff0c;有的比较是否相等&#xff0c;有的比较元素大小。 在 STL 中&#xff0c;默认情况下&#xff0c;比较大小是通过<运算符进行的&#xff0c;和>运算…

oracle 分割字符成数组,oracle依据分隔符将字符串分割成数组函数

oracle根据分隔符将字符串分割成数组函数--创建表类型create or replace type mytype as table of number;--如果定义成varchar--CREATE OR REPLACE type mytype as table of varchar2(4000);-- 将字符串分割成数组function my_split(piv_str in varchar2, piv_delimiter in va…

C++ vector,STL vector

vector 是顺序容器的一种。vector 是可变长的动态数组&#xff0c;支持随机访问迭代器&#xff0c;所有 STL 算法都能对 vector 进行操作。要使用 vector&#xff0c;需要包含头文件 vector。 在 vector 容器中&#xff0c;根据下标随机访问某个元素的时间是常数&#xff0c;在…

sql查询oracle数据,sql-server – 从SQL Server查询Oracle数据库

我有一个Oracle 11g XE数据库,我想将其转移到SQL Server Express 2005中.起初我以为我只是在Oracle中生成表作为SQL,操纵数据格式,并在SQL Server中运行查询.这适用于小型表,但我有几个表有几十万行,有些表有数百万行,所以这个解决方案不起作用.然后我创建了一个包含以下内容的…

C++ list,STL list

list 是顺序容器的一种。list 是一个双向链表。使用 list 需要包含头文件 list。双向链表的每个元素中都有一个指针指向后一个元素&#xff0c;也有一个指针指向前一个元素。 在 list 容器中&#xff0c;在已经定位到要增删元素的位置的情况下&#xff0c;增删元素能在常数时间…

Oracle010316,安装oracle后登录时出现 ERROR: ORA-01031 insufficient privileges

运行环境&#xff1a;在自己笔记本电脑上安装测试操作系统版本&#xff1a;64位win8.1oracle版本&#xff1a;64位 oracle 11g安装oracle 成功后//以管理员身份登录oracle在cmd里输入命令 sqlplus / as sysdba然后 报错 ERROR: ORA-01031 insufficient privileges解决办法&…

C++ 双向队列

deque 也是顺序容器的一种&#xff0c;同时也是一个可变长数组。要使用 deque&#xff0c;需要包含头文件 deque。所有适用于 vector 的操作都适用于 deque。 deque 和 vector 有很多类似的地方。在 deque 中&#xff0c;随机存取任何元素都能在常数时间内完成。它相比于 vect…

C++ 函数对象

如果一个类将()运算符重载为成员函数&#xff0c;这个类就称为函数对象类&#xff0c;这个类的对象就是函数对象。函数对象是一个对象&#xff0c;但是使用的形式看起来像函数调用&#xff0c;实际上也执行了函数调用&#xff0c;因而得名。 函数对象的例子。 #include <i…

sencha app watch php,我的第一个基于SenchaTouch的WebApp

经过进一周的各种折腾&#xff0c;各种想放弃&#xff0c;各种纠结&#xff0c;最终还是顺利的完成了SenchaTouch的开发&#xff0c;回想起来感觉“甜甜的”&#xff0c;也充分体会到Sencha MVC开发模式的好处&#xff0c;以及SenchaTouch.js和Extjs的强大和牛逼&#xff0c;不…

C++关联容器,STL关联容器

关联容器内部的元素都是排好序的&#xff0c;有以下四种。 set&#xff1a;排好序的集合&#xff0c;不允许有相同元素。multiset&#xff1a;排好序的集合&#xff0c;允许有相同元素。map&#xff1a;每个元素都分为关键字和值两部分&#xff0c;容器中的元素是按关键字排序的…

linux练习 串口跟进程6,linux下串口测试程序

linux下串口测试程序通过简单的参数配置&#xff0c;执行文件串口号波特率#include stdio.h#include stdlib.h#include unistd.h#include sys/types.h#include sys/stat.h#include fcntl.h#include errno.h#include sys/time.h#include time.h#include string.h#include sys/io…

C++ pair类模板

在学习关联容器之前&#xff0c;首先要了解 STL 中的 pair 类模板&#xff0c;因为关联容器的一些成员函数的返回值是 pair 对象&#xff0c;而且 map 和 multimap 容器中的元素都是 pair 对象。pair 的定义如下&#xff1a; template <class_Tl, class_T2> struct pair…

kali linux关闭进程,技术|如何使用 Kali Linux 黑掉 Windows

Kali Linux 派生自 Debian Linux&#xff0c;主要用于渗透测试&#xff0c;拥有超过 300 个的预安装好的渗透测试工具。Metasploit 项目中 Metasploit 框架支持 Kali Linux 平台&#xff0c;Metasploit 是一个用于开发和执行安全利用代码(security exploit)的工具。让我们来使用…