计算闭合曲线和直线之间上限区域的最佳方法是什么?
alpha = [0:pi/360:2*pi];
x = 2.*(1-cos(alpha)).*cos(alpha);
y = 2.*(1-cos(alpha)).*sin(alpha);
w = [-4:0.1:0.5];
z = 0.5*w;
plot(x,y);
hold on;
grid on;
plot(w,z);
是否有可能通过使用trapz来解决它,即使它是一个闭合曲线并占据正负y轴?我看到很多关于闭合曲线或曲线和直线的主题。但没有一个关于一条曲线和一条线。
感谢。
答案 0 :(得分:1)
您只需使用interp1来计算您想要的范围。首先计算曲线和x轴之间的面积(上):
a1 = abs(trapz(x,y)/2);
然后x和x轴之间的区域(下)x从交点到零:
x3 = [-3.38 0];
r1 = interp1(x2,y2,x3);
a2 = abs(trapz(x3,r1));
然后对于x轴下的曲线的其余部分也是如此:
x4 = [-3.99 -3.38];
r2 = interp1(x,y,x4);
a3 = abs(trapz(x4,r2))/2;
总面积将是:
at = a1 + a2 + a3;
这里整个代码:
clear all;
clc;
z = 0:0.01:2*pi;
x = 2.*(1-cos(z)).*cos(z);
y = 2.*(1-cos(z)).*sin(z);
plot(x,y);
hold on;
grid on;
x2 = -4:0.01:0.5;
y2 = 0.5*x2;
plot(x2,y2);
a1 = abs(trapz(x,y)/2);
x3 = [-3.38 0];
r1 = interp1(x2,y2,x3);
a2 = abs(trapz(x3,r1));
x4 = [-3.99 -3.38];
r2 = interp1(x,y,x4);
a3 = abs(trapz(x4,r2))/2;
at = a1 + a2 + a3;