PNS-ratkaisun havainnollistus: 3x2-matriisin tapaus

Tarkastellaan matriisiyhtälöä Ax = b, missä A on 3x2-matriisi, ja siten yhtälöllä ei tavallisesti ole oikeaa ratkaisua. Nimittäin: kun ajatellaan tilannetta lineaarisena funktiona x -> Ax, niin koska kuva-avaruus on (enintään) 2-ulotteinen maaliavaruuden R3 aliavaruus, ei kaikkia avaruusvektoreita b voida mitenkään saavuttaa.
Kuviossa on vasemmalla puolella lähtöavaruus R2 ja oikealla maaliavaruus R3, jossa kuvajoukkotasosta näkyy eräs origokeskinen osa.
Vasemman kuvion muuttujaa x voi muutella hiirellä vetäen suoraan x1x2-tasossa ja matriisia A kuvion alareunassa suorilla olevien pisteiden avulla (Change A).
Avaruusvektoria b voit muuttaa tarttumalla sen koordinaatteihin b1, b2 ja b3.

${ PNS 3x2-matriisille #CODEBASE = "http://www.joensuu.fi/matematiikka/java/javasketchpad" $} #CODE = "GSP.class" #CODEBASE = "../jsp" #ARCHIVE = "jsp4.jar" #WIDTH = 806 #HEIGHT = 420 #ALIGN = Center *Frame = 1 *TextFont = "Helvetica" *TextBold = 1 *TextSize = 18 *LabelFont = "Courier" *LabelBold = 1 *MeasureFont = "Courier" *MeasureSize = 14 *MeasureBold = 1 *MeasureInDegrees = 1 *DirectedAngles = 0 *Backblue = 255 *BackGreen = 255 *Backred = 255 ${ $x1T FixedText(410, 360,'x1')[ plain, font('Helvetica'), bold, red, justifyCenter]; $x2T FixedText(765, 300,'x2')[ plain, font('Helvetica'), bold, blue, justifyCenter]; $x3T FixedText(588, 10,'x3')[ plain, font('Helvetica'), bold, color(0,150,0), justifyCenter]; $} ${ Dividing vertical segment $UpperPt2 FixedPoint(750, 20)[hidden]; $LowerPt2 FixedPoint(750,520)[hidden]; $VLine2 Segment($UpperPt2,$LowerPt2)[black,thick]; $} $UpperPt FixedPoint(400,100)[hidden]; $LowerPt FixedPoint(400,420)[hidden]; $VLine Segment($UpperPt,$LowerPt)[black,thick]; $reset FixedText(720, 15, 'Reset=''R''')[red,bold,justifyLeft]; $AText FixedText(50, 35, 'A')[black,bold,justifyCenter]; $xText FixedText(113, 35, 'x')[black,bold,justifyCenter]; $AxText FixedText(170, 35, 'Ax = b''')[black,bold,justifyCenter,hidden]; $x1Text FixedText(115, 57, 'x1')[black,bold,justifyCenter]; $x2Text FixedText(115, 75, 'x2')[black,bold,justifyCenter]; $eqsign FixedText(133, 65, '=')[black,bold,justifyCenter]; $bText FixedText(220, 35, 'b')[black,bold,justifyCenter]; ${ Lähtötaso R2 $} $OrigoR2 FixedPoint(200,200)[black, bold, label('0')]; $xykkR2 UnitPoint($OrigoR2, 50)[white, bold, label('1'),hidden]; $xykkR2seen Translation($xykkR2, 0,0)[plain, white, bold, label('1')]; $coord Origin&Unit($OrigoR2,$xykkR2)[hidden]; $XaxR2 AxisX($coord)[black,hidden]; $YaxR2 AxisY($coord)[black,hidden]; $LEx FixedPoint( 5,200)[hidden]; $REx FixedPoint(395,200)[hidden]; $XaxVis Segment($LEx,$REx)[black]; $UEy FixedPoint(200,85)[hidden]; $LEy FixedPoint(200,380)[hidden]; $YaxVis Segment($UEy,$LEy)[black]; $yykkR2 Translation($OrigoR2,0,-50)[plain, white, bold, label('1')]; $x1x2 Point(300,300)[red,label('x')]; $SOx1x2 Segment($OrigoR2,$x1x2)[black]; $x1Parx2 Parallel($YaxR2,$x1x2)[blue,hidden]; $Rptx1 Intersect($XaxR2,$x1Parx2)[black, label('x1')]; $Sx1x2x1 Segment($x1x2,$Rptx1)[blue]; $x1 Ratio/Points($OrigoR2,$xykkR2,$Rptx1,0,120,'x1 = ')[black]; $x2Parx2 Parallel($XaxR2,$x1x2)[red,hidden]; $Rptx2 Intersect($YaxR2,$x2Parx2)[black, label('x2')]; $Sx1x2x2 Segment($x1x2,$Rptx2)[red]; $x2 Ratio/Points($OrigoR2,$yykkR2,$Rptx2,0,140,'x2 = ')[black]; ${ The real lines for A columns $} $LUpp FixedPoint(0,380)[hidden]; $LLow FixedPoint(0,420)[hidden]; $RLow FixedPoint(400,420)[hidden]; $RUpp FixedPoint(400,380)[hidden]; $ULine Line($LUpp,$RUpp)[black, hidden]; $RectA Polygon($LUpp,$LLow,$RLow,$RUpp,$LUpp)[yellow, hidden]; $ROa1 FixedPoint(200,390)[black,label('0'), hidden]; $Refa1 Translation($ROa1,25,0)[hidden]; $Raya1 Ray($Refa1,$ROa1)[black, hidden]; $Rykka1 Point on object($Raya1,1)[white, label('1'), hidden]; $R1a1 FixedPoint(225,390)[white,label('1'), hidden]; $RLa1 Line($Rykka1,$ROa1)[black, hidden]; $LE1 FixedPoint(0,390)[hidden]; $RE1 FixedPoint(400,390)[hidden]; $SRLa1 Segment($LE1,$RE1)[black,hidden]; $ROa2 FixedPoint(200,405)[black,label('0'), hidden]; $Refa2 Translation($ROa2,25,0)[hidden]; $Raya2 Ray($Refa2,$ROa2)[black, hidden]; $Rykka2 Point on object($Raya2,1)[white, label('1'), hidden]; $R1a2 FixedPoint(225,405)[white,label('1'), hidden]; $RLa2 Line($Rykka2,$ROa2)[black, hidden]; $LE2 FixedPoint(0,405)[hidden]; $RE2 FixedPoint(400,405)[hidden]; $SRLa2 Segment($LE2,$RE2)[black,hidden]; ${ The real b line $LbUpp FixedPoint(772,0)[hidden]; $LbLow FixedPoint(772,386)[hidden]; $RbLow FixedPoint(806,386)[hidden]; $RbUpp FixedPoint(806,0)[hidden]; $UbLine Line($LUpp,$RUpp)[black, hidden]; $Rectb Polygon($LbUpp,$LbLow,$RbLow,$RbUpp,$LbUpp)[color(200,240,200), hidden]; $ROb FixedPoint(780,200)[black,label('0'), hidden]; $Refb Translation($ROb,0,25)[hidden]; $Rayb Ray($Refb,$ROb)[black, hidden]; $Rykkb Point on object($Rayb,1)[white, label('1'), hidden]; $R1b FixedPoint(780,175)[white,label('1'), hidden]; $RLb Line($Rykkb,$ROb)[black, hidden]; $bUp FixedPoint(780,0)[hidden]; $bLo FixedPoint(780,385)[hidden]; $SLb Segment($bUp,$bLo)[black,hidden]; $Rptb1 Point on object($RLb,-4)[label('b1'), red, layer(10), hidden]; $b1 Ratio/Points($ROb,$Rykkb,$Rptb1,205,50,'')[red]; $Rptb2 Point on object($RLb,4)[label('b2'), blue, layer(10), hidden]; $b2 Ratio/Points($ROb,$Rykkb,$Rptb2,205,65,'')[blue]; $Rptb3 Point on object($RLb,2)[label('b3'), color(0,150,0), layer(10), hidden]; $b3 Ratio/Points($ROb,$Rykkb,$Rptb3,205,80,'')[color(0,150,0)]; $} ${ The virtual space $} $OrigoR3 FixedPoint(600,210)[black, label('0')]; $xykkRef Point(580,220)[red, hidden]; $yykkRef Point(625,215)[blue, hidden]; $zykkRef Point(600,190)[green,hidden]; $xRay Ray($xykkRef,$OrigoR3)[ hidden]; $xykk Point on object( $xRay,1)[ white, label('1')]; $xRL Line($xykk,$OrigoR3)[ red,hidden]; $yRay Ray($yykkRef,$OrigoR3)[ hidden]; $yykk Point on object( $yRay,1)[ white, label('1')]; $yRL Line($yykk,$OrigoR3)[ blue,hidden]; $zRay Ray($zykkRef,$OrigoR3)[ hidden]; $zykk Point on object( $zRay,1)[ white, label('1')]; $zRL Line($zykk,$OrigoR3)[color(0,150,0),hidden]; $zUp FixedPoint(600,0)[hidden]; $zLo FixedPoint(600,385)[hidden]; $zvisib Segment($zUp,$zLo)[color(0,150,0),hidden]; $xM Point on object($xRL,-7)[red]; $xP Point on object($xRL, 7)[red]; $Imx1 ImageOnPoint($xP, '../Projektiot/images/x1.gif'); $xRLvis Segment($xM,$xP)[red]; $yM Point on object($yRL,-7)[blue]; $yP Point on object($yRL, 7)[blue]; $Imx2 ImageOnPoint($yP, '../Projektiot/images/x2.gif'); $yRLvis Segment($yM,$yP)[blue]; $zM Point on object($zRL,-10)[color(0,150,0)]; $zP Point on object($zRL, 10)[color(0,150,0)]; $Imx3 ImageOnPoint($zP, '../Projektiot/images/x3.gif'); $zRLvis Segment($zM,$zP)[color(0,150,0)]; $xb1 Point on object($xRL,-3)[label('b1'), red, layer(10)]; $b1 Ratio/Points($OrigoR3,$xykk,$xb1,205,50,'')[red]; $yb2 Point on object($yRL,3)[label('b2'), blue, layer(10)]; $b2 Ratio/Points($OrigoR3,$yykk,$yb2,205,65,'')[blue]; $zb3 Point on object($zRL,2)[label('b3'), color(0,150,0), layer(10)]; $b3 Ratio/Points($OrigoR3,$zykk,$zb3,205,80,'')[color(0,150,0)]; ${ $xb1 Dilation/3PtRatio($xykk,$OrigoR3,$ROb,$Rykkb,$Rptb1)[red, label('b1')]; $yb2 Dilation/3PtRatio($yykk,$OrigoR3,$ROb,$Rykkb,$Rptb2)[blue, label('b2')]; $zb3 Dilation/3PtRatio($zykk,$OrigoR3,$ROb,$Rykkb,$Rptb3)[color(0,150,0), label('b3')]; $} $b1b2 VectorTranslation($xb1,$OrigoR3,$yb2)[magenta, label('(b1,b2)')]; $Sb1b2x Segment($xb1,$b1b2)[blue]; $Sb1b2y Segment($yb2,$b1b2)[red]; $SOb1b2 Segment($OrigoR3,$b1b2)[magenta]; $b VectorTranslation($b1b2,$OrigoR3,$zb3)[black, label('b')]; $Sbb1b2 Segment($b1b2,$b)[color(0,150,0)]; $Sbb3 Segment($zb3,$b)[black]; $SOb Segment($OrigoR3,$b)[black,thick]; $Rpta11 Point on object($RLa1,4)[label('a11'), red, layer(10),hidden]; $a11 Ratio/Points($ROa1,$Rykka1,$Rpta11,0,50,'')[red]; $Rpta21 Point on object($RLa1,0)[label('a21'), blue, layer(10),hidden]; $a21 Ratio/Points($ROa1,$Rykka1,$Rpta21,0,65,'')[blue]; $Rpta31 Point on object($RLa1,0)[label('a31'),color(0,150,0), layer(10),hidden]; $a31 Ratio/Points($ROa1,$Rykka1,$Rpta31,0,80,'')[color(0,150,0)]; $Rpta12 Point on object($RLa2,0)[label('a12'), red, layer(10),hidden]; $a12 Ratio/Points($ROa2,$Rykka2,$Rpta12,52,50,'')[red]; $Rpta22 Point on object($RLa2,4)[label('a22'),blue, layer(10),hidden]; $a22 Ratio/Points($ROa2,$Rykka2,$Rpta22,52,65,'')[blue]; $Rpta32 Point on object($RLa2,0)[label('a32'),color(0,150,0), layer(10),hidden]; $a32 Ratio/Points($ROa2,$Rykka2,$Rpta32,52,80,'')[color(0,150,0)]; ${ the space vectors ALKAA UUSI $} $u1 Dilation/3PtRatio($xykk,$OrigoR3,$ROa1,$Rykka1,$Rpta11)[red, label('a11'),hidden]; $u2 Dilation/3PtRatio($yykk,$OrigoR3,$ROa1,$Rykka1,$Rpta21)[blue, label('a21'),hidden]; $u3 Dilation/3PtRatio($zykk,$OrigoR3,$ROa1,$Rykka1,$Rpta31)[color(0,150,0), label('a31'),hidden]; $u1u2 VectorTranslation($u1,$OrigoR3,$u2)[magenta, label('(a11,a21)'),hidden]; $Su1u2x Segment($u1,$u1u2)[blue,hidden]; $Su1u2y Segment($u2,$u1u2)[red,hidden]; $SOu1u2 Segment($OrigoR3,$u1u2)[magenta,hidden]; $U VectorTranslation($u1u2,$OrigoR3,$u3)[color(255,168,17), label('a1')]; $SUu1u2 Segment($u1u2,$U)[color(0,150,0),hidden]; $SOU Segment($OrigoR3,$U)[color(255,168,17),thick]; $SUu3 Segment($u3,$U)[magenta,hidden]; $v1 Dilation/3PtRatio($xykk,$OrigoR3,$ROa2,$Rykka2,$Rpta12)[red, label('a12'),hidden]; $v2 Dilation/3PtRatio($yykk,$OrigoR3,$ROa2,$Rykka2,$Rpta22)[blue, label('a22'),hidden]; $v3 Dilation/3PtRatio($zykk,$OrigoR3,$ROa2,$Rykka2,$Rpta32)[color(0,150,0), label('a32'),hidden]; $v1v2 VectorTranslation($v1,$OrigoR3,$v2)[magenta, label('(a12,a22)'),hidden]; $Sv1v2x Segment($v1,$v1v2)[blue,hidden]; $Sv1v2y Segment($v2,$v1v2)[red,hidden]; $SOv1v2 Segment($OrigoR3,$v1v2)[magenta,hidden]; $V VectorTranslation($v1v2,$OrigoR3,$v3)[color(255,168,17), label('a2')]; $SVv1v2 Segment($v1v2,$V)[color(0,150,0),hidden]; $SOV Segment($OrigoR3,$V)[color(255,168,17),thick]; $SVv3 Segment($v3,$V)[magenta,hidden]; ${ The UV-plane $} $UplusV VectorTranslation($U,$OrigoR3,$V)[hidden]; $PlPol Polygon($OrigoR3,$U,$UplusV,$V)[yellow,layer(14)]; $UminusV VectorTranslation($U,$V,$OrigoR3)[hidden]; $UminusV VectorTranslation($U,$V,$OrigoR3)[hidden]; $VminusU VectorTranslation($V,$U,$OrigoR3)[hidden]; $minusUplusV VectorTranslation($VminusU,$UplusV,$UminusV)[hidden]; $PUV Polygon($UplusV,$VminusU,$minusUplusV,$UminusV)[color(236,245,175),layer(5)]; ${ The scalar products $} $a1x Calculate(145, 50,'','AB* CD* +')($a11,$x1,$a12,$x2)[red,hidden]; $a2x Calculate(145, 65,'','AB* CD* +')($a21,$x1,$a22,$x2)[blue,hidden]; $a3x Calculate(145, 80,'','AB* CD* +')($a31,$x1,$a32,$x2)[color(0,150,0),hidden]; $RptAx1 Dilation/MarkedRatio($xykk,$OrigoR3,$a1x)[red,label('b1'''),hidden]; $RptAx2 Dilation/MarkedRatio($yykk,$OrigoR3,$a2x)[blue,label('b2'''),hidden]; $RptAx3 Dilation/MarkedRatio($zykk,$OrigoR3,$a3x)[color(0,150,0),label('b3'''),hidden]; $SOR3RptAx1 Segment($RptAx1,$OrigoR3)[red,hidden]; $SOR3RptAx2 Segment($RptAx2,$OrigoR3)[blue,hidden]; $b1b2pr VectorTranslation($RptAx1,$OrigoR3,$RptAx2)[magenta, label('(b1'',b2'')'),hidden]; $Sb1b2pr1 Segment($RptAx1,$b1b2pr)[blue,hidden]; $Sb1b2pr2 Segment($RptAx2,$b1b2pr)[red,hidden]; $SOb1b2pr Segment($OrigoR3,$b1b2pr)[magenta,hidden]; $bpr VectorTranslation($b1b2pr,$OrigoR3,$RptAx3)[color(120,60,0), label('b'''),hidden]; $Sbb1b2pr Segment($b1b2pr,$bpr)[color(0,150,0),hidden]; $SObpr Segment($OrigoR3,$bpr)[color(120,60,0),thick,hidden]; $xa1 Dilation/MarkedRatio($U,$OrigoR3,$x1)[color(120,60,0),hidden]; $SOxa1 Segment($OrigoR3,$xa1)[color(120,60,0),layer(30),hidden]; $Sxa1bpr Segment($xa1,$bpr)[color(120,60,0),hidden]; $xa2 Dilation/MarkedRatio($V,$OrigoR3,$x2)[color(120,60,0),hidden]; $SOxa2 Segment($OrigoR3,$xa2)[color(120,60,0),layer(30),hidden]; $Sxa2bpr Segment($xa2,$bpr)[color(120,60,0),hidden]; ${ The least squares solution X $} $A Calculate(205, 10,'A = ','A2^ B2^ + C2^ +')($a11,$a21,$a31)[black,hidden]; $B Calculate(205, 25,'B = ','AD* BE* + CF* +')($a11,$a21,$a31,$a12,$a22,$a32)[black,hidden]; $C Calculate(205, 40,'C = ','A2^ B2^ + C2^ +')($a12,$a22,$a32)[black,hidden]; $D Calculate(205, 55,'D = ','AD* BE* + CF* +')($a11,$a21,$a31,$b1,$b2,$b3)[black,hidden]; $E Calculate(205, 70,'E = ','AD* BE* + CF* +')($a12,$a22,$a32,$b1,$b2,$b3)[black,hidden]; $det Calculate(205, 85,'det = ','AC* BB* -')($A,$B,$C)[black,hidden]; $X1 Calculate(100,120,'X1 = ','AD* BC* - E /')($D,$B,$E,$C,$det)[black,hidden]; $X2 Calculate(100,140,'X2 = ','AD* BC* - E /')($A,$D,$B,$E,$det)[black,hidden]; $RptX1 Dilation/MarkedRatio($xykkR2,$OrigoR2,$X1)[black, label('X1'),hidden]; $RptX2 Dilation/MarkedRatio($yykkR2,$OrigoR2,$X2)[black,label('X2'),hidden]; $X VectorTranslation($RptX1,$OrigoR2,$RptX2)[magenta, label('X'),hidden]; $Xtr VectorTranslation($RptX1,$OrigoR2,$RptX2)[magenta, label('X'),hidden,traced]; $SXX1 Segment($RptX1,$X)[blue,hidden]; $SXX2 Segment($RptX2,$X)[red,hidden]; $SOX Segment($OrigoR2,$X)[magenta,hidden]; $ALeUp FixedPoint(0,38)[hidden]; $ARiUp FixedPoint(100,38)[hidden]; $ARiLo FixedPoint(100,85)[hidden]; $ALeLo FixedPoint( 0,85)[hidden]; $APol Polygon($ALeUp,$ARiUp,$ARiLo,$ALeLo)[yellow]; $xLeUp FixedPoint(103,45)[hidden]; $xRiUp FixedPoint(125,45)[hidden]; $xRiLo FixedPoint(125,78)[hidden]; $xLeLo FixedPoint(103,78)[hidden]; $xPol Polygon($xLeUp,$xRiUp,$xRiLo,$xLeLo)[color(220,220,220)]; $xLeUp2 FixedPoint( 0,110)[hidden]; $xRiUp2 FixedPoint(87,110)[hidden]; $xRiLo2 FixedPoint(87,142)[hidden]; $xLeLo2 FixedPoint( 0,142)[hidden]; $xPol2 Polygon($xLeUp2,$xRiUp2,$xRiLo2,$xLeLo2)[color(220,220,220)]; $bprLeUp FixedPoint(140,38)[hidden]; $bprRiUp FixedPoint(198,38)[hidden]; $bprRiLo FixedPoint(198,85)[hidden]; $bprLeLo FixedPoint(140,85)[hidden]; $bprPol Polygon($bprLeUp,$bprRiUp,$bprRiLo,$bprLeLo)[color(240,200,200),hidden]; $bLeUp FixedPoint(202,38)[hidden]; $bRiUp FixedPoint(250,38)[hidden]; $bRiLo FixedPoint(250,85)[hidden]; $bLeLo FixedPoint(202,85)[hidden]; $bPol Polygon($bLeUp,$bRiUp,$bRiLo,$bLeLo)[color(200,240,200)]; $ObPolprPlane Polygon($OrigoR3,$xa1,$bpr,$xa2,$OrigoR3)[color(200,150,100),layer(15),hidden]; $ObPol Polygon($OrigoR3,$b, $b1b2, $OrigoR3)[color(200,240,200),layer(20)]; $ObPolpr Polygon($OrigoR3,$bpr,$b1b2pr,$OrigoR3)[color(240,200,200),layer(19),hidden]; ${ $SBx ShowButton( 0,87,'Try x')($x1x2,$SOx1x2,$Rptx1,$Sx1x2x1,$x1,$Rptx2,$Sx1x2x2,$x2,$xPol2)[red,bold]; $HBx HideButton(42,88,'Hide')( $x1x2,$SOx1x2,$Rptx1,$Sx1x2x1,$x1,$Rptx2,$Sx1x2x2,$x2,$xPol2)[red]; $} $SBXtr ShowButton( 0,160,'Trace X')($Xtr)[blue,hidden]; $HBXtr HideButton(60,160,'Stop')($Xtr)[blue,hidden]; $SBX ShowButton(100,87,'LSQR X')($X1,$X2,$RptX1,$RptX2,$X,$SXX1,$SXX2,$SOX,$SBXtr,$HBXtr)[magenta,bold]; $SBX HideButton(163,88,'Hide')( $X1,$X2,$RptX1,$RptX2,$X,$SXX1,$SXX2,$SOX,$SBXtr,$HBXtr)[magenta]; $SBRL ShowButton( 0,365,'Change A')($ROa1,$ROa2,$R1a1,$R1a2,$SRLa1,$SRLa2,$Rpta11,$Rpta12,$Rpta21,$Rpta22,$Rpta31,$Rpta32,$RectA)[black,bold]; $HBRL HideButton(72,366,'Fix')( $ROa1,$ROa2,$R1a1,$R1a2,$SRLa1,$SRLa2,$Rpta11,$Rpta12,$Rpta21,$Rpta22,$Rpta31,$Rpta32,$RectA)[black]; ${ $SBRLb ShowButton(278,364,'Change b')($ROb,$R1b,$SLb,$Rptb1,$Rptb2,$Rptb3,$Rectb)[black,bold]; $HBRLb HideButton(346,365,'Fix')( $ROb,$R1b,$SLb,$Rptb1,$Rptb2,$Rptb3,$Rectb)[black]; $} $SRes Segment($b,$bpr)[blue,thick,hidden]; $Res Calculate(270, 80,'|Ax-b| = ','AB- 2^ CD- 2^ + EF- 2^ + @sqrt')($b1,$a1x,$b2,$a2x,$b3,$a3x)[blue,hidden]; $SBRes ShowButton(270,40,'Residual')($Res,$SRes,$AxText,$a1x,$a2x,$a3x,$eqsign,$bprPol,$bpr,$SObpr)[blue,bold]; $HBRes HideButton(335,40,'Hide')( $Res,$SRes)[blue]; $SBAx ShowButton(125,0,'b'' = Ax')($AxText,$a1x,$a2x,$a3x,$eqsign,$bprPol,$bpr,$SObpr)[color(230,140,140),bold]; $HBAx HideButton(180,0,'Hide')( $AxText,$a1x,$a2x,$a3x,$eqsign,$bprPol,$bpr,$SObpr,$b1b2pr,$Sb1b2pr1,$Sb1b2pr2,$SOb1b2pr,$Sbb1b2pr,$ObPolpr,$xa1,$SOxa1,$Sxa1bpr,$xa2,$SOxa2,$bpr,$SObpr,$Sxa2bpr,$SRes,$Res)[color(230,140,140)]; $SBAxInSpace ShowButton(220,0,'b'' = Ax in space')($AxText,$a1x,$a2x,$a3x,$eqsign,$bprPol,$b1b2pr,$Sb1b2pr1,$Sb1b2pr2,$SOb1b2pr,$bpr,$SObpr,$Sbb1b2pr,$ObPolpr,$SOR3RptAx1,$SOR3RptAx2)[color(230,140,140),bold]; $HBAx HideButton(328,0,'Hide')( $b1b2pr,$Sb1b2pr1,$Sb1b2pr2,$SOb1b2pr,$Sbb1b2pr,$ObPolpr,$SOR3RptAx1,$SOR3RptAx2)[color(230,140,140)]; $SBAxInPlane ShowButton(365,0,'b'' = Ax in plane')($xa1,$SOxa1,$Sxa1bpr,$xa2,$SOxa2,$bpr,$SObpr,$Sxa2bpr,$ObPolprPlane)[color(120,60,0),bold]; $HBAxInPlane HideButton(472,0,'Hide')( $xa1,$SOxa1,$Sxa1bpr,$xa2,$SOxa2,$Sxa2bpr,$ObPolprPlane)[color(120,60,0)]; $SBeq ShowButton( 0,0,'Equation')($a11,$a12,$b1,$a21,$a22,$b2,$a31,$a32,$b3,$AText,$xText,$x1Text,$x2Text,$eqsign,$bText,$APol,$xPol,$bPol)[black,bold]; $HBeq HideButton(65,0,'Hide')( $a11,$a12,$b1,$a21,$a22,$b2,$a31,$a32,$b3,$AText,$xText,$x1Text,$x2Text,$eqsign,$bText,$APol,$xPol,$bPol)[black,bold];

Painonappuloiden avulla voi tuoda esiin ja piilottaa eräitä PNS-menetelmään liittyviä asioita. Vektoria b' = Ax voidaan havainnollistaa kahdessa ominaisuudessa: toisaalta kuva-avaruustasossa ja toisaalta maaliavaruuden vektorina (nappulat ylärivissä).
Tehtävä. Resetoi kuvio, paina nappulalla esille b' = Ax ja etsi PNS-ratkaisu vetelemällä lähtöpuolen vektoria x.

Tarkasta painamalla esille oikea arvo LSQR X.



Martti.Pesonen@Joensuu.Fi 2006