1. 用1阶至4阶Newton-Cotes公式计算积分

程序:

function I = NewtonCotes(f,a,b,type)

%

syms t;

t=findsym(sym(f));

I=0;

switch type

case 1,

I=((b-a)/2)*(subs(sym(f),t,a)+subs(sym(f),t,b));

case 2,

I=((b-a)/6)*(subs(sym(f),t,a)+4*subs(sym(f),t,(a+b)/2)+...

subs(sym(f),t,b));

case 3,

I=((b-a)/8)*(subs(sym(f),t,a)+3*subs(sym(f),t,(2*a+b)/3)+...

3*subs(sym(f),t,(a+2*b)/3)+subs(sym(f),t,b));

case 4,

I=((b-a)/90)*(7*subs(sym(f),t,a)+...

32*subs(sym(f),t,(3*a+b)/4)+...

12*subs(sym(f),t,(a+b)/2)+...

32*subs(sym(f),t,(a+3*b)/4)+7*subs(sym(f),t,b));

case 5,

I=((b-a)/288)*(19*subs(sym(f),t,a)+...

75*subs(sym(f),t,(4*a+b)/5)+...

50*subs(sym(f),t,(3*a+2*b)/5)+...

50*subs(sym(f),t,(2*a+3*b)/5)+...

75*subs(sym(f),t,(a+4*b)/5)+19*subs(sym(f),t,b));

case 6,

I=((b-a)/840)*(41*subs(sym(f),t,a)+...

216*subs(sym(f),t,(5*a+b)/6)+...

27*subs(sym(f),t,(2*a+b)/3)+...

272*subs(sym(f),t,(a+b)/2)+...

27*subs(sym(f),t,(a+2*b)/3)+...

216*subs(sym(f),t,(a+5*b)/6)+...

41*subs(sym(f),t,b));

case 7,

I=((b-a)/17280)*(751*subs(sym(f),t,a)+...

3577*subs(sym(f),t,(6*a+b)/7)+...

1323*subs(sym(f),t,(5*a+2*b)/7)+...

2989*subs(sym(f),t,(4*a+3*b)/7)+...

2989*subs(sym(f),t,(3*a+4*b)/7)+...

1323*subs(sym(f),t,(2*a+5*b)/7)+...

3577*subs(sym(f),t,(a+6*b)/7)+751*subs(sym(f),t,b));

end

syms x

f=exp(-x).*sin(x);

a=0;b=2*pi;

I = NewtonCotes(f,a,b,1)

N=1:

I =

0

N=2:

I =

0

N=3:

I =

(pi*((3*3^(1/2)*exp(-(2*pi)/3))/2 - (3*3^(1/2)*exp(-(4*pi)/3))/2))/4

N=4:

I =

(pi*(32*exp(-pi/2) - 32*exp(-(3*pi)/2)))/45

2. 已知,因此可以通过数值积分计算的近似值。

(1)分别取和,利用复合梯形公式和复合Simpson公式计算的近似值;

程序:

function Y= CombineTraprl(f,a,b,h)

%用复合梯形公式计算积分

syms t;

t= findsym(sym(f));

n=(b-a)/h;

I1= subs(sym(f),t,a);

l=0;

for k=1:n-1

xk=a+h*k;

l=l+2*subs(sym(f),t,xk);

end

Y=(h/2)*(I1+l+subs(sym(f),t,b));

syms x

f=4/(1+x^2);

a=0;b=1;

y= CombineTraprl(f,a,b,0.1);

vpa(y,6)

h=0.1:

ans =

3.13993

H=0.2:

ans =

1.04498

复合辛普森:

function Y= CombineSimpson(f,a,b,h)

%用复合辛普森公式计算积分

syms t;

t= findsym(sym(f));

n=(b-a)/h;

I1= subs(sym(f),t,a);

l=0;

for k=1:n-1

xk=a+h*k;

l=l+2*subs(sym(f),t,xk);

end

l2=0;

for k=1:n-1

xk2=a+h*(k+1)/2;

l2=l2+4*subs(sym(f),t,xk2);

end

Y=(h/6)*(I1+l+l2+subs(sym(f),t,b));

