Matlab:如何计算函数在多个极限上的定积分?
假设:
z = [0.4 0.5 0.75]'
function y = myfunct(x)
y = quad(@sin, 0, x)
我想计算 sin(x) 从 0 到 0.4、0.5 和 0.75 的定积分,使用:
myfunct(z)
但是,Matlab 返回:
??? Error using ==> quad at 70
The limits of integration must be scalars.
Assume:
z = [0.4 0.5 0.75]'
function y = myfunct(x)
y = quad(@sin, 0, x)
I'd like to calculate the definite integral of sin(x) from 0 to 0.4, to 0.5, and 0.75, using:
myfunct(z)
However, Matlab returns:
??? Error using ==> quad at 70
The limits of integration must be scalars.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以在最新版本的 MATLAB 中使用
arrayfun
函数:You can use the
arrayfun
function in recent versions of MATLAB:您还可以使用quadv 来执行此操作。但是,不要制作积分极限向量,而是制作一个数组值函数,这样当您对每个元素进行积分时,积分范围将为 0 到 1。
更具体地说,您希望对 x = 中的 sin(x) 进行积分0 到 z。这与从 u = 0 到 1 积分 sin(uz)*z 相同(u 替换)。创建一个数组函数
然后执行
You can also use
quadv
to do this. BUT, instead of making a vector of integration limits, make an array valued function so that when you integrate each element, the range of integration will be 0 to 1.To be more specific, you want to integrate sin(x) from x = 0 to z. This is the same as integrating sin(u z)*z from u = 0 to 1 (u-substitution). Make an array function
Then do