matlab实现数值积分 【一】(trapz函数)
2020-08-09 00:30
3375 查看
目录
总述
数值积分问题是传统数值分析课程中的重要内容。如果被积函数的数学表达式未知,则需要由实测数据通过梯形算法求出积分的近似值。本文将介绍被积函数的数学表达式未知时数值积分问题的求解方法,即已知数据点求积分。
函数调用格式
S = trapz(x, y);
应用举例
例1:梯形法求积分
x = [0:pi/30:pi]'; y = [sin(x) cos(x) sin(x/2)]; S = trapz(x,y)
结果为:
S = [1.9982 0.0000 1.9995]
由于选择的步距较大,为 h=π/30=0.1h=\pi/30 = 0.1h=π/30=0.1 , 故得出的结果有较大的误差。其实可以将积分问题与样条插值技术相结合,给出 一 个能精确计算积分的MATLAB函数。(待补充)
例2:不同步长对积分结果的影响
题目: 用定步长法求解积分∫03π2cos15xdx\int_0^{\frac{3\pi}{2}}{cos15xdx}∫023πcos15xdx,并讨论不同步长对积分值的影响。
- 首先,绘制被积函数的图像:
x=[0:0.01:3*pi/2, 3*pi/2]; % //这样赋值能确保 3*pi/2 点被包含在内 y=cos(15*x); plot(x,y)
由图像观察出在求解区域内被积函数有很强的振荡。
- 对不同的步距 h=0.1,0.01,0.001,0.0001,0.00001,0.000001h= 0.1, 0.01, 0.001, 0.0001, 0.00001, 0.000001h=0.1,0.01,0.001,0.0001,0.00001,0.000001 ,可以用下面的语句求出采用不同步长的积分近似结果。
syms x, A=int(cos(15*x),0,3*pi/2) % //求取理论值为1/15 h0=[0.1,0.01,0.001,0.0001,0.00001,0.000001]; v=[]; for h=h0 x = [0:h:3*pi/2, 3*pi/2]; y=cos(15*x); I = trapz(x,y); v = [v; h,I,A-I]; end
得出结果如下:
可见,随着步距hhh的减小,计算精度逐渐增加。
相关文章推荐
- matlab实现数值积分 【二】(integral函数)
- 数值积分matlab实现
- 数值计算方法求数值积分欧拉法matlab实现
- 利用Matlab实现H∞控制
- matlab中滤波器函数filter的C语言实现
- matlab 用imadjust函数实现图像灰度变换
- 卡尔曼滤波的简单实现(Matlab)
- matlab中周期图功率谱法的实现原理
- 学习笔记: CIC filter及其matlab实现
- 约束复原与维纳滤波(数学原理与MATLAB实现)
- Matlab算法实现图像旋转(无函数调用)
- 如何实现C#与matlab交互
- 【小波变换】STL版 一维离散小波变换(DWT)库,完全按matlab的wavelet toolbox 的API实现的
- JAVA实现MATLAB中repmat函数
- Matlab实现图像分割
- matlab语言,实现了对高光谱遥感图像的读取并做主成分分析,将结果按贡献率大小顺序排列并显示出来
- 吴恩达机器学习正则化Logistic算法与神经网络的MATLAB实现(对应ex3练习)
- Linear Regression & Ridge Regression的matlab实现
- A robust fuzzy local information C-means clustering algorithm的Matlab实现
- MATLAB自带工具箱实现PCA降维代码