高斯求积公式 matlab
1. 分别用三点和四点Gauss-Chebyshev公式计算积分
并与准确积分值2arctan4比较误差。若用同样的三点和四点Gauss-Legendre公式计算,也给出误差比较结果。
2*atan(4)
ans =
2.6516
Gauss-Chebyshev:
function I = gausscheby(f,a,b,n)
syms t;
t= findsym(sym(f));
ta = (b-a)/2;
tb = (a+b)/2;
switch n
case 3
I=pi/n*ta*(subs(sym(f),t,ta*cos(pi/(2*n))+tb)*sqrt(1-cos(pi/(2*n))^2)+...
subs(sym(f),t,ta*cos(3*pi/(2*n))+tb)*sqrt(1-cos(3*pi/(2*n))^2)+...
subs(sym(f),t,ta*cos(5*pi/(2*n))+tb)*sqrt(1-cos(5*pi/(2*n))^2));
case 4
I=pi/n*ta*(subs(sym(f),t,ta*cos(pi/(2*n))+tb)*sqrt(1-cos(pi/(2*n))^2)+...
subs(sym(f),t,ta*cos(3*pi/(2*n))+tb)*sqrt(1-cos(3*pi/(2*n))^2)+...
subs(sym(f),t,ta*cos(5*pi/(2*n))+tb)*sqrt(1-cos(5*pi/(2*n))^2)+...
subs(sym(f),t,ta*cos(7*pi/(2*n))+tb)*sqrt(1-cos(7*pi/(2*n))^2));
end
I=simplify(I);
I=vpa(I,6);
syms x
f=1/(1+x^2);
a=-4;b=4;
n=3;
y=gausscheby(f,a,b,n)
y =
4.511
N=4:
y =
1.90041
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);
y =
2.04798
N=4:
y =
3.08862
2. 分别用三点和四点Gauss-Lagurre公式计算积分
function I = GaussLagurre(f,n)
syms t;
t= findsym(sym(f));
switch n
case 2
I=0.7110930*subs(sym(f),t,0.4157746)+...
0.2785177*subs(sym(f),t,2.2942804)+...
0.0103893*subs(sym(f),t,6.2899451);
case 3
I=0.6031541*subs(sym(f),t,0.3225477)+...
0.3574187*subs(sym(f),t,1.7457611)+...
0.0388879*subs(sym(f),t,4.5366203) +...
0.0005393*subs(sym(f),t,9.3950710);
end
I=simplify(I);
I=vpa(I,6);
syms x
f=exp(-10*x)*sin(x);
f=f./exp(-x);
a=0;b=inf;
n=2;
y= GaussLagurre(f,n)
y =
0.00680897
N=4:
y =
0.0104892
3. 设,分别取,,用以下三个公式计算,
列表比较三个公式的计算误差,从误差可以得出什么结论?
function [df1,df2,df3,w1,w2,w3]=MidPoint(func,a)
if (nargin == 3 && h == 0.0)
disp('h不能为0');
return;
end
for k=1:6
h=1/10^k;
y0=subs(sym(func), findsym(sym(func)),a);
y1 = subs(sym(func), findsym(sym(func)),a+h);
y2 = subs(sym(func), findsym(sym(func)),a-h);
df1(k) = (y1-y0)/h;
df2(k) = (y1-y2)/(2*h);
y3=subs(sym(func), findsym(sym(func)),a+2*h);
y4=subs(sym(func), findsym(sym(func)),a-2*h);
df3(k)=(y4-8*y2+8*y1-y3)/(12*h);
w1(k)=1/a-df1(k);
w2(k)=1/a-df2(k);
w3(k)=1/a-df3(k);
end
df1=simplify(df1); df1=vpa(df1,6);
df2=simplify(df2); df2=vpa(df2,6);
df3=simplify(df3); df3=vpa(df3,6);
w1=simplify(w1); w1=vpa(w1,6);
w2=simplify(w2); w2=vpa(w2,6);
w3=simplify(w3); w3=vpa(w3,6);
syms x
f=log(x);
a=0.7;
[y1,y2,y3,w1,w2,w3]=MidPoint(f,a)
y1 =
[ 1.33531, 1.41846, 1.42755, 1.42847, 1.42856, 1.42857]
y2 =
[ 1.43841, 1.42867, 1.42857, 1.42857, 1.42857, 1.42857]
y3 =
[ 1.42806, 1.42857, 1.42857, 1.42857, 1.42857, 1.42857]
w1 =
[ 0.0932575, 0.0101079, 0.00101944, 0.000102031, 0.0000102043, 0.00000101738]
w2 =
[ -0.00983893, -0.0000971936, -9.71814e-7, -9.72193e-9, 1.92131e-10, -3.02526e-9]
w3 =
[ 0.000513166, 4.76342e-8, 8.04334e-12, -1.10191e-10, 3.37991e-10, -4.5859e-9]
高斯求积公式 matlab的更多相关文章
- matlab中各种高斯相关函数
matlab中各种高斯相关函数 matlab, 高斯函数, 高斯分布 最常见的是产生服从一维标准正态分布的随机数 n=100; x=randn(1,n) 实现服从任意一维高斯分布的随机数 u=10 ...
- RBF高斯径向基核函数【转】
XVec表示X向量.||XVec||表示向量长度.r表示两点距离.r^2表示r的平方.k(XVec,YVec) = exp(-1/(2*sigma^2)*(r^2))= exp(-gamma*r^2) ...
- python实现直方图均衡化,理想高通滤波与高斯低通滤波
写在前面 HIT大三上学期视听觉信号处理课程中视觉部分的实验二,经过和学长们实验的对比发现每一级实验要求都不一样,因此这里标明了是2019年秋季学期的视觉实验二. 由于时间紧张,代码没有进行任何优化, ...
- Matlab 高斯_拉普拉斯滤波器处理医学图像
前言:本程序是我去年实现论文算法时所做.主要功能为标记切割肝脏区域.时间有点久,很多细节已经模糊加上代码做了很多注释,因此在博客中不再详述. NOTE: 程序分几大段功能模块,仔细阅读,对解决医学图像 ...
- Matlab实现加性高斯白噪声信道(AWGN)下的digital调制格式识别分类
Matlab实现加性高斯白噪声信道(AWGN)下的digital调制格式识别分类 内容大纲 加性高斯白噪声信道(AWGN)下的digital调制格式识别分类 (1. PSK; 2. QPSK; 3.8 ...
- [转] Matlab中给信号加高斯白噪声的方法
MATLAB中产生高斯白噪声非常方便,可以直接应用两个函数,一个是WGN,另一个是AWGN.WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声. 1. WGN:产生高斯白噪声 y = ...
- 用matlab给图像加高斯噪声和椒盐噪声(不调用imnoise函数)
图像画面中的噪声,大致可以分为两类:高斯噪声和椒盐噪声.在这里,我们先看下图像中两种噪声各自的特征. 椒盐噪声:噪声幅值基本相同,但出现位置随机. 高斯噪声:图像中每一点都存在噪声,但幅值是随机分布的 ...
- 基于MATLAB的中值滤波均值滤波以及高斯滤波的实现
基于MATLAB的中值滤波均值滤波以及高斯滤波的实现 作者:lee神 1. 背景知识 中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值. 中值滤 ...
- Matlab绘制三维曲面(以二维高斯函数为例)
原文地址为:Matlab绘制三维曲面(以二维高斯函数为例) 寒假学习了一下Python下的NumPy和pymatlab,感觉不是很容易上手.来学校之后,决定继续看完数字图像处理一书.还是想按照上学期的 ...
随机推荐
- PHP算法------排序
<?php/** * Created by PhpStorm. * User: 63448 * Date: 2018/5/5 * Time: 22:42 */$arr = [3,1,13,5,7 ...
- zoj Beautiful Number(打表)
题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2829 题目描述: Mike is very lucky, as ...
- 并发编程之 AQS 源码剖析
前言 JDK 1.5 的 java.util.concurrent.locks 包中都是锁,其中有一个抽象类 AbstractQueuedSynchronizer (抽象队列同步器),也就是 AQS, ...
- PHP错误集锦
错误原因:分页数据不够,使用了缓存,但是model类中又没有添加缓存.解决办法:在model类中添加缓存,内容结束时清空缓存.
- Jquery操作样式
1.CSS(name,value) 修改单个样式 $(function(){ $(".divcontent").css("background","r ...
- Beans Game(博弈 | | DP)zoj 3057
Beans Game Time Limit: 5 Seconds Memory Limit: 32768 KB There are three piles of beans. TT and DD pi ...
- LINQ to Objects系列(1)相关技术准备
LINQ to Objects是LINQ的一部分,是查询对象集合的一种语法.首先看一下LINQ的体系结构,这样对LINQ有一个大致的了解.如图. 第一篇文章主要是回顾一下学习LINQ to Objec ...
- Java 内部类、静态内部类、匿名内部类
java提高篇(八)----详解内部类 概念 可以将一个类的定义放在另一个类的定义内部,这就是内部类. 为什么要使用内部类?在<Think in java>中有这样一句话:使用内部类最吸引 ...
- MVC--初步理解(01)
一.一般意义上的MVC模式 MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为以下三个基本部分: 模型(Model):模型用于封装与应用程序的业务逻 ...
- Stylus基本使用
介绍 在学习一个 Vue.js 项目的过程中,注意到源码中样式的部分并没有用熟悉的 .css 样式文件,而是发现了代码长得和 CSS 相像的 .styl 文件.这个 .styl 以前没见过啊,你是谁? ...