dat geval kun je van de vectorvergelijking een stelsel

advertisement
xxii
Handleiding Maple 10
dat geval kun je van de vectorvergelijking een stelsel vergelijkingen maken in de vorm
van een verzameling of een lijst naar keuze en dit stelsel te lijf gaan met solve of
andere middelen, zoals eventueel met het Gröbner-pakket, zie paragraaf ??.
Hier volgt een voorbeeld van een vectorvergelijking waarvan een verzameling
vergelijkingen gemaakt wordt.
Voorbeeld 1.19 Vectorvergelijking
vergelijkingen

a2 + b
 2
 b −c
b
c
omzetten naar een verzameling

1
  
= 2 
3


Deze vectorvergelijking impliceert een verzameling vergelijkingen. We willen hiervan
de reële oplossing hebben.
>
>
>
restart; interface(displayprecision=3):
u,v:=Vector([a^2+b,b^2-c,b/c]),Vector([1.0,2,3]);

 

a2 + b
1.000
 2


b − c , 
u, v := 

  2 
b
3
c
verzameling:={seq(u[i]=v[i],i=1..nops(u))};
b
verzameling := {a2 + b = 1.000, b2 − c = 2, = 3}
c
use RealDomain in solve(verzameling,{a,b,c}) end;
{b = −1.257, a = 1.502, c = −0.419}, {b = −1.257, c = −0.419, a = −1.502}
Toelichting: Het activeren van het LinearAlgebra-pakket is voor dit voorbeeld niet
nodig. Je ziet dat je met één handomdraai het stelsel vergelijkingen kunt maken in de
vorm van een verzameling met accolades (of eventueel een lijst met vierkante haken).
Zie voor het maken van een rij met seq in paragraaf ?? en nops(u) betekent het
aantal operanden (kentallen) van de vector u (zie paragraaf ??).
In het begin van de sessie is de displayprecision (zie blz. ??) wat lager gezet met
het oog op de numerieke benadering van de oplossing en de overzichtelijkheid op het
scherm. Omdat we wellicht alleen geïnteresseerd zijn in de reële oplossingen van het
stelsel vergelijkingen is het hier interessant om in het Reële domein het commando
solve te laten werken met RealDomain (zie ook paragraaf ??). De oplossing in R3 van
deze vectorvergelijking is dus S = {(−1.502 , −1.257 , −0.419) , (1.502 , −1.257 , −0.419)}.
De mogelijkheden met eventuele complexe oplossingen worden op deze manier
weggelaten.
1.5.2
Lineaire vergelijkingen
Als de vectorvergelijking lineair is in de onbekenden, kan er met matrixrekening
gewerkt worden. De vergelijking A x = b is in feite een vectorvergelijking. Hierbij
stelt A een matrix voor, x is de onbekende vector en b is de rechterlid-vector. In feite
kan A als een lineaire afbeelding opgevat worden waarbij x op de vector b wordt
afgebeeld.
1 · Lineaire algebra
xxiii
1.5.2.1 Verschillende gedaanten van een stelsel lineaire vergelijkingen
Je kunt een stelsel lineaire vergelijkingen in verschillende gedaanten invoeren en
presenteren en eventueel omzetten van de ene naar de andere vorm.
Voorbeeld 1.20 Van een stelsel vergelijkingen naar een matrix en
omgekeerd
Je kunt beginnen met het opgeven van een stelsel vergelijkingen, maar je kunt ook
uitgaan van een coëfficiëntenmatrix en een rechterlid-vector.
>
restart; with(LinearAlgebra):
A,b:=Matrix([[2,0,1],[p,1,1],[4,p,0]]),Vector([0,3,8]);
  

0
2 0 1
  

A, b :=  p 1 1  ,  3 
8
4 p 0
> VectorVerg:=A . <x1,x2,x3> =b;

  
2 x1 + x3
0
  

