首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多维数据集成(matlab)

多维数据集成(matlab)
EN

Stack Overflow用户
提问于 2016-04-06 04:31:11
回答 1查看 81关注 0票数 0

我有一个三维的(有点复杂的表达式),x,y,z,我对其中之一的累积积分感兴趣。到目前为止,我最好的解决方案是创建一个3D网格,计算每个点的表达式,然后使用cumtrapz在第三维上进行集成。这只是我想要实现的一个缩小的例子:

代码语言:javascript
复制
%integration
xvec = linspace(-pi,pi,40);
yvec = linspace(-pi,pi,40);
zvec = 1:160;
[x,y,z] = meshgrid(xvec,yvec,zvec);
f       = @(x,y,z) sin(x).*cos(y).*exp(z/80).*cos((x-z/20));
output  = cumtrapz(f(x,y,z),3);

%(plotting)
for j = 1:length(output(1,1,:));

    surf(output(:,:,j));
    zlim([-120,120]);
    shading interp
    pause(.05);
    drawnow;
end

给定向量的大小(x,y~100,z~5000),这在计算上是一种合理的方法吗?

EN

回答 1

Stack Overflow用户

发布于 2016-04-06 05:24:26

如果这是您想要积分的函数形式,则可以分别对@(x,y,z) sin(x).*cos(y).*exp(z/80).*cos((x-z/20))xyz进行积分,并且可以使用复数替换sin(x)=(exp(ix)-exp(ix))/2icos(x)=(exp(ix)+exp(ix))/2来解析求解该积分,这将大大减少计算的时间成本

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36436465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档