Problem with the evaluation of the product of triple integral
조회 수: 1 (최근 30일)
이전 댓글 표시
Consider a set of positive values
,
and
.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/789510/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/789515/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/789520/image.png)
How can I compute q passing the integrand function as a function handle ? With the followind code an error occurs...
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/789525/image.png)
% Inputs:
t = 15;
sigma = 0.25;
y = [1.0 1.2]';
h = @(x1,x2,x3) x1.*(t - x2).^x3;
g = @(x1,x2,x3) exp(-0.5.*((y - h(x1,x2,x3))./sigma).^2 );
q = prod(integral3(@(x1,x2,x3) g(x1,x2,x3), 0, 1, 0, t, 0.3, 1));
댓글 수: 0
채택된 답변
Yongjian Feng
2021년 11월 4일
y is an array. You can't use it directly in integral3. Do the product yourself as a for loop.
t = 15;
sigma = 0.25;
y = [1.0 1.2]';
accu = 1;
for i = 1:length(y)
h = @(x1,x2,x3) x1.*(t - x2).^x3;
g = @(x1,x2,x3) exp(-0.5.*((y(i) - h(x1,x2,x3))./sigma).^2 );
q = integral3(@(x1,x2,x3) g(x1,x2,x3), 0, 1, 0, t, 0.3, 1);
accu = accu * q;
end
accu
댓글 수: 3
Yongjian Feng
2021년 11월 4일
Use arrayfun
y = [1.0 1.2];
result = prod(arrayfun(@(x) int3(x), y));
function q = int3(y)
t = 15;
sigma = 0.25;
h = @(x1,x2,x3) x1.*(t - x2).^x3;
g = @(x1,x2,x3) exp(-0.5.*((y - h(x1,x2,x3))./sigma).^2 );
q = integral3(@(x1,x2,x3) g(x1,x2,x3), 0, 1, 0, t, 0.3, 1);
end
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!