VectorVerg :=  p x1 + x2 + x3  =  3 
4 x1 + p x2
8
TIP: Tik een spatie tussen > = ,anders wordt dit teken verkeerd opgevat!
>
StelselVerg:=GenerateEquations(A,[x1,x2,x3],b);
StelselVerg := [2 x1 + x3 = 0, p x1 + x2 + x3 = 3, 4 x1 + p x2 = 8]
>
>
A1,b1:=GenerateMatrix(StelselVerg,[x1,x2,x3]);

  
2 0 1
0

  
A1 , b1 :=  p 1 1  ,  3 
4 p 0
8
Ab:=GenerateMatrix(StelselVerg,[x1,x2,x3],augmented=true);


2 0 1 0


Ab :=  p 1 1 3 
4 p 0 8
Toelichting: De coëfficiëntenmatrix A en de rechterlid-vector b worden door middel
van een meervoudige toekenning ingevoerd waarna de vectorvergelijking gepresenteerd
kan worden. Met GenerateEquations uit het LinearAlgebra-pakket kan het stelsel
vergelijkingen in de vorm van een lijst verkregen worden uit A en b. Wel moet daarbij
de lijst met variabelen [x1 , x2 , x3 ] opgegeven worden in de gewenste volgorde. Het
werken met lijsten garandeert het handhaven van de volgorde! (Op deze lijst van
vergelijkingen kan eventuleel het commando solve (dat tegenwoordig ook op lijsten
werkt) worden losgelaten zodat direct het stelsel vergelijkingen opgelost kan worden.)
Andersom: uitgaande van een stelsel vergelijkingen (in de vorm van een lijst of
verzameling) kan in één keer de coëfficiëntenmatrix worden gegenereerd, samen met
de rechterlid-vector met het commando GenerateMatrix. Dit commando is bijzonder
krachtig en handig in het geval de vergelijkingen met de variabelen door elkaar
ingevoerd zijn! Doe dan metéén de tweevoudige toekenning om coëfficiëntenmatrix
en rechterlid-verctor te krijgen (hier A1 en B1 genoemd). Met behulp van de optie
augmented=true krijg je als uitvoer de aangevulde matrix die belangrijk kan zijn
xxiv
Handleiding Maple 10
voor eventueel verdere bewerking. Zie paragraaf 1.5.3 met de Gauss-eliminatie en ook
voor het werken met de Maplets, zie onder andere voorbeeld 1.23.
Voorbeeld 1.21 Met een Maplet de aangevulde matrix maken
Ten slotte kun je met de MatrixBuilder in de vorm van een Maplet de aangevulde
matrix én het stelsel vergelijkingen naast elkaar zien en eventueel aanpassen.
> Student:-LinearAlgebra:-MatrixBuilder(Ab); Zie Figuur 1.7
Figuur 1.7
Bij het afsluiten van dit Maplet, komt de aangevulde matrix in het worksheet te
staan, klaar voor verdere berekeningen.
1.5.2.2 Oplossen met de inverse matrix-methode
De vectorvergelijking in matrixvorm kan in bepaalde omstandigheden gemakkelijk
opgelost worden met de inverse matrix-methode. Dat houdt het volgende in:
A x = b ⇒ x = A−1 b
Deze methode werkt vanzelfsprekend alleen maar als de inverse matrix bestaat. Dat
wil zeggen dat A in ieder geval vierkant moet zijn en ook nog regulier (determinant
6= 0).
Voorbeeld 1.22 Oplossen van een stelsel lineaire vergelijkingen (inverse
matrix-methode)
Neem de vectorvergelijking in matrixvorm van voorbeeld 1.20 en maak de matrix
A en de rechterlid-vector b eerst actief. Met de inverse matrixmethode kan deze
vergelijking vervolgens opgelost worden.
>
Vector([x1,x2,x3])=simplify(MatrixInverse(A).b);


3p − 8
  −2 p + p2 − 4 



x1
4 (−7 + 2 p) 
 



 x2  = 

2
 −2 p + p − 4 

