IX1303 Linjär algebra

Linjära system och matriser m.m.

Ett tvåtusenårigt exempel

Ett tvåtusenårigt exempel som ekvationssystem

x +2y + 3z =39    (1)
   x +3y + 2z =34    (2)
3x +2y +    z =26    (3)

Ett linjärt ekvationssystem med tre obekanta

Ett tvåtusenårigt exempel som Totalmatris

totalmatris={{1,2,3,39},{1,3,2,34},{3,2,1,26}};
MatrixForm[totalmatris]

Ett tvåtusenårigt exempel som Matris-ekvation

rismatris={{1,2,3},{1,3,2},{3,2,1}};
MatrixForm[rismatris].MatrixForm[{{x},{y},{z}}]==MatrixForm[{{39},{34},{26}}]

Ett tvåtusenårigt exempel med inversmatris

Inversmatris

risinvers=Inverse[rismatris];
%//MatrixForm

risinvers.{{39},{34},{26}}

M (M^(-1))=M (M^(-1))= ?

När gäller det?

rismatris.risinvers;
%//MatrixForm

risinvers.rismatris==rismatris.risinvers

Det[rismatris]

x=(M^(-1)) b

HL={{39},{34},{36}};
invlösning=risinvers.HL

Flatten[ ] och Partition[ ]

Praktiskt om man vill formatera om listor

?Flatten

invvektor=invlösning//Flatten

?Partition

Partition[invvektor,1]

Lösningsmängder

Tre enkla ekvationssystem

Det första

(Subscript[x, 1])-2(Subscript[x, 2])=-1
-(Subscript[x, 1])+3(Subscript[x, 2])=   3

Addera rad 1 och 2 så får vi

(Subscript[x, 1])-2(Subscript[x, 2])=-1
               (Subscript[x, 2])=   2   => (Subscript[x, 1])=3

Dvs. vi får en UNIK lösning

x=(3, 2)

Figur(er)

ContourPlot[{x-2y==-1,-x+3y==3},{x,-1,5},{y,-1,5}]

ContourPlot[{x-2y==-1,-x+3y==3},{x,-1,5},{y,-1,5},Axes->True]

ContourPlot[{x-2y==-1,-x+3y==3},{x,-1,5},{y,-1,5},Axes->True,Frame->False]

Det andra

(Subscript[x, 1])-2(Subscript[x, 2])=-1
-(Subscript[x, 1])+2(Subscript[x, 2])=   3

Addera rad 1 och 2 så får vi

(Subscript[x, 1])-2(Subscript[x, 2])=-1
               0=   2     OSANT!

Dvs. vi får en INGEN lösning, systemet saknar lösning

Figur

ContourPlot[{x-2y==-1,-x+2y==3},{x,-1,5},{y,-1,5},Axes->True,Frame->False]

Det tredje

(Subscript[x, 1])-2(Subscript[x, 2])=-1
-(Subscript[x, 1])+2(Subscript[x, 2])=   1

Addera rad 1 och 2 så får vi

(Subscript[x, 1])-2(Subscript[x, 2])=-1
               0=   0     SANT för alla värden på (Subscript[x, 2])

Dvs. vi får  MÅNGA lösningar, varje värde på (Subscript[x, 2]) ger ett värde på (Subscript[x, 1])

Dvs. vi får en  PARAMETER-lösning:

x=((Subscript[x, 1]), (Subscript[x, 2]))=(2(Subscript[x, 2]) -1, (Subscript[x, 2]))=(-1, 0)+(2(Subscript[x, 2]) , (Subscript[x, 2]))  
=(-1, 0)+(Subscript[x, 2])(2 , 1)

Alltså:

x=(-1, 0)+t(2 , 1)

Figur

ContourPlot[{x-2y==-1,-x+2y==1},{x,-1,5},{y,-1,5},Axes->True,Frame->False]

Tre möjliga fall

Vi kan få ett konsistent system, dvs. ett system som har lösningar
	
	1. En unik lösning
	
	2. Många lösningar (alltid en parameterlösning)
	
Vi kan få ett inkonsistent system, dvs. ett system som saknar lösningar, dvs
	
	3. Ingen lösning

Exempel

Vi definierar en totalmatris

rad1={3,7,-4,4,-3};
rad2={-4,1,2,1,4};
rad3={5,8,3,7,-3};
rad4={-7,4,3,-3,8};

MatrixForm[TotalMatris={rad1,rad2,rad3,rad4}]

Vi reducerar matrisen

MatrixForm[ReduceradMatris=RowReduce[TotalMatris]]

Hur ser lösningsmängden ut?

En annan totalmatris

Vi byter ut en av ekvationerna

rad5={7,6,-6,3,-7};
MatrixForm[NyTotalMatris={rad1,rad2,rad3,rad5}]

