Αγορά Πολιτών

Τρόπος Συμμετοχής

Χορηγίες

Πολίτες στην Αγορά

Έχουμε 302 επισκέπτες συνδεδεμένους

Επικοινωνία

Γερμανία 004917667046073 (SMS)

7/3/2017, 20:00

European Dissidents ALARM

 

Zeppelin: Beyond Gravity

 

Foreign intervention in Greece?

 

Η ανελεύθερη Ελλάδα

 

Η Ελλάδα καταγώγιο;

 

Αν.Επ. Π. Παυλόπουλο

  

Intangible prisons

 

Plausible deniability

 

Images of German w & s

 

Crimes against Humanity

 

"Chimera" - "Bellerophon"

 

pr. Donald Trump

 

  

Legal Notice 87

 

Βδέλλες, αποικιοκρατικές

 

Being a German

 

Legal Notice 84

 

Dirty colonial methods

 

Georgi Markov, BG - KGB

 

Samples of Barbarity

 

Ελλάδα - αποκόλληση

 

Έλληνες, στο έλεος...

 

Harvester's log 16/3/17

 

 

Legal Notice 66

 

Execrable

 

Legal Notice 62

 

  

My story

 

  

Aggression?

 

  

Η Εστία μου

 

  

Why so untidy?

 

  

Αποικιοκρατία

 

  

Εξόντωση Ελλήνων αντιφρονούντων;

 

  

Ζήτημα εμπιστοσύνης

 

  

Μεθοδικότητα

 

  

Ανοικτή Επιστολή πρέσβη ΗΠΑ

Αφορμή, U2RIT vs Ελλάδα;

Βιοηθική

A request to U2RIT

Colonial aggression - 2

Open Letter to UN S.G.

Open Letter to p.C. & p. O.

Δήλωση πρόθεσης επαναπατρισμού

 

Ο "εφιάλτης" της Νυρεμβέργης

Συλλογή Φωτογραφιών

Αίτημα προστασίας, προς Ιταλία

Chroma key, background removal

Science and Ethics

Να συμβάλει και η U2RIT

Θα ξαναφτιάξουν πολλές φορές Άουσβιτς και Zyclon B

 

Split-Screen effect

Η Ζωή είναι Ωραία.

Βόρεια Κορέα

Λευτεριά στους Έλληνες, εξανα- γκαστικά "Εξαφανισμένους"

 

Μυστικές δίκες;

Trustworthiness

Πολιτισμό, ή, απληστία;

Ακραία Στυγνότητα

Η Τέχνη της Επιβίωσης

Political Asylum 3

Επιστροφή στις ρίζες

The Human Cost of Torture

An urgent appeal for solidarity

More obvious than the Sun

Western "culture"

Political Asylum

Έννομη Προστασία

Μια μήνυση που εγείρει ερωτηματικά

 

 

 

Honor your father...

Noise

Creative Greeks

A pair of Dictatorships

Solving Linear Systems PDF Εκτύπωση E-mail
Αξιολόγηση Χρήστη: / 0
ΧείριστοΆριστο 
Συνεννόηση για Δράση - Απόψεις
Συντάχθηκε απο τον/την Χρήστος Μπούμπουλης (Christos Boumpoulis)   
Δευτέρα, 30 Οκτώβριος 2017 00:01

Solving Linear Systems

Many calculations involve solving systems of linear equations. In many cases, you will find it convenient to write down the equations explicitly, and then solve them using Solve.

In some cases, however, you may prefer to convert the system of linear equations into a matrix equation, and then apply matrix manipulation operations to solve it. This approach is often useful when the system of equations arises as part of a general algorithm, and you do not know in advance how many variables will be involved.

A system of linear equations can be stated in matrix form as , where  is the vector of variables.

Note that if your system of equations is sparse, so that most of the entries in the matrix  are zero, then it is best to represent the matrix as a SparseArray object. As discussed in "Sparse Arrays: Linear Algebra", you can convert from symbolic equations to SparseArrayobjects using CoefficientArrays. All the functions described here work on SparseArray objects as well as ordinary matrices.

LinearSolve[m,b] a vector  that solves the matrix equation 
NullSpace[m] a list of linearly independent vectors whose linear combinations span all solutions to the matrix equation 
MatrixRank[m] the number of linearly independent rows or columns of 
RowReduce[m] a simplified form of  obtained by making linear combinations of rows

Solving and analyzing linear systems.

Here is a 2×2 matrix.
In[1]:=
Click for copyable input
Out[1]=
This gives two linear equations.
In[2]:=
Click for copyable input
Out[2]=
You can use Solve directly to solve these equations.
In[3]:=
Click for copyable input
Out[3]=
You can also get the vector of solutions by calling LinearSolve. The result is equivalent to the one you get from Solve.
In[4]:=
Click for copyable input
Out[4]=
Another way to solve the equations is to invert the matrix m, and then multiply {a,b} by the inverse. This is not as efficient as using LinearSolve.
In[5]:=
Click for copyable input
Out[5]=
RowReduce performs a version of Gaussian elimination and can also be used to solve the equations.
In[6]:=
Click for copyable input
Out[6]=