x3
2 (3 p − 8) 
−
−2 p + p2 − 4
1 · Lineaire algebra
xxv
Toelichting: Met de inverse matrix-methode kan metéén de oplossingsvector
gegenereerd worden. De breuken worden herleid met simplify dat tegenwoordig
ook direct op het gehele object (vector) kan worden toegepast. Als er eventueel nog
andere manipulaties met de kentallen van een vector gedaan moeten worden, kun je
met map proberen. Elk element van de vector x afzonderlijk, kan daarmee in één keer
nog behandeld worden. Zie voor het commando map paragraaf ??.
1.5.2.3 Afhankelijke, onafhankelijke en strijdige stelsels lineaire vergelijkingen
Aan de hand van enkele voorbeelden wordt een aantal mogelijkheden getoond hoe te
handelen in verschillende omstandigheden.
Voorbeeld 1.23 Onafhankelijk stelsel vergelijkingen
Gegeven is het stelsel vergelijkingen:


 x1 + 3 x2 + 7 x3 = 15
x1 + 4 x2 +
x3 = 20


x1 + 2 x2 + 3 x3 = 10
Voer deze vergelijkingen stuk voor stuk in en controleer ze. De vergelijkingen
mogen ook in andere volgorde ingevoerd worden met de variabelen door elkaar, het
matrix-systeem brengt er automatisch ordening in!
>
>
restart: with(LinearAlgebra):
verg1:=x1+3*x2+7*x3=15; verg2:=x1+4*x2+x3=20; verg3:=x1+2*x2+3*x3=10;
verg1 := x1 + 3 x2 + 7 x3 = 15
verg2 := x1 + 4 x2 + x3 = 20
verg3 := x1 + 2 x2 + 3 x3 = 10
A,b:=GenerateMatrix([verg1,verg2,verg3],[x1,x2,x3]);

 

1 3 7
15

 

A, b :=  1 4 1  ,  20 
1 2 3
10
Met de coëfficiëntenmatrix is meteen de oplossing te genereren met de inverse
matrix-methode: A x = b ⇒ x = A−1 b.
>
Vector([x1,x2,x3])=MatrixInverse(A).b;

  
x1
0

  
 x2  =  5 
x3
0
Met de aangevulde matrix kun je op verschillende manieren op onderzoek uitgaan:
>
>
Ab:=GenerateMatrix([verg1,verg2,verg3],[x1,x2,x3],augmented=true);


1 3 7 15


Ab :=  1 4 1 20 
1 2 3 10
Student:-LinearAlgebra:-LinearSystemPlotTutor( Ab );
Figuur 1.8 geeft in het Maplet van de LinearSystemPlotTutor een visualisatie van
het lineaire systeem: de drie lineaire vergelijkingen met drie variabelen stellen drie
xxvi
Handleiding Maple 10
vlakken in de ruimte voor en wellicht is te zien dat inderdaad deze vlakken door één
punt gaan: het punt (0, 5, 0).
Figuur 1.8
>
>
Determinant(A);
−10
solve({verg1,verg2,verg3},{x1,x2,x3});
{x1 = 0, x3 = 0, x2 = 5}
Wellicht ten overvloede is te zien dat de determinant van de coëfficiëntenmatrix
ongelijk is aan 0 en dat ook direct een oplossing met solve gevonden had kunnen
worden omdat we te maken hadden met een onafhankelijk stelsel vergelijkingen. De
aangevulde matrix Ab geeft goede mogelijkheden om op onderzoek te gaan. In het
Maplet kan verder onderzocht worden wat het effect is van het veranderen van een
van de coëfficiënten van de matrix.
Voorbeeld 1.24 Afhankelijk stelsel vergelijkingen
Gegeven is het stelsel vergelijkingen:


 2 x1 + 3 x2 + 7 x3 = 15
x1 + 4 x2 +
x3 = 20


