早上好/下午好/晚上好,
我正在研究一个涉及四阶张量计算体积积分的Matlab脚本.设H(r,theta,phi)是我想要整合的函数.假设不能通过对r,theta和phi的简单操作来获得H.
我的问题是在Matlab中和我知道的任何其他代码一样:
All input functions must accept arrays and operate elementwise. The function FUN(X,Y,Z)
must accept arrays X, Y, Z of the same size and return an array of corresponding values.
如果我尝试这个简单的功能:
fun = @(X,Y,Z) X.*Y.*Z
完全没有问题,如果我将它集成在[0,1] x [0,1] x [0,1]上,我得到了正确的结果:
integral3(fun,0,1,0,1,0,1)
返回0.125,这是正确的.
问题在于,正如我所说,我不能用向量进行简单的计算来获得H,我不得不这样做或多或少做事:
function [result] = fun(x,y,z)
sz = length(x);
result = zeros(1,sz);
for i=1:sz
result(i) = x(i)*y(i)*z(i);
end
end
这个函数独立工作,返回与我之前介绍的另一个完全相同的结果.但是,当我尝试使用integral3时,我收到此错误:
Error using integral2Calc>integral2t/tensor (line 241)
Integrand output size does not match the input size
但从我的函数定义可以清楚地看出,我特意将其作为输入的大小.
我不明白什么是错的,我不确定我有任何其他解决方案来计算这个函数而不是使用这种语法.
非常感谢您的时间和帮助:)