H=0.1:

ans =

3.22605

H=0.2:

ans =

2.93353

(2)把区间[0,1] 等分,利用复合梯形公式和复合Simpson公式计算的近似值,若要求误差不超过,问需要把区间[0,1]划分成多少等份;

function n=trap(f,a,b)

syms t;

t= findsym(sym(f));

I=zeros(1,500);

I(1)=((b-a)/2)*(subs(sym(f),t,a)+subs(sym(f),t,b));

I(2)=((b-a)/4)*(subs(sym(f),t,a)+2*subs(sym(f),t,(b-a)/2)+subs(sym(f),t,b));

k=3;

while((I(k-1)-I(k-2))>1/2*10^(-6))

l=0;

for i=1:k-1

xi=a+(b-a)/k*i;

l=l+2*subs(sym(f),t,xi);

end

I(k)=((b-a)/(2*k))*(subs(sym(f),t,a)+l+subs(sym(f),t,b));

k=k+1;

end

n=k-1;

syms x;

f=4./(1+x.^2);

a=0;b=1;

n=trap(f,a,b)

n =

88

复合辛普森公式:

function n=Simpson(f,a,b)

syms t;

t= findsym(sym(f));

I=zeros(1,500);

I(1)=((b-a)/6)*(subs(sym(f),t,a)+4*subs(sym(f),t,(b-a)/2)+subs(sym(f),t,b));

I(2)=((b-a)/12)*(subs(sym(f),t,a)+4*subs(sym(f),t,(b-a)/4)+4*subs(sym(f),t,3*(b-a)/4)+2*subs(sym(f),t,(b-a)/2)+subs(sym(f),t,b));

k=3;

while((I(k-1)-I(k-2))>1/2*10^(-6))

l=0;

m=4*subs(sum(f),t,(a+((a+b)/(2*k))));

for i=1:k-1

xi=a+(b-a)/k*i;

l=l+2*subs(sym(f),t,xi);

end

for j=1:k-1

xj=a+(b-a)/(k*2)+(b-a)/k*j;

m=m+4*subs(sym(f),t,xj);

end

I(k)=((b-a)/(2*k))*(subs(sym(f),t,a)+l+m+subs(sym(f),t,b));

k=k+1;

end

n=k-1;

n =

5

(3)选择不同的,对两种复合求积公式,试将误差描述为的函数,并比较两种方法的精度。

复合求积公式:

function y=traprls(f,a,b,h)

syms t;

t= findsym(sym(f));

n=(b-a)/h;

l=0;

for k=1:n-1

xk=a+h*k;

l=l+2*subs(sym(f),t,xk);

end

I1=(h/2)*(subs(sym(f),t,a)+l+subs(sym(f),t,b));

h=(b-a)/(n-1);

n=(b-a)/h;

l=0;

for k=1:n-1

xk=a+h*k;

l=l+2*subs(sym(f),t,xk);

end

I2=(h/2)*(subs(sym(f),t,a)+l+subs(sym(f),t,b));

y=I2-I1;

y=abs(y);

y=vpa(y,8);

syms x;

f=4./(1+x.^2);

a=0;b=1;

h=0.01:0.05:0.5;

v=zeros(1,10);

for i=1:10

v(i)=traprls(f,a,b,h(i))

end

v

plot(h,v,'r-')

复合辛普森公式:

function y=Simpsons(f,a,b,h)

syms t;

t= findsym(sym(f));

n=(b-a)/h;

l=0;

m=4*subs(sum(f),t,(a+h/2));

for k=1:n-1

xk=a++h*k;

l=l+2*subs(sym(f),t,xk);

end

for i=1:n-1

xi=a+h/2+h*i;

m=m+4*subs(sym(f),t,xi);

end

I1=(h/6)*(subs(sym(f),t,a)+l+m+subs(sym(f),t,b));

h=(b-a)/(n-1);

n=(b-a)/h;

l=0;

m=4*subs(sum(f),t,(a+h/2));

for k=1:n-1

xk=a++h*k;

l=l+2*subs(sym(f),t,xk);

end

for i=1:n-1

xi=a+h/2+h*i;

