文档库 最新最全的文档下载
当前位置:文档库 › matlab实现复化Newton-Cotes公式求积分的程序应用和代码

matlab实现复化Newton-Cotes公式求积分的程序应用和代码

matlab实现复化Newton-Cotes公式求积分的程序应用和代码
matlab实现复化Newton-Cotes公式求积分的程序应用和代码

执行函数为mymulNewtonCotes.m

1、使用方法:

Step1:在MATLAB 命令窗口输入被积函数212

0t t e dt ?。 输入应为:ft=@(t)t.*exp(t^2/2)。

Step2:执行函数。输入形式为mymulNewtonCotes(ft,a,b,m,n);

其中ft —被积函数,此体重ft=@(t)t.*exp(t^2/2),已经在第一步赋值;

a —积分下限,本题中为0;

b —积分上限,本题中为1;

m —将区间[a,b]等分的子区间数量,本题可选为10;

n —采用的Newton-Cotes 公式的阶数,必须满足n<8,否则积分没法保

证稳定性。

当n=1时,即为复化梯形公式;n=2时,即为复化复化辛普森公式。

所以,分别输入mymulNewtonCotes(ft,0,1,10,1)和

mymulNewtonCotes(ft,0,1,10,2)就可以得到两种方法的积分计算结果。

2、计算结果

而根据积分运算,可得:

221112

110222

220000() 1.648710.64872t t x x t t e dt e d e dx e e e ====-=-=??? 说明复化梯形和复化辛普森公式计算出的结果基本一致,与实际结果相符。

3、程序代码

function yy = mymulNewtonCotes(ft,a,b,m,n)

% 复化Newton-Cotes数值积分公式,即在每个子区间上使用Newton-Cotes公式,然后求和, % 参考的输入形式为mymulNewtonCotes(ft,0,1,10,2)

% 参数说明:

% ft——被积函数,此题中ft=@(t)t.*exp(t^2/2)

% a——积分下限

% b——积分上限

% m——将区间[a,b]等分的子区间数量

% n——采用的Newton-Cotes公式的阶数,必须满足n<8,否则积分没法保证稳定性

% (1)n=1时为复化梯形公式

% (2)n=2时为复化辛普森公式

xx = linspace(a,b,m+1);

for l = 1:m

s(l) = myNewtonCotes(ft,xx(l),xx(l+1),n);

end

yy = sum(s);

function [y,Ck,Ak] = myNewtonCotes(ft,a,b,n)

% 牛顿-科特斯数值积分公式

% Ck——科特斯系数

% Ak——求积系数

% y——牛顿-科特斯数值积分结果

xk = linspace(a,b,n+1);

for j = 1:n+1

ff(j) = ft(xk(j));

end

% 计算科特斯系数

for i=1:n+1

k=i-1;

Ck(i)=(-1)^(n-k)/factorial(k)/factorial(n-k)/n*quadl(@(t)intfun(t,n,k),0,n); end

% 计算求积系数

Ak=(b-a)*Ck;

% 求和算积分

y=Ak*ff';

function f=intfun(t,n,k)

% 科特斯系数中的积分表达式

f=1;

for i=[0:k-1,k+1:n]

f=f.*(t-i);

end

复化梯形公式及复化辛普森公式的精度比较

实验四、复化梯形公式和复化Simpson公式的精度比较 (2学时) 一、实验目的与要求 1、熟悉复化Simpson公式和复化梯形公式的构造原理; 2、熟悉并掌握二者的余项表达式; 3、分别求出准确值,复化梯形的近似值,复化Simpson的近似值,并比较后两 者的精度; 4、从余项表达式,即误差曲线,来观察二者的精度,看哪个更接近于准确值。 二、实验内容: 对于函数 sin () x f x x =,试利用下表计算积分1 sin x I dx x =?。 表格如下: 注:分别利用复化梯形公式和复化Simpson公式计算,比较哪个精度更好。其中:积分的准确值0.9460831 I=。 三、实验步骤

1、熟悉理论知识,并编写相应的程序; 2、上机操作,从误差图形上观察误差,并与准确值相比较,看哪个精度更好; 3、得出结论,并整理实验报告。 四、实验注意事项 1、复化梯形公式,程序主体部分: for n=2:10 T(n)=0.5*T(n-1) for i=1:2^(n-2) T(n)=T(n)+(sin((2*i-1)/2^(n-1))/((2*i-1)/2^(n-1)))/2^(n-1); end end 2、复化Simpson公式,程序主体部分: for i=1:10 n=2.^i x=0:1/n:1 f=sin(x)./x f(1)=1 s=0 for j=1:n/2