x1 + 2 x2 + 3 x3 = 10
Dit stelsel is bijna hetzelfde als van voorbeeld 1.23. Alleen in de eerste vergelijking is
de coëfficiënt van x1 veranderd. In het Maplet kan het stelsel veranderd worden en
het effect kan meteen zichtbaar gemaakt worden in de grafiek van de drie vlakken die
nu niet meer door één punt gaan maar een snijlijn hebben. Figuur 1.9 laat zien wat
het effect kan zijn van een kleine verandering aan een van de coëfficiënten.
Er zijn in dit geval dus oneindig veel oplossingen die allemaal op de snijlijn liggen
van de drie vlakken.
>
restart: with(LinearAlgebra):
verg1:=2*x1+3*x2+7*x3=15: verg2:=x1+4*x2+x3=20: verg3:=x1+2*x2+3*x3=10:
A,b:=GenerateMatrix([verg1,verg2,verg3],[x1,x2,x3]): Determinant(A);
0
1 · Lineaire algebra
xxvii
Figuur 1.9
>
solve({verg1,verg2,verg3},{x1,x2,x3});
{x2 = 5 + x3 , x1 = −5 x3 , x3 = x3 }
Toelichting: De inverse matrixmethode werkt nu niet, want de determinant van
de vierkante matrix is gelijk aan 0 (singuliere matrix ). Aan de oplossing van het
stelsel (verkregen met solve), is te zien dat er geen eenduidige oplossing is. Immers
x3 is vrij te kiezen en x1 en x2 zijn uitgedrukt in x3 . Dit is een voorbeeld van een
afhankelijk stelsel lineaire vergelijkingen. Om dat er één variabele vrij te kiezen is,
heeft dit stelsel dus één vrijheidsgraad en kun je bijvoorbeeld x3 = λ stellen. De
oplossing (vergelijking van de snijlijn) kan in de vorm van een vectorvoorstelling
 


0
−5
 


geschreven worden: x=  5  + λ  1  . Zie voor meer informatie over deze
0
1
stelsels bij de Eliminatie van Gauss paragraaf 1.5.3.
Voorbeeld 1.25 Strijdig stelsel vergelijkingen
Het volgende stelsel vergelijkingen is een strijdig stelsel. In vergelijking met het stelsel
van voorbeeld 1.24, is er in de rechterlidvector het tweede kental veranderd. Je kunt
in de LinearSystemPlotTutor wijzigingen aanbrengen en meteen het effect zien in de
visualisatie. Zie Figuur 1.10.
> restart: with(LinearAlgebra):
> verg1:=2*x1+3*x2+7*x3=15; verg2:=x1+4*x2+x3=22; verg3:=x1+2*x2+3*x3=10;
> Ab:=GenerateMatrix([verg1,verg2,verg3],[x1,x2,x3],augmented=true);
> solve({verg1,verg2,verg3},{x1,x2,x3});
> Student:-LinearAlgebra:-LinearSystemPlotTutor( Ab ); Zie Figuur 1.10.
Toelichting: Het blijkt dat als je met solve werkt, dat er dan geen enkele oplossing
komt. Met de aangevulde matrix Ab kan onderzocht worden wat er aan de hand is.
Het blijkt dat de vlakken elkaar twee aan twee snijden volgens lijnen die evenwijdig
zijn. Er is dus geen punt aan te wijzen dat op alle drie vlakken ligt; het stelsel is dan
ook een strijdig stelsel.
xxviii
Handleiding Maple 10
Figuur 1.10
1.5.3
Eliminatiemethode van Gauss
De eliminatiemethode van Gauss is een systeem om rijen van een matrix te
manipuleren (veegmethode) zodat er een nieuwe matrix ontstaat die gelijkwaardig is
aan de oude matrix. Zoals in de vorige voorbeelden reeds aan de orde is gekomen,
representeren de rijen van de aangevulde coëfficiëntenmatrix de vergelijkingen
inclusief het rechterlid.
Het vegen van een matrix met pen en papier kan getraind worden met een Maplet,
LinearSolveTutor uit het sub-pakket LinearAlgebra van het Student-pakket.
> Student:-LinearAlgebra:-LinearSolveTutor();
De eliminatiemethode van Gauss kan ook numeriek uitgevoerd worden. Zet in dat
geval de displayprecision wat lager (zie blz. ??). Een waarschuwing is hier dan
wel op zijn plaats: als de coëfficiëntenmatrix gelijk aan 0 is of bijna gelijk aan
0, dan hebben we te maken met een slecht geconditioneerd stelsel. Er hoeft dan
maar een kleine numerieke afronding plaats te vinden waardoor de oplossing zeer
onbetrouwbaar kan worden. Immers bij een afhankelijk stelsel zoals in voorbeeld 1.24,
kan een kleine storing in de coëfficiënten van de matrix ervoor zorgen dat een van de
vlakken een beetje kantelt en de vlakken elkaar wél in één punt snijden.
In de volgende voorbeelden wordt getoond welke informatie je krijgt als de
Eliminatiemethode van Gauss wordt toegepast.
Voorbeeld 1.26 Onafhankelijk stelsel met Gauss
Het stelsel vergelijkingen van voorbeeld 1.23 wordt opgelost met de Eliminatiemethode
van Gauss.
>
restart; with(LinearAlgebra):
verg1:=x1+3*x2+7*x3=15: verg2:=x1+4*x2+x3=20:verg3:=x1+2*x2+3*x3=10:
Ab:=GenerateMatrix([verg1,verg2,verg3],[x1,x2,x3],augmented=true);


