如何正确使用积分极限(Matlab)
How to use integration limits correctly (Matlab)
我制作了一个脚本来计算给定积分的限制:
0 <= x <= 2 and 0 <= y <= 1
但现在我想将限制更改为:
0 <= x <= 2 and 0 <= y <= sin((pi*x)/2)
函数:
function f = inte(x,y)
dz = 10;
f = exp(-dz*((x-1.25).^2+y.^2)).*cos(y.*(x-1.25));
end
这是我的早期限制脚本:
L = 100; M = L/2;
hx = (2)/L; hy = (1)/M;
x=[0:L]*hx;
y=[0:M]*hy;
Fx=[];
for i = 1:L+1
Fy=[];
for j = 1:M+1
f = inte(x(i),y(j));
Fy = [Fy f];
end
ycor = hy*(sum(Fy) - Fy(1)/2 - Fy(end)/2);
Fx = [Fx ycor];
end
ans = hx*(sum(Fx) - Fx(1)/2 - Fx(end)/2);
disp (ans)
我尝试更改代码时似乎无法获得正确答案。正确答案应该是0.1560949...
L是x方向的步数,M是y方向的步数。 hx 和 hy 是步长。
这真的很烦我。不,我只能使用命令 integral2 或 traps 作为参考。
提前致谢!
在您当前的代码中,行
hy = (1)/M;
y=[0:M]*hy;
参考 y 变量。当 y 的限制取决于 x 时,这些行不能留在 x 的循环之外:它们应该移入并使用值 x(i)。像这样:
for i = 1:L+1 % as in your code
hy = (sin(pi*x(i)/2))/M;
y = [0:M]*hy;
Fy=[]; % this and the rest as in your code
我得到了你想要的输出 0.1561
。
我制作了一个脚本来计算给定积分的限制:
0 <= x <= 2 and 0 <= y <= 1
但现在我想将限制更改为:
0 <= x <= 2 and 0 <= y <= sin((pi*x)/2)
函数:
function f = inte(x,y)
dz = 10;
f = exp(-dz*((x-1.25).^2+y.^2)).*cos(y.*(x-1.25));
end
这是我的早期限制脚本:
L = 100; M = L/2;
hx = (2)/L; hy = (1)/M;
x=[0:L]*hx;
y=[0:M]*hy;
Fx=[];
for i = 1:L+1
Fy=[];
for j = 1:M+1
f = inte(x(i),y(j));
Fy = [Fy f];
end
ycor = hy*(sum(Fy) - Fy(1)/2 - Fy(end)/2);
Fx = [Fx ycor];
end
ans = hx*(sum(Fx) - Fx(1)/2 - Fx(end)/2);
disp (ans)
我尝试更改代码时似乎无法获得正确答案。正确答案应该是0.1560949...
L是x方向的步数,M是y方向的步数。 hx 和 hy 是步长。 这真的很烦我。不,我只能使用命令 integral2 或 traps 作为参考。
提前致谢!
在您当前的代码中,行
hy = (1)/M;
y=[0:M]*hy;
参考 y 变量。当 y 的限制取决于 x 时,这些行不能留在 x 的循环之外:它们应该移入并使用值 x(i)。像这样:
for i = 1:L+1 % as in your code
hy = (sin(pi*x(i)/2))/M;
y = [0:M]*hy;
Fy=[]; % this and the rest as in your code
我得到了你想要的输出 0.1561
。