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

26 visualizzazioni (ultimi 30 giorni)
elraing
elraing il 14 Mag 2023
Risposto: youwen il 14 Mag 2023
程序如下: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

Risposta accettata

youwen
youwen il 14 Mag 2023
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的序列。
具体原理请参考如下链接,虽然不是很一致

Più risposte (0)

Categorie

Scopri di più su 编程 in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!