m=m+4*subs(sym(f),t,xi);

end

I2=(h/6)*(subs(sym(f),t,a)+l+m+subs(sym(f),t,b));

y=abs(I2-I1);

y=vpa(y,10);

通过图像对比可知,复合辛普森公式精度更高。

(4)是否存在某个值,当小于这个值之后,再继续减小,计算结果不再有改进?为什么?

复合求积公式:

syms x;

f=4./(1+x.^2);

a=0;b=1;

h=0.001:0.004:0.2;

v=zeros(1,10);

for i=1:50

v(i)=traprls(f,a,b,h(i));

end

plot(h,v,'r-')

复合辛普森公式:

通过图像可以发现,当h<0.025后,精度不再有显著改变。

3. 分别用三点和五点Gauss-Legendre公式计算积分

程序:

function I = IntGaussLegen(f,a,b,n)

syms t;

t= findsym(sym(f));

ta = (b-a)/2;

tb = (a+b)/2;

switch n

case 0,

I=2*ta*subs(sym(f),t,tb);

case 1,

I=ta*(subs(sym(f),t,ta*0.5773503+tb)+...

subs(sym(f),t,-ta*0.5773503+tb));

case 2,

I=ta*(0.55555556*subs(sym(f),t,ta*0.7745967+tb)+...

0.55555556*subs(sym(f),t,-ta*0.7745967+tb)+...

0.88888889*subs(sym(f),t,tb));

case 3,

I=ta*(0.3478548*subs(sym(f),t,ta*0.8611363+tb)+...

0.3478548*subs(sym(f),t,-ta*0.8611363+tb)+...

0.6521452*subs(sym(f),t,ta*0.3398810+tb) +...

0.6521452*subs(sym(f),t,-ta*0.3398810+tb));

case 4,

I=ta*(0.2369269*subs(sym(f),t,ta*0.9061793+tb)+...

0.2369269*subs(sym(f),t,-ta*0.9061793+tb)+...

0.4786287*subs(sym(f),t,ta*0.5384693+tb) +...

0.4786287*subs(sym(f),t,-ta*0.5384693+tb)+...

0.5688889*subs(sym(f),t,tb));

case 5,

I=ta*(0.1713245*subs(sym(f),t,ta*0.9324695+tb)+...

0.1713245*subs(sym(f),t,-ta*0.9324695+tb)+...

0.3607616*subs(sym(f),t,ta*0.6612094+tb)+...

0.3607616*subs(sym(f),t,-ta*0.6612094+tb)+...

0.4679139*subs(sym(f),t,ta*0.2386292+tb)+...

0.4679139*subs(sym(f),t,-ta*0.2386292+tb));

end

I=simplify(I);

I=vpa(I,6);

三点:

syms x

f=x.*exp(x)./((1+x)^2);

a=0;b=1;

a=IntGaussLegen(f,a,b,2)

a =

0.359187

五点:

a =

0.359141

