vector uses info from itself to grow without for cycle

1 visualización (últimos 30 días)
I need to solve this problem without a for loop:
B= (1:20)
A = [];
A(1) = 1/(1+B(1));
for k = 2:length(B)
A(k,1) = (1-B(k)*sum(A))/(1+B(k));
end
i.e. I need to know if it is possible to get information from prebvious calculation to create a vector, but without a for loop. Thanks.
  13 comentarios
Walter Roberson
Walter Roberson el 27 de Mzo. de 2020
Which of the two?
Recursive functions with no explicit loop are easy for this.
A closed form formula might be difficult.
gabriele fadanelli
gabriele fadanelli el 28 de Mzo. de 2020
Editada: gabriele fadanelli el 28 de Mzo. de 2020
even recursive function would be nice thank you. I just need an example.

Iniciar sesión para comentar.

Respuesta aceptada

Walter Roberson
Walter Roberson el 28 de Mzo. de 2020
Editada: Walter Roberson el 28 de Mzo. de 2020
function A = calculate_A(n)
if n == 1
A = 1/2;
else
A_before = calculate_A(n-1);
A = [A_before; (1-n*sum(A_before))/(1+n)];
end
end
Note: this will fail at roughly 75000, due to the recursion using up memory.

Más respuestas (1)

Ameer Hamza
Ameer Hamza el 26 de Mzo. de 2020
Editada: Ameer Hamza el 26 de Mzo. de 2020
For the original code in your question. Following is the simplified form.
k = 1:20;
A = 6.^(k-1);
  1 comentario
gabriele fadanelli
gabriele fadanelli el 26 de Mzo. de 2020
you are right, but I am actually looking for above problem solution, sorry.

Iniciar sesión para comentar.

Categorías

Más información sobre Logical en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by