If you have a square matrix  with a nonzero determinant, then you can always find a unique solution to the matrix equation  for any . If, however, the matrix  has determinant zero, then there may be either no vector, or an infinite number of vectors  which satisfy  for a particular . This occurs when the linear equations embodied in  are not independent.

When  has determinant zero, it is nevertheless always possible to find nonzero vectors  that satisfy . The set of vectors satisfying this equation form the null space or kernel of the matrix . Any of these vectors can be expressed as a linear combination of a particular set of basis vectors, which can be obtained using NullSpace[m].

Here is a simple matrix, corresponding to two identical linear equations.
In[7]:=
Click for copyable input
Out[7]=
The matrix has determinant zero.
In[8]:=
Click for copyable input
Out[8]=
LinearSolve cannot find a solution to the equation  in this case.
In[9]:=
Click for copyable input
Out[9]=
There is a single basis vector for the null space of m.
In[10]:=
Click for copyable input
Out[10]=
Multiplying the basis vector for the null space by m gives the zero vector.
In[11]:=
Click for copyable input
Out[11]=
There is only 1 linearly independent row in m.
In[12]:=
Click for copyable input
Out[12]=

NullSpace and MatrixRank have to determine whether particular combinations of matrix elements are zero. For approximate numerical matrices, the Tolerance option can be used to specify how close to zero is considered good enough. For exact symbolic matrices, you may sometimes need to specify something like ZeroTest->(FullSimplify[#]==0&) to force more to be done to test whether symbolic expressions are zero.

Here is a simple symbolic matrix with determinant zero.
In[13]:=
Click for copyable input
Out[13]=
The basis for the null space of m contains two vectors.
In[14]:=
Click for copyable input
Out[14]=
Multiplying m by any linear combination of these vectors gives zero.
In[15]:=
Click for copyable input
Out[15]=

An important feature of functions like LinearSolve and NullSpace is that they work with rectangular, as well as square, matrices.

When you represent a system of linear equations by a matrix equation of the form , the number of columns in  gives the number of variables, and the number of rows gives the number of equations. There are a number of cases.

Underdetermined
number of equations less than the number of variables; no solutions or many solutions may exist
Overdetermined
number of equations more than the number of variables; solutions may or may not exist
Nonsingular
number of independent equations equal to the number of variables, and determinant nonzero; a unique solution exists
Consistent
at least one solution exists
Inconsistent
no solutions exist

Classes of linear systems represented by rectangular matrices.

This asks for the solution to the inconsistent set of equations  and .
In[16]:=
Click for copyable input
LinearSolve[{{1}, {1}}, {1, 0}]
Out[16]=
This matrix represents two equations, for three variables.
In[17]:=
Click for copyable input
Out[17]=
LinearSolve gives one of the possible solutions to this underdetermined set of equations.
In[18]:=
Click for copyable input
Out[18]=
When a matrix represents an underdetermined system of equations, the matrix has a nontrivial null space. In this case, the null space is spanned by a single vector.
In[19]:=
Click for copyable input
Out[19]=
If you take the solution you get from LinearSolve, and add any linear combination of the basis vectors for the null space, you still get a solution.
In[20]:=
Click for copyable input
Out[20]=

The number of independent equations is the rank of the matrix MatrixRank[m]. The number of redundant equations isLength[NullSpace[m]]. Note that the sum of these quantities is always equal to the number of columns in m.

LinearSolve[m] generate a function for solving equations of the form 

Generating LinearSolveFunction objects.

In some applications, you will want to solve equations of the form  many times with the same , but different . You can do this efficiently in the Wolfram Language by using LinearSolve[m] to create a single LinearSolveFunction that you can apply to as many vectors as you want.

This creates a LinearSolveFunction.
In[21]:=
Click for copyable input
Out[21]=
You can apply this to a vector.
In[22]:=
Click for copyable input
f[{5, 7}]
Out[22]=
You get the same result by giving the vector as an explicit second argument to LinearSolve.
In[23]:=
Click for copyable input
Out[23]=
But you can apply f to any vector you want.
In[24]:=
Click for copyable input
Out[24]=
LeastSquares[m,b] give a vector  that solves the least-squares problem 

Solving least-squares problems.

This linear system is inconsistent.
In[25]:=
Click for copyable input
Out[25]=
LeastSquares finds a vector  that minimizes  in the least-squares sense.
In[26]:=
Click for copyable input
Out[26]=
[http://reference.wolfram.com/language/tutorial/SolvingLinearSystems.html]