1
    %ENGR 151 Lab 3 Part 3
clc  
clear  
disp('ENGR 151 Lab 3 Part 3')  
disp('Solid Snake')  
disp(' ')  
r = ones(1,41)  
v = ones(1,41)  

for i = 0:0.5:20  
    r(i) = -.05 + round(i) * .05  
    v(i) = (4/3) * pi * r(i)^3  
end  

私は少し混乱しています。これが言っていることは、私の配列には整数ではない位置が存在しないということだと思いますが、この問題の指示は具体的に次のように述べていますFOR ループを使用した 0.5 の計算. V=(4/3)*pi*R3 . これには 41 のループが必要です. 変数 r と v にメモリを割り当てる必要があります. 方程式 r= -0.5 + i* 0.5 を使用して与えられたループ i で r を見つけます。各ループに r と v を格納するには、上記の r と v の方程式を適切な添え字で更新する必要があります。この .5 インクリメントの代わりに、0 から 40 までの for ループを作成しないのはなぜですか?

4

2 に答える 2

0

ベクトル r を入力しようとしている場合は、for ループの外で初期化されたカウンターを使用して、各ループをインクリメントできます。

cnt = 0;
for i = 0:0.5:20
    cnt = cnt + 1; %increment at the beginning so any users of cnt get the 1-indexed value 
    r(cnt) = -.05 + round(i) * .05  
    v(cnt) = (4/3) * pi * r(cnt)^3  
end  
于 2012-09-19T17:13:30.990 に答える
0

コードをベクトル化することもできます。

r = -0.05 + round(0:0.5:20) * 0.05;
v = (4/3) * pi * r .^3  

これにより、コードがより洗練されたものになり、そこにある索引付けの問題を回避できます。

于 2012-09-19T17:17:48.810 に答える