I think I've done it with a for loop: -

n = 4

a = 1

b = 10

gf = (b/a)^(1/(n - 1))

for k = 1:n

y(k) = a*gf^(k-1);

end

Does anyone know how I could do it using a non-for loop method?

208 views (last 30 days)

Show older comments

I know how to calculate the growth factor, but not how to turn it all into a vector. Here's the start of my code: -

n = 4

a = 1

b = 10

gf = (b/a)^(1/n - 1)

the cyclist
on 4 Apr 2013

k = 1:n;

y = a*gf.^(k-1);

or, even simpler

y = a*gf.^((1:n)-1);

Stephen23
on 13 Aug 2018

Edited: Stephen23
on 13 Aug 2018

@Ramm: That error message is telling you what the problem is. It does not mention that you need any "specific module". It shows that your gf is non-scalar and is not the same size as k, thus you will get this error. The code in this answer works perfectly, as long as you define a scalar growth factor (exactly as the question shows):

>> n = 4;

>> a = 1;

>> b = 10;

>> gf = (b/a)^(1/n-1)

gf = 0.17783

>> k = 1:n;

>> y = a*gf.^(k-1)

y =

1.0000000 0.1778279 0.0316228 0.0056234

Carlos
on 4 Apr 2013

>> y=zeros(4,1);

>> n=1:1:4;

>> y(1:4)= a*gf.^(n(1:4)-1);

>> y

y =

1.0000

2.1544

4.6416

10.0000

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!