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 是一个矩阵,您尝试将其分配给列向量。
有两点可以改进:
los
未定义
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
最佳,
我想使用内置函数 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 是一个矩阵,您尝试将其分配给列向量。
有两点可以改进:
los
未定义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
最佳,