Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

Jupyter notebook Quiz 12.ipynb

21 views
Kernel: SageMath (latest)

Shrijesh Siwakoti Quiz 12

  1. QR Factorization for computing Eigenvalues

a)

A = matrix(RDF,3,[2.3415, -1.6732,4.5620,-8.6532,0.2451,-3.2476,1.8935,-0.2315,7.5432]) print A
[ 2.3415 -1.6732 4.562] [-8.6532 0.2451 -3.2476] [ 1.8935 -0.2315 7.5432]
Q,R=A.QR() A1 = R*Q print "A1 =" print A1 print "Q =" print Q print "R =" print R
A1 = [ 4.206151247194258 8.928485710852218 -4.5368339427839395] [ 2.2761628915243 -0.20738653029810353 -3.53699451867038] [ -1.297072960275583 -0.3450199975211957 6.131035283103846] Q = [ -0.25556100428225825 -0.9607270109792931 -0.10813040028149873] [ 0.944446073993268 -0.2719956490896509 0.18449926881969525] [ -0.20666442947190092 -0.054972513596278416 0.9768663349404363] R = [-9.162195956210498 0.7069312205235696 -5.791963495828642] [ 0.0 1.553548438076218 -3.914172218663431] [ 0.0 0.0 6.276227426219659]

b)

Aj = A1 for j in [2..80]: Q, R = Aj.QR() Aj = R*Q a = j%5 b = 1 if j % 5 == 0: print Aj.diagonal()
[9.471949825519662, -3.2875354764012146, 3.9453856508815535] [9.545569978079062, 0.3546355486740621, 0.22959447324687804] [9.54573704274284, 3.9434440190302107, -3.3593810617730497] [9.545738439432888, 2.840542627352633, -2.2564810667855166] [9.545738446014782, 3.5465097060341204, -2.9624481520488968] [9.545738446052765, 3.290986003678245, -2.7069244497310034] [9.545738446052965, 3.3931589482609232, -2.8090973943138824] [9.545738446052965, 3.3542377315249365, -2.7701761775778984] [9.545738446052965, 3.3693165530450018, -2.785254999097962] [9.545738446052965, 3.363514067032416, -2.7794525130853756] [9.545738446052965, 3.365752661766613, -2.7816911078195723] [9.545738446052965, 3.3648898725897407, -2.7808283186426985] [9.545738446052965, 3.3652225322541214, -2.781160978307079] [9.545738446052965, 3.365094289907522, -2.7810327359604807] [9.545738446052965, 3.3651437309351335, -2.781082176988092] [9.545738446052965, 3.3651246704482745, -2.7810631165012327]

Eigenvalues = 9.5457, 3.3651, -2.7810

a)

A = matrix(RDF,4,[4,2,-2,2,1,2,1,-1,0,0,3,0,1,1,-3,5]) print A
[ 4.0 2.0 -2.0 2.0] [ 1.0 2.0 1.0 -1.0] [ 0.0 0.0 3.0 0.0] [ 1.0 1.0 -3.0 5.0]
Q,R=A.QR() A1 = R*Q print "A1 =" print A1 print "Q =" print Q print "R =" print R
A1 = [ 5.277777777777777 1.8654088225583494 -2.5253579677419475 0.7521014330903542] [ 0.30367120367228956 1.3319783197831978 1.0010548691307164 -0.008389893580537931] [ -0.755090422248423 -0.8254771826601458 5.052581564776686 -0.6206385862066683] [ -0.8058229640253802 -0.8809388259564936 2.190489127788241 2.3376623376623376] Q = [ -0.9428090415820631 0.29448406953292416 -0.1067859115961747 -0.11396057645963793] [-0.23570226039551584 -0.9202627172903879 -0.21357182319234946 -0.22792115291927595] [ -0.0 0.0 -0.7297037292405271 0.6837634587578277] [-0.23570226039551584 -0.25767356084130866 0.6407154695770482 0.6837634587578277] R = [ -4.242640687119285 -2.5927248643506733 2.3570226039551576 -2.82842712474619] [ 0.0 -1.509230856356236 -0.7362101738323101 0.22086305214969304] [ 0.0 0.0 -4.111257596452726 3.2035773478852407] [ 0.0 0.0 0.0 3.418817293789138]

b)

