objective 函数的二重积分

Double integral of objective function

我想使用内置函数 integral2 计算我的 objective 函数(名为 myfunction,见下文)的二重积分。

我试过运行这个脚本;

f = @(r,theta) myfunction(r,theta);
integral2(f,0,2,0,2*pi);

其中 myfunction 是以下函数:

function fkt=myfunction(r,theta)
x=r.*cos(theta);
y=r.*sin(theta);
los(:,1)=x;
los(:,2)=y;
norm = (sum( sqrt( los(:,1).^2 + los(:,2).^2)));
fkt=norm*r;
end

我正在对极坐标进行积分,这就是为什么 fkt=norm*r

Matlab 给我以下错误信息:

>> untitled2
Subscripted assignment dimension mismatch.

Error in myfunction (line 8)
los(:,1)=x;

我想不通,问题是什么。

x 是一个矩阵,您尝试将其分配给列向量。

有两点可以改进:

  1. los 未定义
  2. los(:,1) 是一列,而 x 是一行,所以赋值失败。

您可以通过定义 los 并更改您的分配来更正此问题。例如:

los = NaN(numel(r), 2);
los(:,1) = x';
los(:,2) = y';

但是,为什么需要变量los?只需删除它,错误就会消失:

function fkt=myfunction(r,theta)
x=r.*cos(theta);
y=r.*sin(theta);
norm = (sum( sqrt(x.^2 + y.^2)));
fkt=norm*r;
end

最佳,