1 3 7 15


Ab :=  1 4 1 20 
1 2 3 10
Op de aangevulde matrix Ab wordt nu het veegsysteem van Gauss toegepast. Het
komt er eigenlijk op neer dat je met de vergelijkingen manipuleert door middel van
lineaire bewerkingen.
1 · Lineaire algebra
xxix
>
AbGauss:=GaussianElimination(Ab);


1 3
7 15


AbGauss :=  0 1 −6 5 
0 0 −10 0
Na het ‘vegen’ heeft de onderste rij nu de meeste nullen en het ziet er allemaal
wat schoner uit. Het stelsel vergelijkingen dat hiermee overeenkomt is gelijkwaardig
aan het oorspronkelijke stelsel maar nu gemakkelijker (uit het hoofd) op te lossen.
Voor de duidelijkheid wordt dit geveegde stelsel op het scherm gepresenteerd met
GenerateEquations.
>
GenerateEquations(AbGauss,[x1,x2,x3]);
[x1 + 3 x2 + 7 x3 = 15, x2 − 6 x3 = 5, −10 x3 = 0]
Duidelijk is te zien dat je van achter naar voor nu uit het hoofd de vergelijkingen
achtereenvolgens kunt oplossen en kunt beschikken over de waarden van de onbekenden. Dit achterwaarts substitueren (terugsubstitutie), kan met BackwardSubstitute
dat werkt op de aangevulde matrix, die inmiddels geveegd is met de Gaussmethode.
>
Vector([x1,x2,x3])=BackwardSubstitute(AbGauss);

  
0
x1
  

=
 x2   5 
0
x3
Als je wilt kun je nog drastischer verder gaan vegen tot er allemaal nullen en enen
in de aangevulde matrix staan, met het commando ReducedRowEchelonForm. Dit
wordt de GaussJordan-methode genoemd.
>
AbGaussJordan:=ReducedRowEchelonForm(Ab);


1 0 0 0


