Matlab:闭合曲线和直线之间的区域
Matlab: Area between closed curve and a line
计算闭合曲线和直线之间上部面积的最佳方法是什么?
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);
即使是闭合曲线,同时占据正负y轴,用trapz能解决吗?我看到很多关于闭合曲线或曲线和直线的话题。但是none关于闭合曲线和直线。
谢谢。
你只需要使用interp1来计算你想要的范围的面积。首先计算曲线和 x 轴之间的面积(超过):
a1 = abs(trapz(x,y)/2);
那么 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;
计算闭合曲线和直线之间上部面积的最佳方法是什么?
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);
即使是闭合曲线,同时占据正负y轴,用trapz能解决吗?我看到很多关于闭合曲线或曲线和直线的话题。但是none关于闭合曲线和直线。
谢谢。
你只需要使用interp1来计算你想要的范围的面积。首先计算曲线和 x 轴之间的面积(超过):
a1 = abs(trapz(x,y)/2);
那么 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;