改进工程设计的一种方法是以最小化或最大化问题的形式描述设计的方程。这种方法称为设计优化。要最小化的数量的例子是能源消耗和建筑材料。要最大化的项目是使用寿命和容量,例如可以由桥梁支撑的车辆重量。在这个项目中,我们考虑最小化与建造水箱相关的材料成本的问题。水箱由一个半径为r、高度为h的圆柱形部分和一个半球形顶部组成。水箱的建造应在装满时容纳 500 米立方。圆柱部分的表面积为2*pi*rh,其体积为pi*r^2。半球形顶部的表面积由 2*pi*r^2 给出,体积由 2*pi*r^3/3 给出。建造罐的圆柱形部分的成本是每平方米表面积 300 美元;半球形部分的成本是每平方米 400 美元。使用 fminbnd 函数计算导致成本最低的半径。计算相应的高度 h。
我得到了正确的答案,但它非常混乱。我创建了一堆功能。我想知道我是否可以创建一个函数?...让我们将其命名为 ONEFUN
function R = findR(x)
h = (1500-2.*pi*x.^3)./(3.*pi.*x.^2);
R = 2.*pi.*x.*(h) + 2.*pi.*x.^2+pi.*x.^2;
function H = findH(x)
H = (1500-2.*pi*x.^3)./(3.*pi.*x.^2);
function [Cc, Chs, Tc] = Costs(r,h) % Cc - Cost of Cylinder, Chs - Cost of Hemishpere,
%Tc - Total Cost
Cc = ((2.*pi.*r.*h) + (pi.*r.^2)).*300;
Chs = (2.*pi.*r.^2).*400;
Tc = Cc+Chc;
我想过使用开关,响应,但我不知道该怎么做。
function Anwsers
response = input('Type "find r", "find h", "costHS", "costC", "total": ','s');
response = lower(response);
switch response
case 'find r'
Radius = fminsearch(@ONEFUN, [1]);
case 'find h'
Hight = findH(r)
case 'costHS'
case 'costC'
case 'total'
otherwise
disp('You have not entered a proper choice.')
end
我将不胜感激和帮助