第三周作业-涂料计算

BUPT大一下Matlab选修

北邮Matlab选修 Week 3 涂料计算

问题描述

如图所示的磁盘,半径为R,高度为h,它有8个圆柱形的孔,每个孔的半径为r,这可能是一个需要刷漆的机器零件,刷完后再与其他零件进行组装。在设计这台机器的过程中,我们可能需要知道这个磁盘的重量和它所需的油漆量。机器的重量和油漆量是各个零件的总和。由于磁盘的重量与它的体积成正比,油漆量与它的“润湿面积”成正比,所以我们需要知道这个磁盘的体积和面积。

请编写一个函数,用于求该磁盘的体积和面积,并用一个实例对编写的函数进行测试。

数学模型

体积计算

  • 原始磁盘体积

    磁盘是一个圆柱体,其体积$V_{disk}$可以通过以下公式计算:

    $$ V_{disk}=\pi R^2h $$

    其中,$R$是磁盘的半径,$h$是磁盘的高度。

  • 孔的体积

    每个孔也是一个圆柱体,其体积$V_{hole}$可以通过以下公式计算:

    $$ V_{hole}=\pi r^2 h $$

    其中:$r$是孔的半径。

  • 实际磁盘体积

    实际磁盘体积 $V_{actual}$ 是原始体积减去总孔体积:

    $$ V_{actual}=V_{disk}-totalholes \times V_{hole} $$

润湿面积计算

  • 原始磁盘表面积

    磁盘的表面积包括两个底面和一个侧面,其表面积 $S_{disk}$ 可以通过以下公式计算:

    $$ S_{disk}=2\pi R^2 + 2\pi Rh $$

    其中,$R$ 是磁盘的半径,$h$是磁盘的高度。

  • 孔的侧面积

    每个孔的侧面积$S_{holeside}$可以通过以下公式计算:

    $$ S_{holeside} = 2 \pi r h $$

    这里不考虑孔的底面,因为它们位于磁盘内部,不会增加润湿面积,其中,$r$是孔的半径。

  • 孔的底面和顶面面积

    每个孔的侧面积$S_{topbuttom}$可以通过以下公式计算:

    $$ S_{topbuttom} = 2 \pi r^2 $$

  • 实际磁盘体积

    最后,实际润湿面积$S_{actual}$是原始表面积加上总孔侧面积减去总孔底面和顶面面积:

    $$ S_{actual}=S_{disk}+totalholes \times (S_{holeside} - S_{topbuttom}) $$

程序设计

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function [volume, surface_area] = disk_volume_area(R, h, r)  
    % R - 磁盘的半径  
    % h - 磁盘的高度  
    % r - 每个孔的半径  
    % n_holes - 孔的数量  
    n_holes=8;
    % 计算原始磁盘的体积  
    original_volume = pi * R^2 * h;  
      
    % 计算原始磁盘的表面积(包括两个底面和一个侧面)  
    original_surface_area = 2 * pi * R^2 + 2 * pi * R * h;  
      
    % 计算每个孔的体积  
    hole_volume = pi * r^2 * h;  
      
    % 计算每个孔的侧面积(不包括底面,因为底面在磁盘内部,不参与润湿)  
    hole_side_area = 2 * pi * r * h;  
    
    %计算每个孔的顶、底面积
    hole_top_buttom_area = 2 * pi * r * r;

    % 计算所有孔的总体积  
    total_hole_volume = n_holes * hole_volume;  
      
    % 计算所有孔的顶、底面积总和  
    total_hole_side_area = n_holes * hole_side_area;  
      
    % 计算所有孔的侧面积总和  
    total_hole_top_buttom_area = n_holes * hole_top_buttom_area;

    % 计算磁盘的实际体积(减去孔的体积)  
    volume = original_volume - total_hole_volume;  
      
    % 计算磁盘的实际润湿面积
    surface_area = original_surface_area + total_hole_side_area - total_hole_top_buttom_area;  
end

计算结果

1
2
3
4
5
6
7
8
>> R=10;
>> h=5;
>> r=2;
>> [volume, surface_area] = disk_volume_area(R, h, r); 
>> fprintf('磁盘的体积为: %f\n', volume); 
磁盘的体积为: 1068.141502
>> fprintf('磁盘的润湿面积为: %f\n', surface_area);
磁盘的润湿面积为: 1244.070691
Progress Infinite!
使用 Hugo 构建
主题 StackJimmy 设计