MatrixForm[NyReduceradMatris=RowReduce[NyTotalMatris]]

Hur ser lösningsmängden ut?

Ett homogent system

Ett homogent system är en linjärt ekvationssystem, där alla ekvationerna har nollor i högerledet.

r1={1,1,1};
r2={2,3,-4};
r3={6,-1,12};
x={x1,x2,x3};
ekv1=r1.x==0
ekv2=r2.x==0
ekv3=r3.x==0

Vi reducerar koefficientmatrisen

MatrixForm[totmat=RowReduce[{r1,r2,r3}]]

?

Enhetsmatris!

Vad innebär detta?

Solve[{ekv1,ekv2,ekv3}]

Ett homogent system till

rr1={2,1,-1,0};
rr2={-1,3,2,0};
rr3={1,4,1,0};
MatrixForm[totmat2=RowReduce[{rr1,rr2,rr3}]]

Vad inebär detta?

Ur en kinesisk lärobok från 500-talet

"En tupp kostar fem mynt, en höna kostar tre mynt och för ett mynt kan man köpa tre kycklingar.

Vi använder 100 mynt och köper 100 fåglar för dem. 

Hur många kycklingar, tuppar och hönor kan vi köpa?"

Lösning

Antag att vi köper (Subscript[x, 1])tuppar, (Subscript[x, 2])hönor och (Subscript[x, 3]) kycklingar

e1=5x1+3x2+x3/3==100;
e2=x1+x2+x3==100;
Solve[{e1,e2}]

{{tupp,höna}}={x1,x2}/.%

Antalet tuppar och hönor måste vara positivt

Reduce[{tupp>0,höna>0}]

N[%]

Antalet tuppar och hönor måste vara heltal, dvs (Subscript[x, 3]) måste vara jämnt delbart med 3. 
(Subscript[x, 3])= 75  är då ett tillåtet värde, liksom nedanstående värden

Table[n,{n,75,85,3}]

Möjliga kombinationer

Table[{tupp,höna,x3},{x3,75,85,3}]

Kurvanpassning 1

Quit[]

En kurva som skall gå genom punkterna:

p1={-1,0};p2={0,1};p3={1,0};p4={2,-15};

Plotta punkterna

?ListPlot

punktplot=ListPlot[{p1,p2,p3,p4},PlotStyle->PointSize[.02],PlotRange->{-16,5}]

Anpassa till ett tredjegradsploynom

y[x_]:=a+b x+ c (x^2)+d (x^3)

Bilda en ekvation per punkt

pol1=y[-1]==0
pol2=y[0]==1
pol3=y[1]==0
pol4=y[2]==-15

Lös ekvationssystemet

{{a,b,c,d}}={a,b,c,d}/.Solve[{pol1,pol2,pol3,pol4}]

Plotta kurvan

kurva=Plot[y[x],{x,-1,2}]

Plotta punkter och kurva i samma figur

Show[kurva,punktplot]

Kurvanpassning 2

Använd Fit

?Fit

kurva2=Fit[{p1,p2,p3,p4},{1,x,(x^2), (x^3)},x]

Plot[kurva2,{x,-1,2}]

Flöden i nätverk

Grafer kan plottas med GraphPlot

?GraphPlot

GraphPlot[{1->5,2->5,3->5,4->5}]

GraphPlot[{1->5,2->5,3->5,4->5},DirectedEdges->True]

GraphPlot[{1->5,2->5,3->5,4->5},VertexLabeling->True,DirectedEdges->True]

GraphPlot[{{1->5,50},{2->5,x1},{3->5,40},{5->4,x2}},VertexLabeling->True,DirectedEdges->True]

Flödet i en nod (knutpunkt)

ekv1=50+x1+40-x2==0
Solve[ekv1]

Ett nät med flera noder.

GraphPlot[{{1->5,50},{6->2,x1},{7->3,40},{4->7,x2},{5->6,x3},{6->7,100},{7->5,x4}},VertexLabeling->True,DirectedEdges->True]

Varje nod ger en ekvation

ekvnod5=50+x4-x3==0
ekvnod6=x3-x1-100==0
ekvnod7=100-40+x2-x4==0

Lös ekvationssystemet

Solve[{ekvnod5,ekvnod6,ekvnod7}]

{{x1->-50+x4,x3->50+x4,x2->-60+x4}}

Solve[{ekvnod5,ekvnod6,ekvnod7},{x1,x3,x4}]

?

Blick framåt igen...

kod[x1_,x2_]=(({{1, 3}, {2, 5}})).(({{x1}, {x2}}))

kod[5,42]

kod[7,19]

avkod[x1_,x2_]=(({{-5, 3}, {2, -1}})).(({{x1}, {x2}}))

avkod[131,220]

(({{1, 3}, {2, 5}})).(({{-5, 3}, {2, -1}}))
MatrixForm[%]