Aj = A1 for j in [2..25]: Q, R = Aj.QR() Aj = R*Q print Aj.diagonal()
[5.809523809523808, 2.0419613389910416, 4.076658564059996, 2.07185628742515] [5.995862068965517, 3.5408830513349048, 2.3907255320965195, 2.072529347603055] [6.03782982282716, 3.68842288317002, 2.4477332266811143, 1.8260140673217011] [6.036381137108031, 3.635044664005745, 2.755335943419959, 1.5732382554662605] [6.026485093510379, 3.6127166525064736, 2.9086965376234932, 1.4521017163596504] [6.017521354021676, 3.60854858109392, 2.965419509345173, 1.4085105555392274] [6.011104504542591, 3.609956782866757, 2.985935490603611, 1.393003221987036] [6.006886294803237, 3.6122898514520903, 2.9939018435225275, 1.3869220102221425] [6.004220314985683, 3.6142460188234087, 2.9972480676828375, 1.3842855985080669] [6.002569240368859, 3.615628889560457, 2.998732648841733, 1.3830692212289482] [6.001558058336987, 3.6165383821735446, 2.9994112945640183, 1.382492264925448] [6.000942699438463, 3.6171150853294685, 2.9997257972719877, 1.3822164179600802] [6.000569606440167, 3.6174734578143624, 2.9998722805427276, 1.3820846552027428] [6.00034389449622, 3.617693557572516, 2.9999405715275764, 1.3820219764036887] [6.000207522356348, 3.6178277885164603, 2.9999723847319713, 1.381992304395223] [6.000125192395796, 3.6179093011870638, 2.999987184802256, 1.3819783216148873] [6.000075511800697, 3.6179586697382344, 2.999994060091349, 1.3819717583697222] [6.000045541341788, 3.6179885210377334, 2.999997249673988, 1.381968687946492] [6.000027464340363, 3.6180065525314182, 2.9999987276441935, 1.381967255484028] [6.000016562117489, 3.6180174373735197, 2.999999411812758, 1.3819665886962356] [6.0000099874014134, 3.618024005451109, 2.9999997282565913, 1.3819662788908886] [6.000006022587161, 3.6180279677297733, 2.9999998745172367, 1.3819661351658323] [6.000003631700547, 3.618030357647899, 2.999999942080014, 1.381966068571544] [6.000002189952865, 3.618031799025656, 2.999999973274651, 1.3819660377468315]

Eigenvalues = 6.0000, 3.6180, 2.9999, 1.3819

  1. a)The Power Method for finding the dominant eigenvalue λ and its corresponding eigenvector

A= matrix(QQ,4,[84,5,-5,5,1,0,1,-1,-1,1,0,1,3,5,-5,6]) print "A = " print A X0 = vector(RDF,[1,2,1,1]) print "X0=" print X0 temp = A*X0 X1 = (1/(temp.norm(Infinity)))*(temp) L1 = ((A*X1).dot_product(X1))/(X1.dot_product(X1)) print "X1=" print X1 print "λ1 =" print L1
A = [84 5 -5 5] [ 1 0 1 -1] [-1 1 0 1] [ 3 5 -5 6] X0= (1.0, 2.0, 1.0, 1.0) X1= (1.0, 0.010638297872340425, 0.02127659574468085, 0.14893617021276595) λ1 = 83.3586367157
Xi = X1 temp2 = A * X1 for i in [2..10]: temp3 = A*Xi Xi = (1/(temp3.norm(Infinity)))*(temp3) Li = (temp2.dot_product(Xi))/(Xi.dot_product(Xi)) print Xi temp2 = A* Xi print " " print Li print "--------------------------------------- "
(1.0, 0.010300213541012435, -0.009923376460243688, 0.045346062052505964) 84.6914893617 --------------------------------------- (1.0, 0.011203067325653102, -0.011198598611123524, 0.04000095332576631) 84.3278482603 --------------------------------------- (1.0, 0.011253443171606644, -0.011253390169497389, 0.03975725316639459) 84.3120130963 --------------------------------------- (1.0, 0.011255776232605097, -0.011255775603957496, 0.039746473765468825) 84.3113204325 --------------------------------------- (1.0, 0.011255879837560387, -0.011255879830104119, 0.0397460007632161) 84.311290128 --------------------------------------- (1.0, 0.011255884388549757, -0.011255884388461321, 0.03974598005234134) 84.3112888022 --------------------------------------- (1.0, 0.01125588458787591, -0.011255884587874862, 0.03974597914602208) 84.3112887441 --------------------------------------- (1.0, 0.011255884596599203, -0.011255884596599191, 0.0397459791063673) 84.3112887416 --------------------------------------- (1.0, 0.011255884596980886, -0.011255884596980886, 0.03974597910463233) 84.3112887415 ---------------------------------------

