【问题标题】:Matlab: Area between closed curve and a lineMatlab:闭合曲线和直线之间的区域
【发布时间】:2018-07-09 21:32:42
【问题描述】:

计算闭合曲线和直线之间的上面积的最佳方法是什么?

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轴?我看到很多关于闭合曲线或曲线和直线的话题。但没有关于闭合曲线和直线。

谢谢。

【问题讨论】:

    标签: matlab area


    【解决方案1】:

    您只需要使用 interp1 来计算您想要的范围的面积。首先你计算曲线和x轴之间的面积(over):

    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;
    

    【讨论】:

      猜你喜欢
      • 2017-07-13
      • 1970-01-01
      • 2021-11-26
      • 2013-10-10
      • 2013-11-23
      • 2016-02-19
      • 2019-04-19
      • 2019-02-07
      • 1970-01-01
      相关资源
      最近更新 更多