Problem with the evaluation of the product of triple integral

1 回表示 (過去 30 日間)
DIMITRIS GEORGIADIS
DIMITRIS GEORGIADIS 2021 年 11 月 4 日
Consider a set of positive values , and .
How can I compute q passing the integrand function as a function handle ? With the followind code an error occurs...
% 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));

採用された回答

Yongjian Feng
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
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
DIMITRIS GEORGIADIS
DIMITRIS GEORGIADIS 2021 年 11 月 4 日
Thank you again @Yongjian Feng!

サインインしてコメントする。

その他の回答 (0 件)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by