s=s+f(2*j) end t=0 for j=1:(n/2-1) t=t+f(2*j-1) end S(i)=1/3/n*(f(1)+4*s+2*t+f(n+1)) end 五.实验内容 复化梯形公式和复化辛普森公式的引入 复化梯形公式: 1 10[(()]2 n n k k k h T f x f x -+==+∑; 复化辛普森公式: 1 1102 [(4()()]6n n k k k k h S f x f x f x -++ ==++∑; 根据题意和复化梯形公式、复化辛普森公式的原理编辑程序求解代码如下: Matlab 代码 clc s=quad('sin(x)./x',0,1) p1=zeros(10,1);

利用复化梯形公式、复化simpson 公式计算积分

实验 目 的 或 要 求1、利用复化梯形公式、复化simpson 公式计算积分 2、比较计算误差与实际误差 实 验 原 理 ( 算 法 流 程 图 或 者 含 注 释 的 源 代 码 ) 取n=2,3,…,10分别利用复化梯形公式、复化simpson 公式计算积分1 20I x dx =?,并与真值进行比较,并画出计算误差与实际误差之间的曲线。 利用复化梯形公式的程序代码如下: function f=fx(x) f=x.^2; %首先建立被积函数,以便于计算真实值。 a=0; %积分下线 b=1; %积分上线 T=[]; %用来装不同n 值所计算出的结果 for n=2:10; h=(b-a)/n; %步长 x=zeros(1,n+1); %给节点定初值 for i=1:n+1 x(i)=a+(i-1)*h; %给节点赋值 end y=x.^2; %给相应节点处的函数值赋值 t=0; for i=1:n t=t+h/2*(y(i)+y(i+1)); %利用复化梯形公式求值 end T=[T,t]; %把不同n 值所计算出的结果装入 T 中 end R=ones(1,9)*(-(b-a)/12*h.^ 2*2); %积分余项(计算误差) true=quad(@fx,0,1); %积分的真实值 A=T-true; %计算的值与真实值之差(实际误差) x=linspace(0,1,9); plot(x,A,'r',x,R,'*') %将计算误差与实际误差用图像画出来 注:由于被积函数是x.^2,它的二阶倒数为2,所以积分余项为:(-(b-a)/12*h.^ 2*2)

实 验 原 理 ( 算 法 流 程 图 或 者 含 注 释 的 源 代 码)利用复化simpson 公式的程序代码如下: 同样首先建立被积函数的函数文件: function f=fx1(x) f=x.^4; a=0; %积分下线 b=1; %积分上线 T=[]; %用来装不同n值所计算出的结果 for n=2:10 h=(b-a)/(2*n); %步长 x=zeros(1,2*n+1); %给节点定初值 for i=1:2*n+1 x(i)=a+(i-1)*h; %给节点赋值 end y=x.^4; %给相应节点处的函数值赋值 t=0; for i=1:n t=t+h/3*(y(2*i-1)+4*y(2*i)+y(2*i+1)); %利用复化simpson公式求值end T=[T,t] ; %把不同n值所计算出的结果装入T中 end R=ones(1,9)*(-(b-a)/180*((b-a)/2).^4*24) ; %积分余项(计算误差) true=quad(@fx1,0,1); %积分的真实值 A=T-true; %计算的值与真实值之差(实际误差) x=linspace(0,1,9); plot(x,A,'r',x,R,'*')

matlab实现复化梯形公式,复化simpson公式以及romberg积分

(一) 实验目的 熟悉并掌握数值积分的方法,重要训练复化梯形公式,复化simpson 公式以及romberg 积分。 (二) 问题描述 问题三数值积分椭圆周长的计算。考虑椭圆22221x y a b +=,为计算其周长,只要计算其第一象限的长度即可. 用参数方程可以表示为cos (0/2)sin x a t t y b t π=?≤≤?=? , 计算公式为/0π? 为计算方便,我们可以令1a =,即计算下面的积分 / 0π?/0π=? (/0π?/0a π=?可以归结为上面的形式) 采用复化梯形公式,复化Simpson 公式以及Romberg 积分的方法计算积分 / 0()I b π=? 给出通用程序,该通用程序可以计算任何一个函数在任意一个区间在给定的精度下的数值积分。程序输出为计算出的数值积分值以及计算函数值的次数。 (三) 算法介绍 首先利用给出的各迭代公式,设计程序。在matlab 对话框中输入要计算的函数,给出区间和精度。

复化梯形的迭代公式为: ; 复化simpson迭代公式为: ; Romberg迭代公式为: 。 (四)程序 对于复化梯形公式和复化simpson公式,我们放在中。 (%标记后的程序可用来把b看为变量时的算法实现) %复化梯形公式 function y=jifenn(f,n,a,b) (说明:f表示任一函数,n精度,a,b为区间)fi=f(a)+f(b); h=(b-a)/n; d=1; %function f=jifen(n,a,b,c) %syms t %y=sqrt(1+(c^2-1)*cos(t)^2); %ya=subs(y,t,a); %yb=subs(y,t,b); %fi=ya+yb; for i=1:n-1 x=a+i*h; fi=fi+2*f(x); d=d+1; %yx=subs(y,t,x); %fi=fi+2*yx; end f4=h/2*fi,d %复化simposon公式 f1=0; f2=0; dd=1;

辛普森求积公式

摘要 在工程实验及研究中,实际工作中,变量间未必都有线性关系,如服药后血药浓度与时间的关系;疾病疗效与疗程长短的关系;毒物剂量与致死率的关系等常呈曲线关系。曲线拟合是指选择适当的曲线类型来拟合观测数据,并用拟合的曲线方程分析两变量间的关系.可以说,曲线拟合模型与我们的生活生产密切相关. 本课题着重介绍曲线拟合模型及其应用,其中包括它的基本思想、模型的建立、以及具体应用.为了更好的了解曲线拟合模型,可以将它分为线性与非线性模型,在模型建立的基础上我们可以用最小二乘法来解决一些我们日常所应用的问题. 关键词曲线拟合;线性与非线性模型;最小二乘发

目录 引言 (1) 第一章曲线拟合 (2) §1.1 基本思想及基本概念 (2) §1.1.1 方法思想 (2) §1.1.2几个基本概念 (2) §1.2辛普森算法基本定义及其应用 (4) §1.2.1辛普森求积公式的定义 (4) §1.2.2辛普森求积公式的几何意义 (5) §1.2.3辛普森求积公式的代数精度及其余项 (5) §1.2.4辛普森公式的应用 (6) 第二章辛普森求积公式的拓展及其应用 (7) §2.1 复化辛普森求积公式 (7) §2.1.1问题的提出 (7) §2.1.2复化辛普森公式及其分析 (7) §2.1.3复化辛普森公式计算流程图 (8) §2.1.4复化辛普森公式的应用 (9) §2.2 变步长辛普森求积公式 (10) §2.2.1变步长辛普森求积公式的导出过程 (10) §2.2.2变步长辛普森求积公式的加速过程 (12) §2.2.3变步长辛普森求积公式的算法流程图 (13) §2.2.4变步长辛普森公式算法程序代码 (14) §2.2.5变步长辛普森求积公式的应用 (14) §2.2.6小结 (14) §2.2.7数值求积公式在实际工程中的应用 (14) 参考文献 (16) 附录A (17)

关于辛普森(simpson)公式在线路坐标计算中的应用

关于复化辛普森(simpson)公式在线路坐标计算中的应用 天津西站项目部刘思传 摘要:本文里利用辛普森公式导证了线路坐标计算的公式,并在卡西欧FX-4800P计算器中编写了中边线坐标计算的源程序。 关键词:复化辛普森公式,线路坐标计算,曲率。 一.引言 随着我国道路建设等级和质量水平的飞速发展,公路、铁路建设的机械化和日产量日益提高,促使施工中在满足设计精度的前提下,尽可能快速、准确地进行测量放样和检查工作,本文线路曲率变化的特点,利用复化辛普森公式导证了线路坐标计算的通用公式,并利用卡西欧FX-4800P计算器编写了计算线路中边线坐标的源程序。 二.复化辛普森公式数学模型 把积分区间分成偶数等分,记,其中是节点总数,是积分子区间的总数。 记,,在每个区间上用辛普森数值积分公式计算,则得到复化辛普森公式,记为。 复化辛普森积分计算公式 而,称

(1) 式(1)即为辛普森复化公式。 三.线路坐标计算 2. 回旋曲线上点位坐标方位角的计算 如图1,设回旋曲线起点A 的曲率为A ρ,其里程为DK A ;回旋曲线终点B 的曲率为B ρ,其里程为DK B ,Ax ’'y 为以A 为坐标原点,以A 点切线为'x 轴的局部坐标系;Axy 为线路坐标系。 由此回旋曲线上各点曲率半径为R i 和该点离曲线起点的距离?i 成反比,故此任意点的曲率为 c l R i i i /1==ρ(=为常数). (2) y ' Y B 图1 由式(2)可知,回旋曲线任意点的曲率按线性变化,由此回旋曲线上里程为DK i 点的曲率为

)(A i A B A B A i DK DK DK DK ---+=ρρρρ (3) 当曲线右偏时,取正;当曲线左偏时取负。在图1中有 ???????=== ?I A DK DK i i i dl dl dl R d ρβρβ1 (4) 将式(3)代入式(4)得 πρρβ180 *)(2A i A i i DK DK -+= (5) 若已知回旋曲线起点A 在线路坐标系下切线坐标方位角αA ,则里程为Dk i 点切线坐标方位角为 i A i βαα+= π180 (6) 将式(5)代入式(6)得 *)(2A i A i A i DK DK -++=ρραα π180 (7) 对于式(7) ,当,时,,则a i =a A ,式(7)变成计算直线段上任意点切线坐标方位角计算公式;当,时,, ,则式(7)代表圆曲线上任意点切线坐标方位角 计算公式。 可见,若已知曲线段起点和终点的曲率及起点的切线坐标方位角,式(7)便能计算任意线型点位切线坐标方位角。 3、回旋曲线点位坐标计算 由图1可得回旋曲线上点位在坐标系下坐标计算公式:

辛普森公式

Simpson算法及其推广形式 摘要:本文研究了辛普森公式的数值积分的计算方法问题,并且更进一步研究了变步长复化的辛普森公式和二重积分的辛普森公式的问题。首先是对 一维辛普森公式和变步长复化辛普森公式以及二维辛普森公式的推导及 其算法,进行误差分析,并且列举了实例。然后,对辛普森公式进行改 进,这里的改进最主要是对辛普森公式的代数精度进行提高,从而使辛 普森公式对积分的计算更加精确。另外,还研究了辛普森公式的推广形 式。最后,在结论的当中列举了一个例子。 关键词:辛普森公式算法改进推广形式二重积分的辛普森公式

Abstract:This paper first studies the calculation methods of the numerical integration in simpson formula, and then study of the long-simpson formula and the double integral simpson formula problem. First, study the algorithm and derived of one-dimensional simpson formula and step-change in simpson formula, as well as two-dimensional simpson formula, and then analysis the error. Finally , list the example. In this , improve the simpson formula. This improved the most important is to incre ase the simpson formula’s accuracy of algebra. Besides, we study the simpson formula’s promotion of forms. At the last, we list a example in the conclusion. Key word:The simpson formula, Algorithm, Improve, Promotion of forms, The simpson formula of the two-dimensional integral.

复化梯形公式和复化Simson公式

数值计算方法上机题目3 一、计算定积分的近似值: 要求: (1)若用复化梯形公式和复化Simpson 公式计算,要求误差限7102 1-?=ε,分别利用他们的余项估计对每种算法做出步长的事前估计; (2)分别利用复化梯形公式和复化Simpson 公式计算定积分; (3)将计算结果与精确解比较,并比较两种算法的计算量。 1.复化梯形公式 程序: 程序1(求f (x )的n 阶导数: syms x f=x*exp(x) %定义函数f (x ) n=input('输入所求导数阶数:') f2=diff(f,x,n) %求f(x)的n 阶导数 结果1 输入n=2

f2 = 2*exp(x) + x*exp(x) 程序2: clc clear syms x%定义自变量x f=inline('x*exp(x)','x') %定义函数f(x)=x*exp(x),换函数时只需换该函数表达式即可 f2=inline('(2*exp(x) + x*exp(x))','x') %定义f(x)的二阶导数,输入程序1里求出的f2即可。 f3='-(2*exp(x) + x*exp(x))'%因fminbnd()函数求的是表达式的最小值,且要求表达式带引号,故取负号,以便求最大值 e=5*10^(-8) %精度要求值 a=1 %积分下限 b=2 %积分上限 x1=fminbnd(f3,1,2) %求负的二阶导数的最小值点,也就是求二阶导数的最大值点对应的x值 for n=2:1000000 %求等分数n

Rn=-(b-a)/12*((b-a)/n)^2*f2(x1) %计算余项 if abs(Rn)

复化梯形公式

201-2013(1)专业课程实践论文 复化梯形公式 余良,0818180125,R数学08-1班

一、算法理论 求?baf ()?x baf 的值是科学技术中经常遇到的计算问题 ,但在很多情况下 ,()x f 的原函数不易求得 ,或非常复杂 ;另外 ,在一些应用中 ,函数 ()x f 是用函数表形式给出而没有解析式 ,这时就采用定积分的数值计算方法 ,以解决定积分的近似计算。数值求积公式的应用不仅在近似计算本身 ,在初等数学中 ,某些数列求前 n 项之和公式的推导颇为繁琐 ,应用复化梯形公式可方便地导出这些公式。复化梯形公式用牛顿——莱不尼茨公式来计算()?x baf 的值的前提是 :()x f 的原函数能够求出。当 ()x f 的原函数不易求出或找不到时 ,希望用一个易于求原函数的函数来近似代替被积函数 ,从而得到定积分的近似计算公式。下文中梯形公式T 就是()?x baf 常用的近似计算公式。 复化梯形公式的主要思想是利用若干小梯形的面积代替原方程的积分,利用微元法,可以求出坐标面上由函数与坐标轴围城的图像的面积的近似值,符合了计算机计算存储的思想。 下面,我们在探讨复化梯形公式的计算规律。 设将求积区间[]b a ,分成n 等份,则一共有1+n 个分点,按梯形公式 ()()[]()()()??????++=+=∑∑-=+-=b f x f a f h x f x f h T n k k k k n k n 1111 0222计算积分值n T ,需要提供1+n 个函数值。 注意,这里n a b h -= 代表步长,分点为kh a x k +=,.,1,0n k ???=

合肥工业大学计算方法总结计划复化梯形公式实验.docx

合肥工业大学计算方法复化梯形公式实验

《计算方法》实验报告 学号姓名班级实验项目名称 一、实验名称 实验二数值积分 实验二数值积分 二、实验目的: (1) 悉复化梯形方法、复化Simpson 熟方法、梯形递推 算法、龙贝格算法; (2) 编程实现复化梯形方法、复化Simpson 能方法、梯 形递推算法、龙贝格算法; (3)理 解并掌握自适应算法和收敛加速算法的基本思 想; (4)分 析实验结果体会各种方法的精确度,建立计算机 求解定积分问题的感性认识 三、实验内容及要求 (1)设计复化梯形公式求积算法,编制并调试相 应的函数子程序 (2)设计复化辛浦生求积算法,编制并调试相应 的函数子程序 ( 3)用龙贝格算法计算0sin x dx 1 x

计算机科学与工程学院 输入:积分区间,误差限 输出:序列 Tn ,Sn,Cn,Rn 及积分结果(参考书本P81 的表 2-5) 取n=2,4,8,16,精确解为 0.9460831 四、实验原理及算法描述 在许多实际问题中,常常需要计算定积分b f (x)dx 的 a 值。根据微积分学基本定理,若被积函数f(x) 在区间[a,b] 上连续,只要能找到f(x) 的一个原函数F(x) ,便可利用牛顿 -莱布尼兹公式 b f (x) F (b) F (a) 求得积分值。 a 但是在实际使用中,往往遇到如下困难,而不能 使用牛顿 -莱布尼兹公式。 (1)找不到用初等函数表示的原函数 (2)虽然找到了原函数,但因表达式过于复杂而不 便计算 (3) f(x) 是由测量或计算得到的表格函数 由于以上种种困难,有必要研究积分的数值计算 问题。 利用插值多项式P 则积分b n ( x ) f ( x ) f ( x)dx 转化为a b P n( x )dx, a

复化梯形公式

2012-2013(1)专业课程实践论文 复化梯形公式 余良,0818180125,R数学08-1班

一、算法理论 求?baf ()?x baf 的值是科学技术中经常遇到的计算问题 ,但在很多情况下 ,()x f 的原函数不易求得 ,或非常复杂 ;另外 ,在一些应用中 ,函数 ()x f 是用函数表形式给出而没有解析式 ,这时就采用定积分的数值计算方法 ,以解决定积分的近似计算。数值求积公式的应用不仅在近似计算本身 ,在初等数学中 ,某些数列求前 n 项之和公式的推导颇为繁琐 ,应用复化梯形公式可方便地导出这些公式。复化梯形公式用牛顿——莱不尼茨公式来计算()?x baf 的值的前提是 :()x f 的原函数能够求出。当 ()x f 的原函数不易求出或找不到时 ,希望用一个易于求原函数的函数来近似代替被积函数 ,从而得到定积分的近似计算公式。下文中梯形公式T 就是()?x baf 常用的近似计算公式。 复化梯形公式的主要思想是利用若干小梯形的面积代替原方程的积分,利用微元法,可以求出坐标面上由函数与坐标轴围城的图像的面积的近似值,符合了计算机计算存储的思想。 下面,我们在探讨复化梯形公式的计算规律。 设将求积区间[]b a ,分成n 等份,则一共有1+n 个分点,按梯形公式 ()()[]()()()??????++=+=∑∑-=+-=b f x f a f h x f x f h T n k k k k n k n 1111 0222计算积分值n T ,需要提供1+n 个函数值。 注意,这里n a b h -= 代表步长,分点为kh a x k +=,.,1,0n k ???=

变步长复化辛普森公式计算积分

2. 编写用变步长复化辛普森公式计算积分()b a f x dx ? 的程序。 用上面编写的程序计算下列积分并分析计算结果 (1)0cos xdx π ? (2)220cos x x dx (3)?10dx x 程序: function S=bianfuhuasimpson(fx,a,b,eps,M) % 变步长复合simpson 求积公式 % 调用方式: S=fuhuasimpson(@fx,a,b,epsilon) % fx -- 求积函数(函数文件) % a, b -- 求积区间 % eps -- 计算精度 % M--最大允许输出划分数 n=1; h=(b-a)/n; T1=h*(feval(fx,a)-feval(fx,b))/2; Hn=h*feval(fx,(a+b)/2); S1=(T1+2*Hn)/3; n=2*n; % 最好与倒数第三行保持一致(变步长) while n<=M T2=(T1+Hn)/2; Hn=0; h=(b-a)/n; for j=1:n x(j)=a+(j-1/2)*h; y(j)=feval(fx,x(j)); Hn=Hn+y(j); end Hn=h*Hn; S2=(T2+2*Hn)/3; fprintf(' n=%2d S2=%-12.9f S2-S1=%-12.9f\n',n,S2,abs(S2-S1)); if abs(S2-S1)

S=S2; % 达到下列条件之一,则运算终止: % (1).abs(S2-S1)M % 输入1:S=bianfuhuasimpson(inline('sqrt(x)*cos(x)'),0,pi,10e-6,2000) % 输入2:S=bianfuhuasimpson(inline('2*x^2*cos(x^2)'),0,sqrt(pi),10e-6,2000) % 输入3:S=bianfuhuasimpson(inline('sqrt(x)'),0,1,10e-6,2000) 输出结果: (1) S=bianfuhuasimpson(inline('sqrt(x)*cos(x)'),0,pi,10e-6,2000) n= 2 S2=-0.016369112 S2-S1=0.944423778 n= 4 S2=-0.450266122 S2-S1=0.433897010 n= 8 S2=-0.669839370 S2-S1=0.219573248 n=16 S2=-0.781318443 S2-S1=0.111479074 n=32 S2=-0.837710689 S2-S1=0.056392245 n=64 S2=-0.866141900 S2-S1=0.028431211 n=128 S2=-0.880440980 S2-S1=0.014299080 n=256 S2=-0.887620063 S2-S1=0.007179083 n=512 S2=-0.891220052 S2-S1=0.003599989 n=1024 S2=-0.893023740 S2-S1=0.001803689 S = -0.8930 (2) S=bianfuhuasimpson(inline('2*x^2*cos(x^2)'),0,sqrt(pi),10e-6,2000) n= 2 S2=1.076354541 S2-S1=2.092222287 n= 4 S2=0.039359358 S2-S1=1.036995183 n= 8 S2=-0.430456535 S2-S1=0.469815894 n=16 S2=-0.662796649 S2-S1=0.232340113 n=32 S2=-0.778823323 S2-S1=0.116026674 n=64 S2=-0.836827971 S2-S1=0.058004648 n=128 S2=-0.865829756 S2-S1=0.029001785 n=256 S2=-0.880330615 S2-S1=0.014500859 n=512 S2=-0.887581042 S2-S1=0.007250427 n=1024 S2=-0.891206256 S2-S1=0.003625214 S =

选用复合梯形公式-复合Simpson公式-计算

数值分析实验 三 班级:10信计2班 学号:59 姓名:王志桃 分数 一·问题提出: 选用复合梯形公式,复合Simpson 公式,计算 (1) I =dx x ?-4 10 2sin 4 ()5343916.1≈I (2) I = dx x x ?1 sin ()9460831.0,1)0(≈=I f (3) I = dx x e x ?+1 024 (4) I = () dx x x ?++1 021 1ln 二·实验要求: 1.编制数值积分算法的程序 2.分别用两种算法计算同一个积分,并比较计算结果 3.分别取不同步长()/ a b h -=n ,试比较计算结果(如n = 10, 20 等) 4.给定精度要求ε,试用变步长算法,确定最佳步长 三·实验流程图: 复化梯形公式: 输入 端点 a , b 正整数 n 直接计算TN=h/2*[f(a)+2∑f(x k )+f(b)] k=1,2…,n-1 输出 定积分近似值TN 复化Simpson 公式 输入 端点 a , b 正整数 n 输出 定积分近似值SN (1) 置h=(b-a)/(2n) (2) F0=f(a)+f(b) , F1=0 , F2=0 (3) 对j=1,2,…,2n-1循环执行步4到步5 (4) 置x=a+jh (5) 如果j 是偶数,则F2=F2+f(x),否则F1=F1+f(x) (6) 置SN=h(F0+4F1+2F2)/3 (7) 输出SN,停机 四·源程序: #include #include using namespace std; #define n 20//此为步长 double f1(double x)

数值积分的辛普森方法

实习七 数值积分的辛普森方法 一、实习目的 1.掌握计算定积分近似值的辛普森方法; 2.理解复化辛普森求积公式。 二、相关知识 抛物线公式(辛普森公式) 将积分区间],[b a 作2n 等分:n i ih a x n a b h i 2,,2,1,0,,2 =+=-=,现在考察由分点22-k x 和k x 2形成的一个小区间],[222k k x x -,(12-k x 为中点),n k ,,2,1 =,在每一个 小区间],[222k k x x -上,作一条抛物线k k k x x y γβα++=2通过三点))(,(2222--k k x f x , ))(,(1212--k k x f x 和))(,(22k k x f x ,这样就产生关于未知系数k α,k β和k γ的线性方程组 ?????=++=++=++------)() ()(222212122122222222k k k k k k k k k k k k k k k k k k x f x x x f x x x f x x γβαγβαγβα (7-1) 显然上述方程组有唯一解(由高等代数知识知)。 现在,以)(x f y =为顶的曲边梯形用以抛物线k k k x x y γβα++=2为顶的曲边梯形来 代替,其面积 dx x x dx x f k k n k x x k b a k k )()(1 2222γβα++≈∑??=-∑=--=n k k k x x 12226]4)(2)2([){(2222222222222222k k k k k k k k k k k k k x x k x x x x x x γβαγβα++++++++----- }222k k k k k x x γβα+++)]()(4)([6212221222k k k n k k k x f x f x f x x ++-=--=-∑ (7-2) 得抛物线公式,记为n S 2,化简后: {})()(4)(2)(4)(2)(4)(6212432102n n n x f x f x f x f x f x f x f n a b S +++++++-=- 在实际求解数值积分时,我们总是采用成倍加密节点的方法,就抛物线公式而言,若n S 2被认为精度不够,则接着计算n S 4,而精度是否达到要求,又以n n S S 24-是否足够小作为判

复化辛普森公式应用

在公路中线坐标计算中,我们通常采用切线支距公式来计算曲线上各点的坐标。但当在不同的曲线上计算时就需用不同的计算公式,这为计算也带来不便。在设有缓和曲线的圆曲线半径较小或是卵形曲线上的坐标计算时,如公式选用不当就会出现较大计算误差,即便是能对切线支距公式进行多项展开,也会增加计算的难度。而用复化辛卜生公式不仅能解决不同曲线线型或直线上的坐标计算问题,而且用复化辛卜生公式计算完全是可逆的(即:可顺前进方向也可逆向计算),尤其在计算第二缓和曲线和卵形曲线时显得尤为方便。 用辛卜生公式计算坐标的精度可由人为或程序自行判断,其计算结果完全能保证坐标计算的精度要求。因此,可以说复化辛卜生公式是一个计算公路中线坐标的万能公式。下面本人就该公式在公路中线坐标计算中的具体应用进行实例解析。 一、复化辛卜生公式 式中: H=(Z i-Z A)/n (公式2)

(公式3) Zi —待求点桩号 Z A—曲线元起点桩号 Z B—曲线元终点桩号 ρA—曲线元起点曲率 ρB—曲线元终点曲率 a i曲线上任意一点处切线方位角的计算方法有以下三种方法: 1.利用公式(3)求得曲率代入公式(2)计算 2.利用曲线元上已知起点和终点曲率用内插法求得曲率代入公式(2)计算 3.利用切线角公式计算 二、算例 例:已知雅(安)攀(枝花)高速公路西昌西宁立交A匝道一卵形曲线(卵形曲线相关参数见图一,其计算略。),相关设计数据见下表。现用辛卜生公式来计算卵形曲线中桩坐标。 图一 已知相关设计数据见下表:

(一)由+271.881推算Zi=+223.715的坐标,n取2等分 用公式(3)、公式(2)计算+247.798处曲线及方位角: ρ+247.798=1÷75+(1÷50-1÷75)(247.798-271.881) ÷(223.715-271.881) =0.01666666666666667 a+247.798=71°24’18.5” +(0.016666667+1÷75)(247.798-271.881)×180÷π÷2 =50°42’26.37” 其它各点依次代入公式计算,结果见下表: 切线方位角图示1 将计算出的数据代入公式(1)求得+223.715中桩坐标如下: X=9880.438+(271.881-223.715)÷2÷6×(cos71°24’18.5”+4(cos61°37’52.22”+cos38°38’0.96”)

复化辛普森公式和高斯求积公式方法计算积分,matlab程序

一、实验目的及题目 实验目的:掌握利用复化辛普森公式和高斯求积公式方法计算积分,熟悉matlab 的操作。 题目:1.利用复化辛普森公式计算积分:1、xdx x ln 10? 2.利用高斯求积公式计算积分:1、xdx x ln 1 0?2、dx 实验步骤: 1.利用复化辛普森公式计算积分: 1.1.建立M文件 function y=f(x) y=sqrt(x)*log(x); 1.2.建立M文件 function T_n=F_H_T(a,b,n) h=(b-a)/n; for k=0:n x(k+1)=a+k*h; if x(k+1)==0 x(k+1)=10^(-10); end end T_1=h/2*(f(x(1))+f(x(n+1))); for i=2:n F(i)=h*f(x(i)); end T_2=sum(F); T_n=T_1+T_2; 1.3.在命令窗口输入 T_n=F_H_T(0,1,20)输出结果: 2.利用高斯求积公式计算积分:

2.1.建立M文件 function s=guassl(a,b,n) h=(b-a)/n; s=0.0; for m=0:(1*n/2-1) s=s+h*(guassf(a+h*((1-1/sqrt(3))+2*m))+guassf(a+h*((1+1/sqrt( 3))+2*m))); end s; I=int('sin(x)',0,1); c=(I-s)/I; d=vpa(c,10); 2.2.1.建立M文件 function y=guassf(x) y=sqrt(x)*log(x); 2.2.2.建立M文件 function y=guassf(x) y=sinx/(1+x*x); 2.3.运行结果 2.3.1.在命令窗口输入s=guassl(0,1,20) 2.3.2.在命令窗口输入s=guassl(0,1,20)

变步长复化辛普森公式计算积分

0 2. 编写用变步长复化辛普森公式计算积分 b f (x)dx 的程序。 a 用上面编写的程序计算下列积分并分析计算结果 (1 ) x cos xdx ( 2 ) 0 2 x 2 cosx 2dx ( 3) 1 xdx 程序: function S=bianfuhuasimpson(fx,a,b,eps,M) % 变步长复合 simpson 求积公式 % 调用方式: S=fuhuasimpson(@fx,a,b,epsilon) % fx -- 求积函数(函数文件) % a, b -- 求积区间 % eps -- 计算精度 % M-- 最大允许输出划分数 n=1; h=(b-a)/n; T1=h*(feval(fx,a)-feval(fx,b))/2; Hn=h*feval(fx,(a+b)/2); S1=(T1+2*Hn)/3; n=2*n; % 最好与倒数第三行保持一致(变步长)

while n<=M T2=(T1+Hn)/2; Hn=0; h=(b-a)/n; for j=1:n x(j)=a+(j-1/2)*h; y(j)=feval(fx,x(j)); Hn=Hn+y(j); end Hn=h*Hn; S2=(T2+2*Hn)/3; fprintf(' n=%2d S2=%-12.9f S2-S1=%-12.9f\n',n,S2,abs(S2-S1)); if abs(S2-S1)

% 达到下列条件之一,则运算终止: % (1).abs(S2-S1)M % 输入1 :S=bianfuhuasimpson(inline('sqrt(x)*cos(x)'),0,pi,10e-6,2000) % 输入2 :S=bianfuhuasimpson(inline('2*x^2*cos(x^2)'),0,sqrt(pi),10e-6,2000) % 输入3 :S=bianfuhuasimpson(inline('sqrt(x)'),0,1,10e-6,2000) 输出结果: (1 ) S=bianfuhuasimpson(inline('sqrt(x)*cos(x)'),0,pi,10e-6,2000) n= 2 S2=-0.016369112 S2-S1=0.944423778 n= 4 S2=-0.450266122 S2-S1=0.433897010 n= 8 S2=-0.669839370 S2-S1=0.219573248 n=16 S2=-0.781318443 S2-S1=0.111479074 n=32 S2=-0.837710689 S2-S1=0.056392245 n=64 S2=-0.866141900 S2-S1=0.028431211 n=128 S2=-0.880440980 S2-S1=0.014299080 n=256 S2=-0.887620063 S2-S1=0.007179083 n=512 S2=-0.891220052 S2-S1=0.003599989 n=1024 S2=-0.893023740 S2-S1=0.001803689

复化Simpson公式以及复化梯形公式

数值分析程序: Simpson公式,梯形,以及复合Simspon,复合梯形公式:clc clear %fuhuaTX syms x; a=input('a='); b=input('b='); n1=input('分割n1='); h=(b-a)/n1; sum=0; fori=1:n1-1 sum=sum+f(a+i*h); end %f0=0; %sum=2*sum+f0+f(b); sum=2*sum+f(a)+f(b); TX=sum*h/2 %代数精度 m=200;n=0; for j=1:m D=int(g(j,x),x,a,b); h1=(b-a)/2; s1=g(j,a)+g(j,b); T=h1*s1; if(T==D) n=n+1; else n=n; end end disp('梯形公式的代数精度为') disp(n) n=0;sum=0; for j=1:m D=int(g(j,x),x,a,b); h1=h/2; fori=1:n-1 sum=sum+g(i,a+i*h); end s1=2*sum+g(j,a)+g(j,b); T=h1*s1; if(T==D) n=n+1;

n=n; end end disp('复合梯形公式的代数精度为') disp(n) %fuhuaSimps syms x; format short n=n1/2; n1=2*n; h=(b-a)/n; sum1=0;sum2=0; fori=1:n-1 sum1=sum1+2*f(a+i*h);%中间偶数点2倍求和end fori=0:n-1 sum2=sum2+4*f((i+(i+1))/n1); %中间奇数点 end %f0=0; %sum=sum1+sum2+f0+f(b); sum=sum1+sum2+f(a)+f(b); Simpson=sum*h/6 %代数精度 m=200;n2=0;N=zeros(1,m); for j=1:m D=int(g(j,x),x,a,b); sum1=0;sum2=0; fori=1:n-1 sum1=sum1+2*g(j,a+i*h);%中间偶数点2倍求和end fori=0:n-1 sum2=sum2+4*g(j,(i+(i+1))/n1); %中间奇数点end sum=sum1+sum2+g(j,a)+g(j,b); T=sum*h/6; M=abs(D-T); N(1,j)=M; end for j=1:m if N(1,j)<0.0001 n2=n2+1; else n2=n2;

数值分析实习作业之变步长辛普森求积公式

实习题五:用变步长复化辛普森求积公式法计算习题五第一题积分,是结果尽可能准确(eps = 0.000001) 主程序: %习题五:用变步长复化辛普森求积公式计算下列积分 clear clc format long disp('习题五:用变步长复化辛普森求积公式计算下列积分') %求解 f = sinx/x [0,pi/2]的积分 f = @f1; a = 0.00001; b = pi/2; eps = 0.000001; s = simpson(f,a,b,eps); disp(' f = sinx/x [0,pi/2] 计算精度eps = 0.000001的积分结果') disp(s) %求解f = ln(1+x)/(x+x^2) [0,1] 的积分 f = @f2; a = 0; b = 1; eps = 0.000001; s = simpson(f,a,b,eps); disp(' f = ln(1+x)/(x+x^2) [0,1] 计算精度eps = 0.000001的积分结果') disp(s) %求解 y = (1/x)*log(1+x) [0,1] 的积分 f = @f3; a = 0.00001; b = 1; eps = 0.000001; s = simpson(f,a,b,eps); disp(' y = (1/x)*log(1+x) [0,1] 计算精度eps = 0.000001的积分结果') disp(s) %求解 y = 1/(1+x) [0,1] 的积分 f = @f4; a = 0; b = 1; eps = 0.000001; s = simpson(f,a,b,eps); disp(' y = 1/(1+x) [0,1] 计算精度eps = 0.000001的积分结果') disp(s) 辛普森函数: function s = simpson(f,a,b,eps) h = (b-a)/2; s0 = feval(f,a) + feval(f,b);

相关文档
相关文档 最新文档