对二元向量函数int​egral2数值积分​报错:对于此运算,数​组大小不兼容的问题。

24 次查看(过去 30 天)
elraing
elraing 2023-5-14
回答: youwen 2023-5-14
程序如下:fuce = @(x,y)fun(x,y);
q = integral2(fuce,0,1,0,1)
function [a] = fun(x,y)
a = sin((1:5).*x + 2.*y);
end
想对此二元函数进行数值积分,但总出现报错:对于此运算,数组的大小不兼容。求教大神应该如何修改呐?
但把function定义的函数改为一元函数之后,就可以积分了:
fuce = @(x)fun(x);
q = integral2(fuce,0,1,'ArrayValued',true)
function [a] = fun(x)
a = sin((1:5).*x);
end

采纳的回答

youwen
youwen 2023-5-14
clear;clc
fuce=@(a,x,y) sin(a*x + 2.*y);
q =arrayfun(@(a) integral2(@(x,y) fuce(a,x,y),0,1,0,1),(1:5));
首先,integral2不能像integral那样按照向量值函数对函数序列进行分别积分;
其次,用arrayfun 完成intergral2的向量各序列,像积分使用的原函数向量变成integral2的序列。
具体原理请参考如下链接,虽然不是很一致

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 编程 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!