【Matlab学习手记】Matlab积分问题
一个程序彻底搞懂Matlab的数值积分、符号积分问题。
- 数值积分问题,给定被积分函数和积分上下限,使用 integral 函数得到积分值;
- 符号积分问题,通常结果是解析解,即需要知道被积分函数的原函数表达式;如果原函数未知或者表达形式过于复杂(同样没有明确的表达式),可以自定义一个积分函数(给定一个积分区间,返回一个积分值)来简短表达;
- 一重积分问题本质上得到的是面积,当然可以用积分定义来计算总积分。
function IntegralDemo()
clear; clc;
%% 数值积分
% sample 1
fun1 = @(x) sin(x);
result = integral(fun1, 0, pi);
disp(result); % 2.0000
% sample 2
fun2 = @(x) sin(x) ./ x; % 注意运算符 ./
result = integral(fun2, 0, 1);
disp(result); % 0.9461
%% 解析解
syms x t
% sample 3
y1 = sin(x);
f1 = int(y1, x, 0, t);
disp(f1); % 1 - cos(t)
% sample 4
y2 = sin(x) / x;
f2 = int(y2, x, 0, t);
disp(f2); % sinint(t)
disp(double(subs(f2, t, 1))); % 0.9461,相当于 sample 2 的结果;
disp(MyIntegral1(fun2, 0, 1, 10000)); % 0.9461, 用自定义的积分方法
disp(MyIntegral2(fun2, 0, 1)); % 0.9461, 用自定义的积分方法
% f2 和 MyIntegral1(fun, 0, t, 10000) 或者 MyIntegral2(fun, 0, t) 等价
% 情况复杂一点,被积分函数没有原函数或者没有明确的表达式,可以采用自定义函数这种方法 function result = MyIntegral1(fun, minX, maxX, intervalCount)
% fun: 函数句柄
% minX: 积分下限
% maxX: 积分上限
% intervalCount: 积分区间份数
% 利用积分的定义来求面积
result = 0;
h = (maxX - minX) / intervalCount; % 步长
for i = 1 : intervalCountresult = result + h * fun(minX + (i - 0.5) * h); % 采用简单矩形公式:面积 = 底 × 高
endfunction result = MyIntegral2(fun, minX, maxX)
% fun: 函数句柄
% minX: 积分下限
% maxX: 积分上限
% 调用 integral 函数
result = integral(fun, minX, maxX);
【Matlab学习手记】Matlab积分问题相关推荐
- 【Matlab学习手记】标签显示在刻度之间
问题:Matlab标签和刻度线默认是对齐的,如何将标签设置到刻度线之间? 三个实例. plot类型 clear; clc; x = 0:0.1:2*pi; y = sin(x); plot(x, y) ...
- Matlab学习手记——制作GIF动图
目的:利用Matlab制作GIF动图. 结果图 测试代码 clear;clc; filename = '页岩碎屑.gif'; % 保存文件名 Iters = [1:9 10*(1:9) 100*(1: ...
- 【Matlab学习手记】sym8小波滤波
提供sym8小波,四层全局软阈值滤波源代码,采用Matlab语言编写,可移植性强. 源代码 clear;clc; load leleccum; indx = 1:3450; noisez = lele ...
- sym8 matlab,【Matlab学习手记】sym8小波滤波
提供sym8小波,四层全局软阈值滤波源代码,采用Matlab语言编写,可移植性强. 源代码 clear;clc; load leleccum; indx = 1:3450; noisez = lele ...
- 【Matlab学习手记】椭圆拟合
熟悉 Matlab 函数 nlinfit 使用. 椭圆拟合方程: 结果图: 程序: clear; clc; F = @(p, x) p(1) * x(:, 1) .^ 2 + p(2) * x(:, ...
- 【Matlab学习手记】二维码
目的:二维码的识别和生成. 代码 function varargout = QRcode(varargin) % QRCODE MATLAB code for QRcode.fig % QRCODE, ...
- 【Matlab学习手记】二次多项式曲面拟合
二次多项式曲面公式 总共有6个系数. 绘制曲面图形时,一般给定x和y的取值(一维数组),然后对x和y网格化成二维数组X和Y,将X和Y代入公式,即可得到曲面的数值,最后用surf函数显示. 实例 给定一 ...
- matlab如何制作和保存gif动图,Matlab学习手记——制作GIF动图
的:利用Matlab制作GIF动图. 结果图 测试代码 clear;clc; filename = '页岩碎屑.gif'; % 保存文件名 Iters = [1:9 10*(1:9) 100*(1:9 ...
- 【Matlab学习手记】了解Matlab界面布局
下图是我的Matlab软件布局,包含四部分:当前文件夹(Current Folder).工作区(Workspace).编辑器(Editor)和命令行窗口(Command Window). 当前文件夹是 ...
最新文章
- JSON数据序列化与反序列化实战
- Spring @Resource、@Autowired、@Qualifier区别
- 11个顶级 JavaScript 日历插件
- DataWorks 如何撑起阿里99%的数据开发?
- java常用的正则表达式
- Android2.0以后读取通讯录中电话号码的改变
- 车辆颜色分类网络—BeerNet
- 软件开发常见的开发方向
- 自动驾驶开源平台整理
- 从外包测试到阿里巴巴,一位三本女生逆袭之路
- call和apply详解-利用借充电宝模拟用法
- 2021-基于深度学习的人脸检测综述文献-摘要
- 浅析PC机串口通讯流控制
- 搭建自己的技术博客系列(六)酷炫主题icarus常用配置整合版,快速搞定博客首页
- 电脑显示器不亮的三种原因和解决方法
- 吻吻更健康!揭晓接吻的11大优点
- IDEA安装插件提示was not installed: Cannot download解决办法
- 基于使用方的火控系统的测试平台研究
- C语言程序翻译环境详解
- tkinter-grid布局详解