For loop in Mathematica doesn't work

  • Context: Mathematica 
  • Thread starter Thread starter nikolafmf
  • Start date Start date
  • Tags Tags
    Loop Mathematica Work
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
2 replies · 3K views
nikolafmf
Messages
112
Reaction score
0
I have problem with for loop in Mathematica given in the notebook attached.
It evaluates only first step and then shows problems and the kernel could not stop running.
What could be the problem? What is the correct syntax?
 

Attachments

Physics news on Phys.org
The smallest change I can do to make this work is to replace
f = LinearSolve[V, u]
with
f = LinearSolve[V, Flatten]

Mathematica does not demand you create row vectors and column vectors differently. This

http://reference.wolfram.com/mathematica/tutorial/VectorsAndMatrices.html

documents that about 1/5 of the way down that page, but it could be more clear and forceful.

This

http://reference.wolfram.com/mathematica/ref/LinearSolve.html?q=LinearSolve&lang=en

says that the second argument to LinearSolve can either be a vector or a matrix. The examples show using a vector.

It appears that your trying to give an approximation of a column vector, by adding an extra {} around each element, is the source of your problem.

In your previous post I removed all those extra {} and got it to run. Now with your new post and the extra {} introduced again it fails. Flatten[] eliminates the inner {} and gets the code to run.

If you put

Print[f]; Print[g]; Print[p, i];

in place of your

Print[p, i];

and you do not use the Flatten[] described above then you can see in the first few iterations that each iteration adds another layer of {} and those additional layers result in tensors that finally blow up LinearSolve.
 
Last edited:
Thank you very much again :)