Dominant eigenvector = (1.00000, 0.0112, -0.0112, 0.0397) and dominant eigenvalue = 84.3113

A= matrix(RDF,4,[4.5,5.5,-5.5,5.5,1.5,0.5,1.5,-1.5,-1,1,0,1,3,5,-6,7]) print "A = " print A X0 = vector(RDF,[1,2,1,1]) print "X0 =" print X0 temp = A*X0 X1 = (1/(temp.norm(Infinity)))*(temp) L1 = ((A*X1).dot_product(X1))/(X1.dot_product(X1)) print "X1 =" print X1 print "λ1 =" print L1
A = [ 4.5 5.5 -5.5 5.5] [ 1.5 0.5 1.5 -1.5] [-1.0 1.0 0.0 1.0] [ 3.0 5.0 -6.0 7.0] X0 = (1.0, 2.0, 1.0, 1.0) X1 = (1.0, 0.16129032258064516, 0.12903225806451613, 0.9032258064516129) λ1 = 9.7771556551
Xi = X1 temp2 = A* X1 for i in [2..10]: temp3 = A*Xi Xi = (1/(temp3.norm(Infinity)))*(temp3) Li = (temp2.dot_product(Xi))/(Xi.dot_product(Xi)) print Xi temp2 = A*Xi print " " print Li print "--------------------------------------- "
(0.9999999999999999, 0.04347826086956522, 0.006688963210702335, 0.9698996655518395) 9.64516129032 --------------------------------------- (1.0, 0.00766411196267908, 0.001332889036987681, 0.9930023325558147) 10.0367892977 --------------------------------------- (1.0, 0.00163338777959266, 6.666888896296661e-05, 0.9984999499983332) 9.99633455515 --------------------------------------- (0.9999999999999999, 0.0003166656111146348, 1.3333288889045202e-05, 0.99969000103333) 10.0003666789 --------------------------------------- (1.0, 6.433335477774029e-05, 6.666668888968415e-07, 0.999936999979) 9.99996333346 --------------------------------------- (1.0, 1.276666624111376e-05, 1.333333288941923e-07, 0.9999873000004234) 10.0000036667 --------------------------------------- (1.0, 2.5633333418736e-06, 6.66666668555746e-09, 0.9999974499999915) 9.99999963333 --------------------------------------- (1.0, 5.116666664918827e-07, 1.3333333277426367e-09, 0.9999994890000002) 10.0000000367 --------------------------------------- (1.0, 1.0243333331975141e-07, 6.666667220713585e-11, 0.9999998977000001) 9.99999999633 ---------------------------------------

Dominant eigenvector = (1.0000, 0.0000, 0.0000, 0.9999) and dominant eigenvalue = 10

  1. Singular Vale Decomposition

A = matrix(CDF,4,[1,2,3,4,5,6,7,8]) print "A =" print A U,S,V = A.SVD() print "U =" print U print "Σ =" print S print "V =" print V
A = [1.0 2.0] [3.0 4.0] [5.0 6.0] [7.0 8.0] U = [ -0.15248323331020117 -0.8226474722256604 -0.3945010222838285 -0.37995913387759556] [ -0.349918371807964 -0.42137528768458005 0.2427965457043585 0.8006558795100628] [ -0.5473535103057271 -0.020103103143501607 0.6979099754427753 -0.461434357387337] [ -0.7447886488034903 0.38116908139757405 -0.5462054988633036 0.040737611754870284] Σ = [14.269095499261486 0.0] [ 0.0 0.6268282324175418] [ 0.0 0.0] [ 0.0 0.0] V = [-0.6414230279950722 0.7671873950721771] [-0.7671873950721771 -0.6414230279950722]

singular values = 14.2690 and 0.6268