朝ソアーズ!だから私は再び立ち往生しています...私は、さまざまな材料を使用してシリンダーの最適な壁の厚さを決定しようとしています。私は現在のチューブ (Iron) を持っており、これの剛性 ('k') を知っています。私は matlab を使用して、さまざまな 'd' (内径) 値を反復処理し、剛性値 k が鉄管の ki と同じ (または類似) になったときに停止しようとしています (実際に収束する場合) !) while ループと for ループを試しましたが、何かが正しくありません! どんなアドバイスでも大歓迎です、乾杯
clc
Efe = 211e9; % Youngs modulus for iron [GPa]
Eal = 69e9; % Youngs modulus for Aluminium [GPa]
Esteel = 200e9; % Youngs modulus for steel [GPa]
D = 53 % Outer diameter [mm]
dFe = 36 % Inner diameter [mm]
dguess = 36
disp('Second moment of area for Iron cylinder: ')
IFe = pi*(D.^4-dFe.^4)/64
I = pi*(D.^4-dguess.^4)/64
disp('Stiffness for Iron: ')
Stiffness_Fe = Efe/IFe
disp('Stiffness for Aluminium: ')
Stiffness_Al = Eal/I
d=D;
while Stiffness_Fe>Stiffness_Al
d=d-1
I = pi*(D.^4-d.^4)/64;
Stiffness_Al=Stiffness_Fe
if d<0;
disp('Gone negative, step out')
break;
end
end
d
for ループ バージョンが機能することを期待していましたが、このループで Stiffness_Al 変数を正しく使用できないようです....スプレッドシートでこれを実行し、「k」の値に一致するようにフィルター処理することもできますが、通常はもっと楽しいです。 matlab を使用するには (このような基本的なものに苦労する場合を除きます!)