For loop in Mathematica doesn't work

  • Context: Mathematica 
  • Thread starter Thread starter nikolafmf
  • Start date Start date
  • Tags Tags
    Loop Mathematica Work
Click For Summary
SUMMARY

The discussion addresses issues with the for loop in Mathematica, specifically regarding the use of the LinearSolve function. The problem arises when the user attempts to pass a nested list (column vector) to LinearSolve, which leads to kernel execution failures. The solution is to use Flatten[u] instead of u to ensure the input is a proper vector format. This is supported by the Mathematica documentation, which clarifies that LinearSolve accepts either a vector or a matrix as its second argument.

PREREQUISITES
  • Familiarity with Mathematica syntax and functions
  • Understanding of vector and matrix representations in Mathematica
  • Knowledge of the LinearSolve function in Mathematica
  • Basic programming concepts, particularly loops
NEXT STEPS
  • Review the Mathematica documentation on Vectors and Matrices
  • Study the LinearSolve function in detail
  • Practice using Flatten[] to manipulate list structures in Mathematica
  • Explore debugging techniques for kernel issues in Mathematica
USEFUL FOR

Mathematica users, data scientists, and programmers looking to optimize their code involving linear algebra operations.

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 :)
 

Similar threads

  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 4 ·
Replies
4
Views
4K
  • · Replies 9 ·
Replies
9
Views
3K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 3 ·
Replies
3
Views
4K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 13 ·
Replies
13
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K