复合梯形公式、复合辛普森公式 matlab的更多相关文章

  1. C语言复合梯形公式实现定积分

    假设被积函数为   f x ,积分区间为   , a b ,把区间   , a b 等分成 n 个小区间, 各个区间的长度为 h ,即   / h b a n   ,称之为“步长” ...

  2. 复合梯形公式与Simpson公式的数值积分

    #include <iostream>#include<math.h>#include<stdio.h>using namespace std; float f(f ...

  3. MATLAB数学实验总结

    L1 MATLAB 基础知识 P6 表1-3 数据显示格式 format rat format long P20 表2-5 常用的矩阵函数 zeros(m,n) %零阵 eye(n) %单位阵 one ...

  4. [Beautifulzzzz的博客目录] 快速索引点这儿O(∩_∩)O~~,红色标记的是不错的(⊙o⊙)哦~

    3D相关开发 [direct-X] 1.direct-X最小框架 [OpenGL] 1.环境搭建及最小系统 [OpenGL] 2.企业版VC6.0自带的Win32-OpenGL工程浅析 51单片机 [ ...

  5. C语言实现定积分求解方法

    求定积分的方法有很多种,下面是我总结的几种比较常用的方法. #include <stdio.h> #include <stdlib.h> #include <math.h ...

  6. deep learning (六)logistic(逻辑斯蒂)回归中L2范数的应用

    zaish上一节讲了线性回归中L2范数的应用,这里继续logistic回归L2范数的应用. 先说一下问题:有一堆二维数据点,这些点的标记有的是1,有的是0.我们的任务就是制作一个分界面区分出来这些点. ...

  7. 数值积分之Simpson公式与梯形公式

    Simpson(辛普森)公式和梯形公式是求数值积分中很重要的两个公式,可以帮助我们使用计算机求解数值积分,而在使用过程中也有多种方式,比如复合公式和变步长公式.这里分别给出其简单实现(C++版): 1 ...

  8. 数值积分:基于牛顿-柯茨公式的定步长和自适应积分方法 [MATLAB]

    #先上代码后补笔记# #可以直接复制粘贴使用的MATLAB函数!# 1. 定步长牛顿-柯茨积分公式 function [ integration ] = CompoInt( func, left, r ...

  9. 卷积相关公式的matlab代码

    取半径=3 用matlab代码实现上式公式: length=3;for Ki = 1:length for Kj = 1:length for Kk = 1:length Ksigma(Ki,Kj,K ...

随机推荐

  1. 【IT笔试面试题整理】有序数组生成最小高度二叉树

    [试题描述]定义一个函数,输入一个有序数组生成最小高度二叉树 We will try to create a binary tree such that for each node, the numb ...

  2. 在FireFox浏览器上,用stopImmediatePropagation阻止冒泡鼠标滚动事件

    楔子 是不是在火狐用stopPropagation不太满意 很久没有笑过又不知为何 既然不快乐又不喜欢这里 不如一路向西用stopImmediatePropagation(其实我对浏览器的兼容性看不顺 ...

  3. 分布式理论(四)—— 一致性协议之 3PC

    前言 我们说为了实现 BASE 理论,需要在可用性和一致性之间找到一个合适的一致性理论,于是,我们在上篇文章中了解了 2PC 理论,也就是两阶段提交,二阶段提交原理简单,实现方便,但是缺点则是同步阻塞 ...

  4. [转]本地 Windows 计算机密码登录 登录 腾讯云 Linux 实例

    本文转自:https://cloud.tencent.com/document/product/213/5436? 登录工具 使用 远程登录软件 ,采用密码登录 Linux 实例(本例中选择使用 Pu ...

  5. 在window环境下挂载mysql数据卷

    1.提前在指定的目录下创建一个my.cnf文件,目录名最好为英文且不带特殊符号和空格,文件内容如下,注意:粘贴时要把每一行末尾的空格去除,否则运行时会报错说utf8编码错误 [mysqld] user ...

  6. API 与 SDK

    API 和SDK是软件行业的两个缩写词. API (Application Programming Interface)=应用程序编程接口 通过一套套的要求,用来管理应用程序之间的沟通.一个API相当 ...

  7. 月经贴:当落魄的.NET基佬遇上不可一世的JAVA派 developer

    事先声明,这篇文章很没有营养,大家当笑话看就好,不要搞骂战污染博客园了谢谢. 背景: .NET(以下简称N)心里想:现在企业级应用.NET用的少,但起码.net的语法特性优美,IDE宇宙最强吧,啧啧. ...

  8. 大数据之 Hadoop学习笔记

    1 hadoop生态系统 hdfs 分布式文件系统 hadoop-hdfs-2.7.2.jar mapreduce 分布式计算框架 hadoop-mapreduce-client-app-2.7.2. ...

  9. 利用JavaMail发送邮件:smtp.163.com

    一.利用JavaMail发送邮件案例: 1.maven项目结构: 2.先在pom.xml里边加入Javamail依赖,系统会根据坐标自动下载mail包(前提是配置好了maven): 3.配置email ...

  10. CSS3多媒体查询

    CSS2多媒体查询: @media规则在css2中有介绍,针对不同媒体类型(包括显示器,便携设备,电视机,等等)可以定制不同的样式规则. CSS3多媒体查询: CSS3多媒体查询继承了CSS2多媒体类 ...