AbGaussJordan :=  0 1 0 5 
0 0 1 0
Hierna is zelfs heel gemakkelijk uit het hoofd de oplossing van het stelsel vergelijkingen
te maken.
>
GenerateEquations(AbGaussJordan,[x1,x2,x3]);
[x1 = 0, x2 = 5, x3 = 0]
TIP: Met de Tutor in de vorm van een Maplet is de veegmethode met pen en papier
te oefenen.
> Student:-LinearAlgebra:-LinearSolveTutor();
Voorbeeld 1.27 Afhankelijk en strijdig stelsel met Gauss
Los het stelsel vergelijkingen van voorbeeld 1.24 (afhankelijk stelsel) en 1.25 (strijdig
stelsel) op met de Gauss-eliminatiemethode. Werk níet numeriek in het geval dat
de determinant van de coëfficiëntenmatrix gelijk is aan 0 want dan kan het zijn dat
het selsel niet meer afhankelijk of strijdig is door numerieke afrondingen die kunnen
onstaan.
Na het vegen met Gauss van de aangevulde coëfficiëntenmatrix van het afhankelijke
stelsel krijg je één nulrij. Je zult zien dat je nu inderdaad één variabele (x3 ) vrij
kunt kiezen, (één vrijheidsgraad) net als bij de methode met solve. Maple stelt deze
parameter gelijk aan _t1 . De uitvoer is hier niet afgedrukt. Bij het strijdige stelsel
xxx
Handleiding Maple 10
zal bij de geveegde matrix opvallen dat de onderste rij uit nullen bestaat behalve het
laatse element van die rij. Dit duidt op een strijdige vergelijking waarmee het hele
stelsel dus strijdig is.
Het voordeel van de Gauss-eliminatie is dat er een onderzoek kan plaatsvinden over
het aantal onafhankelijke vergelijkingen in een stelsel en er kan iets gezegd worden
over het aantal vrijheidsgraden van de oplossing.
1.5.4
Kleinstekwadratenmethode
Voorbeeld 1.28 Een overbepaald stelsel vergelijkingen
Gegeven is het overbepaalde stelsel vergelijkingen.


y = 2
 x −
x + 2y = 2


8x +
y = 14
Dit stelsel vergelijkingen (drie lijnen in het platte vlak) is niet op te lossen met solve
en ook niet met de Gauss-eliminatiemethode. Er zijn namelijk meer vergelijkingen
dan onbekenden! De coëfficiëntenmatrix is niet vierkant en de inverse matrix-methode
werkt dan ook niet. Van dit stelsel wil je met de kleinste kwadraten-methode een
zo goed mogelijke oplossing hebben. Vorm daartoe de coëfficiëntenmatrix A en de
rechterlid-vector b. Met het commando LeastSquares is een oplossing van het stelsel
te formuleren waaraan ten grondslag ligt dat |A x − b| minimaal moet zijn.
>
>
restart; with(LinearAlgebra):interface(displayprecision=3):
verg1,verg2,verg3:=x-y=2.0,x+2*y=2,8*x+y=14;
verg1 , verg2 , verg3 := x − y = 2.000, x + 2 y = 2, 8 x + y = 14
A,b:=GenerateMatrix([verg1,verg2,verg3],[x,y]);

 

1 −1
2.000

 

A, b :=  1
2 ,  2 
8
>
>
LeastSquares(A,b);
1
14
"
#
1.752
0.038
Ab:=GenerateMatrix([verg1,verg2,verg3],[x,y],augmented=true):
Student:-LinearAlgebra:-LinearSystemPlotTutor( Ab );
Toelichting: Er is een ander commando met dezelfde naam LeastSquares in het
Curve fitting-pakket. Zorg dat niet beide pakketten tegelijk geactiveerd moeten
worden, anders kan het van belang zijn welk pakket het eerst geopend wordt. Zie
paragraaf ??. Als het stelsel vergelijkingen is ingevoerd, kan de matrix A en de
rechterlid-vector b worden gegenereerd. Met de LinearSystemPlotTutor (die werkt
met de aangevulde matrix Ab) is in Figuur 1.11 te zien dat ergens in het driehoekje,
gevormd door de drie lijnen, de oplossing (1.752, 0.038) ligt.
1 · Lineaire algebra
Figuur 1.11
xxxi
Download