matlab输出数据向量化,MATLAB高效编程之向量化积分

本文介绍了如何使用MATLAB的quadv和integral函数进行向量化积分,以解决带参数函数在固定区间、多个区间以及多个参数和区间的积分问题。通过实例展示了向量化积分的实现步骤,并对比了向量化与非向量化积分的效率,结果显示向量化积分在大规模计算时效率显著提高。
摘要由CSDN通过智能技术生成

本帖最后由 winner245 于 2015-7-17 12:26 编辑

关于单个函数向量化积分的探讨

winner245

向量化积分简介

给定一个函数f,我们可能需要计算一系列定积分。比如,i)求解一个带参数函数f(x,t),x为自变量,t为参数,在M个不同参数取值t= t1, …, tM时在某固定区间[a,b]上的定积分;ii)对于同一个函数f(x),求解在N个不同区间上[a1,b1]、[a2,b2]、…、[aN,bN]的定积分;iii)求解带参数函数f(x,t)在M个不同参数取值和N个不同区间上的定积分。显然,无论是上述哪一种情形,我们都将面临求解一系列定积分。本文重点关心的是如何通过向量化运算,求解出该函数所有的定积分,且计算过程不涉及任何循环(以及循环的简写代码:arrayfun)。本文将能够实现这类积分功能的向量化运算称之为“向量化积分”。

本文假定所求积分不存在解析解,即符号积分失效。故将重点讨论如何通过数值积分(借助quad、quadl、quadgk、quadv、integral等函数)来实现向量化积分。

问题描述

在数值计算中,我们常常会碰到下列三类积分问题。

问题1(带参数函数在固定区间上的定积分):求带参数函数f(x,t)当参数t取M个不同数值时在某固定区间[a,b]上的定积分:

8e854796683dcd3ded93a3c580244259.gif

问题2(不带参数函数在多个区间上的定积分):求函数f(x)在N个不同区间[an,bn],

ddd54e3869791f6a221dd7745f726c16.gif,上的定积分:

47c48bb78ad2bbd2d3f6dcc22f9ecea5.gif

问题3(带参数函数在多个区间上的定积分):求带参数函数f(x,t)当参数t取M个不同数值,在N个不同区间[an,bn], n = 1,2, …, N,上的定积分:

36c7f993f50fce3f0e209f0be0570b11.gif

为了方便后面写代码,本文将考虑下面的被积函数:

deb297fe077cba55849d01f8c9b08a96.gif

28bc1e014e846045f0777f85e350e9cf.gif

其中,x为自变量,t为参数。

问题分析

要求解一系列积分,最容易想到的办法就是循环求解。比如,通过for循环实现每次循环求解一个定积分。另外,for循环代码还可以通过arrayfun函数来简写,这种“简写”本质上还是循环,只不过代码看起来更简洁,代码效率与for循环相当(依然很低)。但下文仍会给出基于arrayfun的代码,作为参照系来衡量向量化积分的优越性。

对于问题1(固定区间上的带参数函数的定积分),可以直接调用MATLAB向量化积分函数quadv或integral,这两个函数是MATLAB提供的仅有的两个支持向量化积分的函数。具体做法是:将被积函数f(x,t)定义为可接受向量化参数t的关于x的函数句柄,然后直接调用quadv或integral&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值