123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618 |
- Tue Apr 15 00:34:43 2008 run on win32
- % Test file for Sparse Matrices and the Linear Algebra Package for
- % Sparse Matrices.
- % Author: Stephen Scowcroft. Date: June 1995.
- % Firstly, the matrices need to be created.
- % This is the standard way to create a sparse matrix.
- % Create a sparse matrix.
- sparse mat1(5,5);
- %Fill the sparse matrix with data
- mat1(1,1):=2;
- mat1(1,1) := 2
- mat1(2,2):=4;
- mat1(2,2) := 4
- mat1(3,3):=6;
- mat1(3,3) := 6
- mat1(4,4):=8;
- mat1(4,4) := 8
- mat1(5,5):=10;
- mat1(5,5) := 10
- sparse mat4(5,5);
- mat4(1,1):=x;
- mat4(1,1) := x
- mat4(2,2):=x;
- mat4(2,2) := x
- mat4(3,3):=x;
- mat4(3,3) := x
- mat4(4,4):=x;
- mat4(4,4) := x
- mat4(5,5):=x;
- mat4(5,5) := x
- % A small function to automatically fill a sparse matrix with data.
- procedure makematsp(nam,row);
- begin;
- sparse nam(row,row);
- for i := 1:row do <<nam(i,i):=i>>
- end;
- makematsp
- clear mat2;
- makematsp(mat2,100);
- % Matrices created in the standard Matrix way.
- zz1:=mat((1,2),(3,4));
- [1 2]
- zz1 := [ ]
- [3 4]
- zz2:=mat((x,x),(x,x));
- [x x]
- zz2 := [ ]
- [x x]
- zz3:=mat((i+1,i+2,i+3),(4,5,2),(1,i,0));
- [i + 1 i + 2 i + 3]
- [ ]
- zz3 := [ 4 5 2 ]
- [ ]
- [ 1 i 0 ]
- % I have taken advantage of the Linear Algebra Package (Matt Rebbeck)
- % in order to create some Sparse Matrices.
- mat3:=diagonal(zz1,zz1,zz1);
- [1 2 0 0 0 0]
- [ ]
- [3 4 0 0 0 0]
- [ ]
- [0 0 1 2 0 0]
- mat3 := [ ]
- [0 0 3 4 0 0]
- [ ]
- [0 0 0 0 1 2]
- [ ]
- [0 0 0 0 3 4]
- mat5:=band_matrix({1,3,1},100)$
- mat6:=diagonal(zz3,zz3);
- [i + 1 i + 2 i + 3 0 0 0 ]
- [ ]
- [ 4 5 2 0 0 0 ]
- [ ]
- [ 1 i 0 0 0 0 ]
- mat6 := [ ]
- [ 0 0 0 i + 1 i + 2 i + 3]
- [ ]
- [ 0 0 0 4 5 2 ]
- [ ]
- [ 0 0 0 1 i 0 ]
- mat7:=band_matrix({a,b,c},4);
- [b c 0 0]
- [ ]
- [a b c 0]
- mat7 := [ ]
- [0 a b c]
- [ ]
- [0 0 a b]
- % These are then "translated" into the Sparse operator using the
- % function transmat.
- % This is a destructive function in the sense that the matrices are no
- % longer of type 'matrix but are now 'sparse.
- transmat mat3;
- transmat mat5;
- transmat mat6;
- transmat mat7;
- poly := x^7+x^5+4*x^4+5*x^3+12;
- 7 5 4 3
- poly := x + x + 4*x + 5*x + 12
- poly1 := x^2+x*y^3+x*y*z^3+y*x+2+y*3;
- 2 3 3
- poly1 := x + x*y + x*y*z + x*y + 3*y + 2
- % Firstly some basic matrix operations.
- % These are the same as the present matrix package
- mat1^-1;
- 1
- spm(1,1) := ---$
- 2
- 1
- spm(2,2) := ---$
- 4
- 1
- spm(3,3) := ---$
- 6
- 1
- spm(4,4) := ---$
- 8
- 1
- spm(5,5) := ----$
- 10
- mat4^-1;
- 1
- spm(1,1) := ---$
- x
- 1
- spm(2,2) := ---$
- x
- 1
- spm(3,3) := ---$
- x
- 1
- spm(4,4) := ---$
- x
- 1
- spm(5,5) := ---$
- x
- mat2 + mat5$
- mat2 - mat5$
- mat1-mat1;
- "Empty Matrix"
- mat4 + mat1;
- spm(1,1) := x + 2$
- spm(2,2) := x + 4$
- spm(3,3) := x + 6$
- spm(4,4) := x + 8$
- spm(5,5) := x + 10$
- mat4 * mat1;
- spm(1,1) := 2*x$
- spm(2,2) := 4*x$
- spm(3,3) := 6*x$
- spm(4,4) := 8*x$
- spm(5,5) := 10*x$
- 2*mat1 + (3*mat4 + mat1);
- spm(1,1) := 3*(x + 2)$
- spm(2,2) := 3*(x + 4)$
- spm(3,3) := 3*(x + 6)$
- spm(4,4) := 3*(x + 8)$
- spm(5,5) := 3*(x + 10)$
- % It is also possible to combine both 'matrix and 'sparse type matrices
- % in these operations.
- pp:=band_matrix({1,3,1},100)$
- mat5*pp;
- spm(1,1) := 10$
- spm(1,2) := 6$
- spm(1,3) := 1$
- spm(2,1) := 6$
- spm(2,2) := 11$
- spm(2,3) := 6$
- spm(2,4) := 1$
- spm(3,1) := 1$
- spm(3,2) := 6$
- spm(3,3) := 11$
- spm(3,4) := 6$
- spm(3,5) := 1$
- spm(4,2) := 1$
- spm(4,3) := 6$
- spm(4,4) := 11$
- spm(4,5) := 6$
- spm(4,6) := 1$
- spm(5,3) := 1$
- spm(5,4) := 6$
- spm(5,5) := 11$
- spm(5,6) := 6$
- spm(5,7) := 1$
- spm(6,4) := 1$
- spm(6,5) := 6$
- spm(6,6) := 11$
- spm(6,7) := 6$
- spm(6,8) := 1$
- spm(7,5) := 1$
- spm(7,6) := 6$
- spm(7,7) := 11$
- spm(7,8) := 6$
- spm(7,9) := 1$
- spm(8,6) := 1$
- spm(8,7) := 6$
- spm(8,8) := 11$
- spm(8,9) := 6$
- spm(8,10) := 1$
- spm(9,7) := 1$
- spm(9,8) := 6$
- spm(9,9) := 11$
- spm(9,10) := 6$
- spm(9,11) := 1$
- spm(10,8) := 1$
- spm(10,9) := 6$
- spm(10,10) := 11$
- spm(10,11) := 6$
- spm(10,12) := 1$
- spm(11,9) := 1$
- spm(11,10) := 6$
- spm(11,11) := 11$
- spm(11,12) := 6$
- spm(11,13) := 1$
- spm(12,10) := 1$
- spm(12,11) := 6$
- spm(12,12) := 11$
- spm(12,13) := 6$
- spm(12,14) := 1$
- spm(13,11) := 1$
- spm(13,12) := 6$
- spm(13,13) := 11$
- spm(13,14) := 6$
- spm(13,15) := 1$
- spm(14,12) := 1$
- spm(14,13) := 6$
- spm(14,14) := 11$
- spm(14,15) := 6$
- spm(14,16) := 1$
- spm(15,13) := 1$
- spm(15,14) := 6$
- spm(15,15) := 11$
- spm(15,16) := 6$
- spm(15,17) := 1$
- spm(16,14) := 1$
- spm(16,15) := 6$
- spm(16,16) := 11$
- spm(16,17) := 6$
- spm(16,18) := 1$
- spm(17,15) := 1$
- spm(17,16) := 6$
- spm(17,17) := 11$
- spm(17,18) := 6$
- spm(17,19) := 1$
- spm(18,16) := 1$
- spm(18,17) := 6$
- spm(18,18) := 11$
- spm(18,19) := 6$
- spm(18,20) := 1$
- spm(19,17) := 1$
- spm(19,18) := 6$
- spm(19,19) := 11$
- spm(19,20) := 6$
- spm(19,21) := 1$
- spm(20,18) := 1$
- spm(20,19) := 6$
- spm(20,20) := 11$
- spm(20,21) := 6$
- spm(20,22) := 1$
- spm(21,19) := 1$
- spm(21,20) := 6$
- spm(21,21) := 11$
- spm(21,22) := 6$
- spm(21,23) := 1$
- spm(22,20) := 1$
- spm(22,21) := 6$
- spm(22,22) := 11$
- spm(22,23) := 6$
- spm(22,24) := 1$
- spm(23,21) := 1$
- spm(23,22) := 6$
- spm(23,23) := 11$
- spm(23,24) := 6$
- spm(23,25) := 1$
- spm(24,22) := 1$
- spm(24,23) := 6$
- spm(24,24) := 11$
- spm(24,25) := 6$
- spm(24,26) := 1$
- spm(25,23) := 1$
- spm(25,24) := 6$
- spm(25,25) := 11$
- spm(25,26) := 6$
- spm(25,27) := 1$
- spm(26,24) := 1$
- spm(26,25) := 6$
- spm(26,26) := 11$
- spm(26,27) := 6$
- spm(26,28) := 1$
- spm(27,25) := 1$
- spm(27,26) := 6$
- spm(27,27) := 11$
- spm(27,28) := 6$
- spm(27,29) := 1$
- spm(28,26) := 1$
- spm(28,27) := 6$
- spm(28,28) := 11$
- spm(28,29) := 6$
- spm(28,30) := 1$
- spm(29,27) := 1$
- spm(29,28) := 6$
- spm(29,29) := 11$
- spm(29,30) := 6$
- spm(29,31) := 1$
- spm(30,28) := 1$
- spm(30,29) := 6$
- spm(30,30) := 11$
- spm(30,31) := 6$
- spm(30,32) := 1$
- spm(31,29) := 1$
- spm(31,30) := 6$
- spm(31,31) := 11$
- spm(31,32) := 6$
- spm(31,33) := 1$
- spm(32,30) := 1$
- spm(32,31) := 6$
- spm(32,32) := 11$
- spm(32,33) := 6$
- spm(32,34) := 1$
- spm(33,31) := 1$
- spm(33,32) := 6$
- spm(33,33) := 11$
- spm(33,34) := 6$
- spm(33,35) := 1$
- spm(34,32) := 1$
- spm(34,33) := 6$
- spm(34,34) := 11$
- spm(34,35) := 6$
- spm(34,36) := 1$
- spm(35,33) := 1$
- spm(35,34) := 6$
- spm(35,35) := 11$
- spm(35,36) := 6$
- spm(35,37) := 1$
- spm(36,34) := 1$
- spm(36,35) := 6$
- spm(36,36) := 11$
- spm(36,37) := 6$
- spm(36,38) := 1$
- spm(37,35) := 1$
- spm(37,36) := 6$
- spm(37,37) := 11$
- spm(37,38) := 6$
- spm(37,39) := 1$
- spm(38,36) := 1$
- spm(38,37) := 6$
- spm(38,38) := 11$
- spm(38,39) := 6$
- spm(38,40) := 1$
- spm(39,37) := 1$
- spm(39,38) := 6$
- spm(39,39) := 11$
- spm(39,40) := 6$
- spm(39,41) := 1$
- spm(40,38) := 1$
- spm(40,39) := 6$
- spm(40,40) := 11$
- spm(40,41) := 6$
- spm(40,42) := 1$
- spm(41,39) := 1$
- spm(41,40) := 6$
- spm(41,41) := 11$
- spm(41,42) := 6$
- spm(41,43) := 1$
- spm(42,40) := 1$
- spm(42,41) := 6$
- spm(42,42) := 11$
- spm(42,43) := 6$
- spm(42,44) := 1$
- spm(43,41) := 1$
- spm(43,42) := 6$
- spm(43,43) := 11$
- spm(43,44) := 6$
- spm(43,45) := 1$
- spm(44,42) := 1$
- spm(44,43) := 6$
- spm(44,44) := 11$
- spm(44,45) := 6$
- spm(44,46) := 1$
- spm(45,43) := 1$
- spm(45,44) := 6$
- spm(45,45) := 11$
- spm(45,46) := 6$
- spm(45,47) := 1$
- spm(46,44) := 1$
- spm(46,45) := 6$
- spm(46,46) := 11$
- spm(46,47) := 6$
- spm(46,48) := 1$
- spm(47,45) := 1$
- spm(47,46) := 6$
- spm(47,47) := 11$
- spm(47,48) := 6$
- spm(47,49) := 1$
- spm(48,46) := 1$
- spm(48,47) := 6$
- spm(48,48) := 11$
- spm(48,49) := 6$
- spm(48,50) := 1$
- spm(49,47) := 1$
- spm(49,48) := 6$
- spm(49,49) := 11$
- spm(49,50) := 6$
- spm(49,51) := 1$
- spm(50,48) := 1$
- spm(50,49) := 6$
- spm(50,50) := 11$
- spm(50,51) := 6$
- spm(50,52) := 1$
- spm(51,49) := 1$
- spm(51,50) := 6$
- spm(51,51) := 11$
- spm(51,52) := 6$
- spm(51,53) := 1$
- spm(52,50) := 1$
- spm(52,51) := 6$
- spm(52,52) := 11$
- spm(52,53) := 6$
- spm(52,54) := 1$
- spm(53,51) := 1$
- spm(53,52) := 6$
- spm(53,53) := 11$
- spm(53,54) := 6$
- spm(53,55) := 1$
- spm(54,52) := 1$
- spm(54,53) := 6$
- spm(54,54) := 11$
- spm(54,55) := 6$
- spm(54,56) := 1$
- spm(55,53) := 1$
- spm(55,54) := 6$
- spm(55,55) := 11$
- spm(55,56) := 6$
- spm(55,57) := 1$
- spm(56,54) := 1$
- spm(56,55) := 6$
- spm(56,56) := 11$
- spm(56,57) := 6$
- spm(56,58) := 1$
- spm(57,55) := 1$
- spm(57,56) := 6$
- spm(57,57) := 11$
- spm(57,58) := 6$
- spm(57,59) := 1$
- spm(58,56) := 1$
- spm(58,57) := 6$
- spm(58,58) := 11$
- spm(58,59) := 6$
- spm(58,60) := 1$
- spm(59,57) := 1$
- spm(59,58) := 6$
- spm(59,59) := 11$
- spm(59,60) := 6$
- spm(59,61) := 1$
- spm(60,58) := 1$
- spm(60,59) := 6$
- spm(60,60) := 11$
- spm(60,61) := 6$
- spm(60,62) := 1$
- spm(61,59) := 1$
- spm(61,60) := 6$
- spm(61,61) := 11$
- spm(61,62) := 6$
- spm(61,63) := 1$
- spm(62,60) := 1$
- spm(62,61) := 6$
- spm(62,62) := 11$
- spm(62,63) := 6$
- spm(62,64) := 1$
- spm(63,61) := 1$
- spm(63,62) := 6$
- spm(63,63) := 11$
- spm(63,64) := 6$
- spm(63,65) := 1$
- spm(64,62) := 1$
- spm(64,63) := 6$
- spm(64,64) := 11$
- spm(64,65) := 6$
- spm(64,66) := 1$
- spm(65,63) := 1$
- spm(65,64) := 6$
- spm(65,65) := 11$
- spm(65,66) := 6$
- spm(65,67) := 1$
- spm(66,64) := 1$
- spm(66,65) := 6$
- spm(66,66) := 11$
- spm(66,67) := 6$
- spm(66,68) := 1$
- spm(67,65) := 1$
- spm(67,66) := 6$
- spm(67,67) := 11$
- spm(67,68) := 6$
- spm(67,69) := 1$
- spm(68,66) := 1$
- spm(68,67) := 6$
- spm(68,68) := 11$
- spm(68,69) := 6$
- spm(68,70) := 1$
- spm(69,67) := 1$
- spm(69,68) := 6$
- spm(69,69) := 11$
- spm(69,70) := 6$
- spm(69,71) := 1$
- spm(70,68) := 1$
- spm(70,69) := 6$
- spm(70,70) := 11$
- spm(70,71) := 6$
- spm(70,72) := 1$
- spm(71,69) := 1$
- spm(71,70) := 6$
- spm(71,71) := 11$
- spm(71,72) := 6$
- spm(71,73) := 1$
- spm(72,70) := 1$
- spm(72,71) := 6$
- spm(72,72) := 11$
- spm(72,73) := 6$
- spm(72,74) := 1$
- spm(73,71) := 1$
- spm(73,72) := 6$
- spm(73,73) := 11$
- spm(73,74) := 6$
- spm(73,75) := 1$
- spm(74,72) := 1$
- spm(74,73) := 6$
- spm(74,74) := 11$
- spm(74,75) := 6$
- spm(74,76) := 1$
- spm(75,73) := 1$
- spm(75,74) := 6$
- spm(75,75) := 11$
- spm(75,76) := 6$
- spm(75,77) := 1$
- spm(76,74) := 1$
- spm(76,75) := 6$
- spm(76,76) := 11$
- spm(76,77) := 6$
- spm(76,78) := 1$
- spm(77,75) := 1$
- spm(77,76) := 6$
- spm(77,77) := 11$
- spm(77,78) := 6$
- spm(77,79) := 1$
- spm(78,76) := 1$
- spm(78,77) := 6$
- spm(78,78) := 11$
- spm(78,79) := 6$
- spm(78,80) := 1$
- spm(79,77) := 1$
- spm(79,78) := 6$
- spm(79,79) := 11$
- spm(79,80) := 6$
- spm(79,81) := 1$
- spm(80,78) := 1$
- spm(80,79) := 6$
- spm(80,80) := 11$
- spm(80,81) := 6$
- spm(80,82) := 1$
- spm(81,79) := 1$
- spm(81,80) := 6$
- spm(81,81) := 11$
- spm(81,82) := 6$
- spm(81,83) := 1$
- spm(82,80) := 1$
- spm(82,81) := 6$
- spm(82,82) := 11$
- spm(82,83) := 6$
- spm(82,84) := 1$
- spm(83,81) := 1$
- spm(83,82) := 6$
- spm(83,83) := 11$
- spm(83,84) := 6$
- spm(83,85) := 1$
- spm(84,82) := 1$
- spm(84,83) := 6$
- spm(84,84) := 11$
- spm(84,85) := 6$
- spm(84,86) := 1$
- spm(85,83) := 1$
- spm(85,84) := 6$
- spm(85,85) := 11$
- spm(85,86) := 6$
- spm(85,87) := 1$
- spm(86,84) := 1$
- spm(86,85) := 6$
- spm(86,86) := 11$
- spm(86,87) := 6$
- spm(86,88) := 1$
- spm(87,85) := 1$
- spm(87,86) := 6$
- spm(87,87) := 11$
- spm(87,88) := 6$
- spm(87,89) := 1$
- spm(88,86) := 1$
- spm(88,87) := 6$
- spm(88,88) := 11$
- spm(88,89) := 6$
- spm(88,90) := 1$
- spm(89,87) := 1$
- spm(89,88) := 6$
- spm(89,89) := 11$
- spm(89,90) := 6$
- spm(89,91) := 1$
- spm(90,88) := 1$
- spm(90,89) := 6$
- spm(90,90) := 11$
- spm(90,91) := 6$
- spm(90,92) := 1$
- spm(91,89) := 1$
- spm(91,90) := 6$
- spm(91,91) := 11$
- spm(91,92) := 6$
- spm(91,93) := 1$
- spm(92,90) := 1$
- spm(92,91) := 6$
- spm(92,92) := 11$
- spm(92,93) := 6$
- spm(92,94) := 1$
- spm(93,91) := 1$
- spm(93,92) := 6$
- spm(93,93) := 11$
- spm(93,94) := 6$
- spm(93,95) := 1$
- spm(94,92) := 1$
- spm(94,93) := 6$
- spm(94,94) := 11$
- spm(94,95) := 6$
- spm(94,96) := 1$
- spm(95,93) := 1$
- spm(95,94) := 6$
- spm(95,95) := 11$
- spm(95,96) := 6$
- spm(95,97) := 1$
- spm(96,94) := 1$
- spm(96,95) := 6$
- spm(96,96) := 11$
- spm(96,97) := 6$
- spm(96,98) := 1$
- spm(97,95) := 1$
- spm(97,96) := 6$
- spm(97,97) := 11$
- spm(97,98) := 6$
- spm(97,99) := 1$
- spm(98,96) := 1$
- spm(98,97) := 6$
- spm(98,98) := 11$
- spm(98,99) := 6$
- spm(98,100) := 1$
- spm(99,97) := 1$
- spm(99,98) := 6$
- spm(99,99) := 11$
- spm(99,100) := 6$
- spm(100,98) := 1$
- spm(100,99) := 6$
- spm(100,100) := 10$
- mat5^2$
- det(mat1);
- 3840
- det(mat4);
- 5
- x
- trace(mat1);
- 30
- trace(mat4);
- 5*x
- rank(mat1);
- 5
- rank mat5;
- 100
- tp(mat3);
- spm(1,1) := 1$
- spm(1,2) := 3$
- spm(2,1) := 2$
- spm(2,2) := 4$
- spm(3,3) := 1$
- spm(3,4) := 3$
- spm(4,3) := 2$
- spm(4,4) := 4$
- spm(5,5) := 1$
- spm(5,6) := 3$
- spm(6,5) := 2$
- spm(6,6) := 4$
- spmateigen(mat3,eta);
- 2
- {{eta - 5*eta - 2,3,
- 2*arbcomplex(1)*(eta + 1)
- spm(1,1) := ---------------------------$
- 5*eta + 1
- spm(2,1) := arbcomplex(1)$
- 2*arbcomplex(2)*(eta + 1)
- spm(3,1) := ---------------------------$
- 5*eta + 1
- spm(4,1) := arbcomplex(2)$
- 2*arbcomplex(3)*(eta + 1)
- spm(5,1) := ---------------------------$
- 5*eta + 1
- spm(6,1) := arbcomplex(3)$
- }}
- % Next, tests for the Linear Algebra Package for Sparse Matrices.
- %Basic matrix manipulations.
- spadd_columns(mat1,1,2,5*y);
- spm(1,1) := 2$
- spm(1,2) := 10*y$
- spm(2,2) := 4$
- spm(3,3) := 6$
- spm(4,4) := 8$
- spm(5,5) := 10$
- spadd_rows(mat1,1,2,x);
- spm(1,1) := 2$
- spm(2,1) := 2*x$
- spm(2,2) := 4$
- spm(3,3) := 6$
- spm(4,4) := 8$
- spm(5,5) := 10$
- spadd_to_columns(mat1,3,1000);
- spm(1,1) := 2$
- spm(1,3) := 1000$
- spm(2,2) := 4$
- spm(2,3) := 1000$
- spm(3,3) := 1006$
- spm(4,3) := 1000$
- spm(4,4) := 8$
- spm(5,3) := 1000$
- spm(5,5) := 10$
- spadd_to_columns(mat5,{1,2,3},y)$
- spadd_to_rows(mat1,2,1000);
- spm(1,1) := 2$
- spm(2,1) := 1000$
- spm(2,2) := 1004$
- spm(2,3) := 1000$
- spm(2,4) := 1000$
- spm(2,5) := 1000$
- spm(3,3) := 6$
- spm(4,4) := 8$
- spm(5,5) := 10$
- spadd_to_rows(mat5,{1,2,3},x)$
- spaugment_columns(mat3,2);
- spm(1,1) := 2$
- spm(2,1) := 4$
-
- spaugment_columns(mat1,{1,2,5});
- spm(1,1) := 2$
- spm(2,2) := 4$
- spm(5,3) := 10$
- spstack_rows(mat1,3);
- spm(1,3) := 6$
-
- spstack_rows(mat1,{1,3,5});
- spm(1,1) := 2$
- spm(2,3) := 6$
- spm(3,5) := 10$
-
- spchar_poly(mat1,x);
- 5 4 3 2
- x - 30*x + 340*x - 1800*x + 4384*x - 3840
- spcol_dim(mat2);
- 100
- sprow_dim(mat1);
- 5
- spcopy_into(mat7,mat1,2,2);
- spm(1,1) := 2$
- spm(2,2) := b$
- spm(2,3) := c$
- spm(3,2) := a$
- spm(3,3) := b$
- spm(3,4) := c$
- spm(4,3) := a$
- spm(4,4) := b$
- spm(4,5) := c$
- spm(5,4) := a$
- spm(5,5) := b$
- spcopy_into(mat7,mat1,5,5);
- ***** Error in spcopy_into: the matrix
- spm(1,1) := b$
- spm(1,2) := c$
- spm(2,1) := a$
- spm(2,2) := b$
- spm(2,3) := c$
- spm(3,2) := a$
- spm(3,3) := b$
- spm(3,4) := c$
- spm(4,3) := a$
- spm(4,4) := b$
- does not fit into
- spm(1,1) := 2$
- spm(2,2) := 4$
- spm(3,3) := 6$
- spm(4,4) := 8$
- spm(5,5) := 10$
- at position 5,5.
- spcopy_into(zz1,mat1,1,1);
- spm(1,1) := 1$
- spm(1,2) := 2$
- spm(2,1) := 3$
- spm(2,2) := 4$
- spm(3,3) := 6$
- spm(4,4) := 8$
- spm(5,5) := 10$
- spdiagonal(3);
- spm(1,1) := 3$
- % spdiagonal can take both a list of arguments or just the arguments.
- spdiagonal({mat2,mat5})$
- spdiagonal(mat2,mat5)$
- % spdiagonal can also take a mixture of 'sparse and 'matrix types.
- spdiagonal(zz1,mat4,zz1);
- spm(1,1) := 1$
- spm(1,2) := 2$
- spm(2,1) := 3$
- spm(2,2) := 4$
- spm(3,3) := x$
- spm(4,4) := x$
- spm(5,5) := x$
- spm(6,6) := x$
- spm(7,7) := x$
- spm(8,8) := 1$
- spm(8,9) := 2$
- spm(9,8) := 3$
- spm(9,9) := 4$
- spextend(mat1,3,2,x);
- spm(1,1) := 2$
- spm(2,2) := 4$
- spm(3,3) := 6$
- spm(4,4) := 8$
- spm(5,5) := 10$
- spm(6,6) := x$
- spm(6,7) := x$
- spm(7,6) := x$
- spm(7,7) := x$
- spm(8,6) := x$
- spm(8,7) := x$
- spfind_companion(mat5,x);
- 98 2
- x *(x - 3*x - 1)
- spget_columns(mat1,1);
- {
- spm(1,1) := 2$
- }
- spget_columns(mat1,{1,2});
- {
- spm(1,1) := 2$
- ,
- spm(2,1) := 4$
- }
- spget_rows(mat1,3);
- {
- spm(1,3) := 6$
- }
- spget_rows(mat1,{1,3});
- {
- spm(1,1) := 2$
- ,
- spm(1,3) := 6$
- }
- sphermitian_tp(mat6);
- spm(1,1) := - i + 1$
- spm(1,2) := 4$
- spm(1,3) := 1$
- spm(2,1) := - i + 2$
- spm(2,2) := 5$
- spm(2,3) := - i$
- spm(3,1) := - i + 3$
- spm(3,2) := 2$
- spm(4,4) := - i + 1$
- spm(4,5) := 4$
- spm(4,6) := 1$
- spm(5,4) := - i + 2$
- spm(5,5) := 5$
- spm(5,6) := - i$
- spm(6,4) := - i + 3$
- spm(6,5) := 2$
- % matrix_augment and matrix_stack can take both a list of arguments
- % or just the arguments.
- spmatrix_augment({mat1,mat1});
- spm(1,1) := 2$
- spm(1,6) := 2$
- spm(2,2) := 4$
- spm(2,7) := 4$
- spm(3,3) := 6$
- spm(3,8) := 6$
- spm(4,4) := 8$
- spm(4,9) := 8$
- spm(5,5) := 10$
- spm(5,10) := 10$
- spmatrix_augment(mat5,mat2,mat5)$
- spmatrix_stack(mat2,mat2)$
- spminor(mat1,2,3);
- spm(1,1) := 2$
- spm(3,3) := 8$
- spm(4,4) := 10$
- spmult_columns(mat1,3,y);
- spm(1,1) := 2$
- spm(2,2) := 4$
- spm(3,3) := 6*y$
- spm(4,4) := 8$
- spm(5,5) := 10$
- spmult_columns(mat2,{2,3,4},100)$
- spmult_rows(mat2,2,x);
- spm(1,1) := 1$
- spm(2,2) := 2*x$
- spm(3,3) := 3$
- spm(4,4) := 4$
- spm(5,5) := 5$
- spm(6,6) := 6$
- spm(7,7) := 7$
- spm(8,8) := 8$
- spm(9,9) := 9$
- spm(10,10) := 10$
- spm(11,11) := 11$
- spm(12,12) := 12$
- spm(13,13) := 13$
- spm(14,14) := 14$
- spm(15,15) := 15$
- spm(16,16) := 16$
- spm(17,17) := 17$
- spm(18,18) := 18$
- spm(19,19) := 19$
- spm(20,20) := 20$
- spm(21,21) := 21$
- spm(22,22) := 22$
- spm(23,23) := 23$
- spm(24,24) := 24$
- spm(25,25) := 25$
- spm(26,26) := 26$
- spm(27,27) := 27$
- spm(28,28) := 28$
- spm(29,29) := 29$
- spm(30,30) := 30$
- spm(31,31) := 31$
- spm(32,32) := 32$
- spm(33,33) := 33$
- spm(34,34) := 34$
- spm(35,35) := 35$
- spm(36,36) := 36$
- spm(37,37) := 37$
- spm(38,38) := 38$
- spm(39,39) := 39$
- spm(40,40) := 40$
- spm(41,41) := 41$
- spm(42,42) := 42$
- spm(43,43) := 43$
- spm(44,44) := 44$
- spm(45,45) := 45$
- spm(46,46) := 46$
- spm(47,47) := 47$
- spm(48,48) := 48$
- spm(49,49) := 49$
- spm(50,50) := 50$
- spm(51,51) := 51$
- spm(52,52) := 52$
- spm(53,53) := 53$
- spm(54,54) := 54$
- spm(55,55) := 55$
- spm(56,56) := 56$
- spm(57,57) := 57$
- spm(58,58) := 58$
- spm(59,59) := 59$
- spm(60,60) := 60$
- spm(61,61) := 61$
- spm(62,62) := 62$
- spm(63,63) := 63$
- spm(64,64) := 64$
- spm(65,65) := 65$
- spm(66,66) := 66$
- spm(67,67) := 67$
- spm(68,68) := 68$
- spm(69,69) := 69$
- spm(70,70) := 70$
- spm(71,71) := 71$
- spm(72,72) := 72$
- spm(73,73) := 73$
- spm(74,74) := 74$
- spm(75,75) := 75$
- spm(76,76) := 76$
- spm(77,77) := 77$
- spm(78,78) := 78$
- spm(79,79) := 79$
- spm(80,80) := 80$
- spm(81,81) := 81$
- spm(82,82) := 82$
- spm(83,83) := 83$
- spm(84,84) := 84$
- spm(85,85) := 85$
- spm(86,86) := 86$
- spm(87,87) := 87$
- spm(88,88) := 88$
- spm(89,89) := 89$
- spm(90,90) := 90$
- spm(91,91) := 91$
- spm(92,92) := 92$
- spm(93,93) := 93$
- spm(94,94) := 94$
- spm(95,95) := 95$
- spm(96,96) := 96$
- spm(97,97) := 97$
- spm(98,98) := 98$
- spm(99,99) := 99$
- spm(100,100) := 100$
- spmult_rows(mat1,{1,3,5},10);
- spm(1,1) := 20$
- spm(2,2) := 4$
- spm(3,3) := 60$
- spm(4,4) := 8$
- spm(5,5) := 100$
- sppivot(mat3,3,3);
- spm(1,1) := 1$
- spm(1,2) := 2$
- spm(2,1) := 3$
- spm(2,2) := 4$
- spm(3,3) := 1$
- spm(3,4) := 2$
- spm(4,4) := -2$
- spm(5,5) := 1$
- spm(5,6) := 2$
- spm(6,5) := 3$
- spm(6,6) := 4$
- sprows_pivot(mat3,1,1,{2,4});
- spm(1,1) := 1$
- spm(1,2) := 2$
- spm(2,2) := -2$
- spm(3,3) := 1$
- spm(3,4) := 2$
- spm(4,3) := 3$
- spm(4,4) := 4$
- spm(5,5) := 1$
- spm(5,6) := 2$
- spm(6,5) := 3$
- spm(6,6) := 4$
- spremove_columns(mat1,3);
- spm(1,1) := 2$
- spm(2,2) := 4$
- spm(4,3) := 8$
- spm(5,4) := 10$
- spremove_columns(mat3,{2,3,4});
- spm(1,1) := 1$
- spm(2,1) := 3$
- spm(5,2) := 1$
- spm(5,3) := 2$
- spm(6,2) := 3$
- spm(6,3) := 4$
- spremove_rows(mat1,2);
- spm(1,1) := 2$
- spm(2,3) := 6$
- spm(3,4) := 8$
- spm(4,5) := 10$
- spremove_rows(mat2,{1,3})$
- spremove_rows(mat1,{1,2,3,4,5});
- ***** Warning in spremove_rows:
- all the rows have been removed. Returning nil.
- spswap_cols(mat1,2,4);
- spm(1,1) := 2$
- spm(2,4) := 4$
- spm(3,3) := 6$
- spm(4,2) := 8$
- spm(5,5) := 10$
- spswap_rows(mat5,1,2)$
- spswap_entries(mat1,{1,1},{5,5});
- spm(1,1) := 10$
- spm(2,2) := 4$
- spm(3,3) := 6$
- spm(4,4) := 8$
- spm(5,5) := 2$
- % Constructors - functions that create matrices.
- spband_matrix(x,500)$
- spband_matrix({x,y,z},6000)$
- spblock_matrix(1,2,{mat1,mat1});
- spm(1,1) := 2$
- spm(1,6) := 2$
- spm(2,2) := 4$
- spm(2,7) := 4$
- spm(3,3) := 6$
- spm(3,8) := 6$
- spm(4,4) := 8$
- spm(4,9) := 8$
- spm(5,5) := 10$
- spm(5,10) := 10$
- spblock_matrix(2,3,{mat3,mat6,mat3,mat6,mat3,mat6});
- spm(1,1) := 1$
- spm(1,2) := 2$
- spm(1,7) := i + 1$
- spm(1,8) := i + 2$
- spm(1,9) := i + 3$
- spm(1,13) := 1$
- spm(1,14) := 2$
- spm(2,1) := 3$
- spm(2,2) := 4$
- spm(2,7) := 4$
- spm(2,8) := 5$
- spm(2,9) := 2$
- spm(2,13) := 3$
- spm(2,14) := 4$
- spm(3,3) := 1$
- spm(3,4) := 2$
- spm(3,7) := 1$
- spm(3,8) := i$
- spm(3,15) := 1$
- spm(3,16) := 2$
- spm(4,3) := 3$
- spm(4,4) := 4$
- spm(4,10) := i + 1$
- spm(4,11) := i + 2$
- spm(4,12) := i + 3$
- spm(4,15) := 3$
- spm(4,16) := 4$
- spm(5,5) := 1$
- spm(5,6) := 2$
- spm(5,10) := 4$
- spm(5,11) := 5$
- spm(5,12) := 2$
- spm(5,17) := 1$
- spm(5,18) := 2$
- spm(6,5) := 3$
- spm(6,6) := 4$
- spm(6,10) := 1$
- spm(6,11) := i$
- spm(6,17) := 3$
- spm(6,18) := 4$
- spm(7,1) := i + 1$
- spm(7,2) := i + 2$
- spm(7,3) := i + 3$
- spm(7,7) := 1$
- spm(7,8) := 2$
- spm(7,13) := i + 1$
- spm(7,14) := i + 2$
- spm(7,15) := i + 3$
- spm(8,1) := 4$
- spm(8,2) := 5$
- spm(8,3) := 2$
- spm(8,7) := 3$
- spm(8,8) := 4$
- spm(8,13) := 4$
- spm(8,14) := 5$
- spm(8,15) := 2$
- spm(9,1) := 1$
- spm(9,2) := i$
- spm(9,9) := 1$
- spm(9,10) := 2$
- spm(9,13) := 1$
- spm(9,14) := i$
- spm(10,4) := i + 1$
- spm(10,5) := i + 2$
- spm(10,6) := i + 3$
- spm(10,9) := 3$
- spm(10,10) := 4$
- spm(10,16) := i + 1$
- spm(10,17) := i + 2$
- spm(10,18) := i + 3$
- spm(11,4) := 4$
- spm(11,5) := 5$
- spm(11,6) := 2$
- spm(11,11) := 1$
- spm(11,12) := 2$
- spm(11,16) := 4$
- spm(11,17) := 5$
- spm(11,18) := 2$
- spm(12,4) := 1$
- spm(12,5) := i$
- spm(12,11) := 3$
- spm(12,12) := 4$
- spm(12,16) := 1$
- spm(12,17) := i$
- spchar_matrix(mat3,x);
- spm(1,1) := x - 1$
- spm(1,2) := -2$
- spm(2,1) := -3$
- spm(2,2) := x - 4$
- spm(3,3) := x - 1$
- spm(3,4) := -2$
- spm(4,3) := -3$
- spm(4,4) := x - 4$
- spm(5,5) := x - 1$
- spm(5,6) := -2$
- spm(6,5) := -3$
- spm(6,6) := x - 4$
- cfmat := spcoeff_matrix({y+4*+-5*w=10,y-z=20,y+4+3*z,w+x+50});
- {
- spm(1,1) := 1$
- spm(1,2) := -20$
- spm(2,1) := 1$
- spm(2,3) := -1$
- spm(3,1) := 1$
- spm(3,3) := 3$
- spm(4,2) := 1$
- spm(4,4) := 1$
- ,
- spm(1,1) := y$
- spm(2,1) := w$
- spm(3,1) := z$
- spm(4,1) := x$
- ,
- spm(1,1) := 10$
- spm(2,1) := 20$
- spm(3,1) := -4$
- spm(4,1) := -50$
- cfmat := }
- first cfmat * second cfmat;
- spm(1,1) := - 20*w + y$
- spm(2,1) := y - z$
- spm(3,1) := y + 3*z$
- spm(4,1) := w + x$
- third cfmat;
- spm(1,1) := 10$
- spm(2,1) := 20$
- spm(3,1) := -4$
- spm(4,1) := -50$
- spcompanion(poly,x);
- spm(1,7) := -12$
- spm(2,1) := 1$
- spm(3,2) := 1$
- spm(4,3) := 1$
- spm(4,7) := -5$
- spm(5,4) := 1$
- spm(5,7) := -4$
- spm(6,5) := 1$
- spm(6,7) := -1$
- spm(7,6) := 1$
- sphessian(poly1,{w,x,y,z});
- spm(2,2) := 2$
- 2 3
- spm(2,3) := 3*y + z + 1$
- 2
- spm(2,4) := 3*y*z $
- 2 3
- spm(3,2) := 3*y + z + 1$
- spm(3,3) := 6*x*y$
- 2
- spm(3,4) := 3*x*z $
- 2
- spm(4,2) := 3*y*z $
- 2
- spm(4,3) := 3*x*z $
- spm(4,4) := 6*x*y*z$
- spjacobian({x^4,x*y^2,x*y*z^3},{w,x,y,z});
- 3
- spm(1,2) := 4*x $
- 2
- spm(2,2) := y $
- spm(2,3) := 2*x*y$
- 3
- spm(3,2) := y*z $
- 3
- spm(3,3) := x*z $
- 2
- spm(3,4) := 3*x*y*z $
- spjordan_block(x,500)$
- spmake_identity(1000)$
- on rounded;
- % makes output easier to read.
- ch := spcholesky(mat1);
- {
- spm(1,1) := 1.41421356237$
- spm(2,2) := 2.0$
- spm(3,3) := 2.44948974278$
- spm(4,4) := 2.82842712475$
- spm(5,5) := 3.16227766017$
- ,
- spm(1,1) := 1.41421356237$
- spm(2,2) := 2.0$
- spm(3,3) := 2.44948974278$
- spm(4,4) := 2.82842712475$
- spm(5,5) := 3.16227766017$
- ch := }
- tp first ch - second ch;
- "Empty Matrix"
- tmp := first ch * second ch;
- spm(1,1) := 2.0$
- spm(2,2) := 4.0$
- spm(3,3) := 6.0$
- spm(4,4) := 8.0$
- spm(5,5) := 10.0$
- tmp :=
- tmp - mat1;
- "Empty Matrix"
- off rounded;
- % The gram schmidt functions takes a list of vectors.
- % These vectors are matrices of type 'sparse with column dimension 1.
- %Create the "vectors".
- sparse a(4,1);
- sparse b(4,1);
- sparse c(4,1);
- sparse d(4,1);
- %Fill the "vectors" with data.
- a(1,1):=1;
- a(1,1) := 1
- b(1,1):=1;
- b(1,1) := 1
- b(2,1):=1;
- b(2,1) := 1
- c(1,1):=1;
- c(1,1) := 1
- c(2,1):=1;
- c(2,1) := 1
- c(3,1):=1;
- c(3,1) := 1
- d(1,1):=1;
- d(1,1) := 1
- d(2,1):=1;
- d(2,1) := 1
- d(3,1):=1;
- d(3,1) := 1
- d(4,1):=1;
- d(4,1) := 1
- spgram_schmidt({{a},{b},{c},{d}});
- {
- spm(1,1) := 1$
- ,
- spm(2,1) := 1$
- ,
- spm(3,1) := 1$
- ,
- spm(4,1) := 1$
- }
- on rounded;
- % again, makes large quotients a bit more readable.
- % The algorithm used for splu_decom sometimes swaps the rows of the
- % input matrix so that (given matrix A, splu_decom(A) = {L,U,vec}),
- % we find L*U does not equal A but a row equivalent of it. The call
- % spconvert(A,vec) will return this row equivalent
- % (ie: L*U = convert(A,vec)).
- lu := splu_decom(mat5)$
- tmp := first lu * second lu$
- tmp1 := spconvert(mat5,third lu);
- spm(1,1) := 3$
- spm(1,2) := 1$
- spm(2,1) := 1$
- spm(2,2) := 3$
- spm(2,3) := 1$
- spm(3,2) := 1$
- spm(3,3) := 3$
- spm(3,4) := 1$
- spm(4,3) := 1$
- spm(4,4) := 3$
- spm(4,5) := 1$
- spm(5,4) := 1$
- spm(5,5) := 3$
- spm(5,6) := 1$
- spm(6,5) := 1$
- spm(6,6) := 3$
- spm(6,7) := 1$
- spm(7,6) := 1$
- spm(7,7) := 3$
- spm(7,8) := 1$
- spm(8,7) := 1$
- spm(8,8) := 3$
- spm(8,9) := 1$
- spm(9,8) := 1$
- spm(9,9) := 3$
- spm(9,10) := 1$
- spm(10,9) := 1$
- spm(10,10) := 3$
- spm(10,11) := 1$
- spm(11,10) := 1$
- spm(11,11) := 3$
- spm(11,12) := 1$
- spm(12,11) := 1$
- spm(12,12) := 3$
- spm(12,13) := 1$
- spm(13,12) := 1$
- spm(13,13) := 3$
- spm(13,14) := 1$
- spm(14,13) := 1$
- spm(14,14) := 3$
- spm(14,15) := 1$
- spm(15,14) := 1$
- spm(15,15) := 3$
- spm(15,16) := 1$
- spm(16,15) := 1$
- spm(16,16) := 3$
- spm(16,17) := 1$
- spm(17,16) := 1$
- spm(17,17) := 3$
- spm(17,18) := 1$
- spm(18,17) := 1$
- spm(18,18) := 3$
- spm(18,19) := 1$
- spm(19,18) := 1$
- spm(19,19) := 3$
- spm(19,20) := 1$
- spm(20,19) := 1$
- spm(20,20) := 3$
- spm(20,21) := 1$
- spm(21,20) := 1$
- spm(21,21) := 3$
- spm(21,22) := 1$
- spm(22,21) := 1$
- spm(22,22) := 3$
- spm(22,23) := 1$
- spm(23,22) := 1$
- spm(23,23) := 3$
- spm(23,24) := 1$
- spm(24,23) := 1$
- spm(24,24) := 3$
- spm(24,25) := 1$
- spm(25,24) := 1$
- spm(25,25) := 3$
- spm(25,26) := 1$
- spm(26,25) := 1$
- spm(26,26) := 3$
- spm(26,27) := 1$
- spm(27,26) := 1$
- spm(27,27) := 3$
- spm(27,28) := 1$
- spm(28,27) := 1$
- spm(28,28) := 3$
- spm(28,29) := 1$
- spm(29,28) := 1$
- spm(29,29) := 3$
- spm(29,30) := 1$
- spm(30,29) := 1$
- spm(30,30) := 3$
- spm(30,31) := 1$
- spm(31,30) := 1$
- spm(31,31) := 3$
- spm(31,32) := 1$
- spm(32,31) := 1$
- spm(32,32) := 3$
- spm(32,33) := 1$
- spm(33,32) := 1$
- spm(33,33) := 3$
- spm(33,34) := 1$
- spm(34,33) := 1$
- spm(34,34) := 3$
- spm(34,35) := 1$
- spm(35,34) := 1$
- spm(35,35) := 3$
- spm(35,36) := 1$
- spm(36,35) := 1$
- spm(36,36) := 3$
- spm(36,37) := 1$
- spm(37,36) := 1$
- spm(37,37) := 3$
- spm(37,38) := 1$
- spm(38,37) := 1$
- spm(38,38) := 3$
- spm(38,39) := 1$
- spm(39,38) := 1$
- spm(39,39) := 3$
- spm(39,40) := 1$
- spm(40,39) := 1$
- spm(40,40) := 3$
- spm(40,41) := 1$
- spm(41,40) := 1$
- spm(41,41) := 3$
- spm(41,42) := 1$
- spm(42,41) := 1$
- spm(42,42) := 3$
- spm(42,43) := 1$
- spm(43,42) := 1$
- spm(43,43) := 3$
- spm(43,44) := 1$
- spm(44,43) := 1$
- spm(44,44) := 3$
- spm(44,45) := 1$
- spm(45,44) := 1$
- spm(45,45) := 3$
- spm(45,46) := 1$
- spm(46,45) := 1$
- spm(46,46) := 3$
- spm(46,47) := 1$
- spm(47,46) := 1$
- spm(47,47) := 3$
- spm(47,48) := 1$
- spm(48,47) := 1$
- spm(48,48) := 3$
- spm(48,49) := 1$
- spm(49,48) := 1$
- spm(49,49) := 3$
- spm(49,50) := 1$
- spm(50,49) := 1$
- spm(50,50) := 3$
- spm(50,51) := 1$
- spm(51,50) := 1$
- spm(51,51) := 3$
- spm(51,52) := 1$
- spm(52,51) := 1$
- spm(52,52) := 3$
- spm(52,53) := 1$
- spm(53,52) := 1$
- spm(53,53) := 3$
- spm(53,54) := 1$
- spm(54,53) := 1$
- spm(54,54) := 3$
- spm(54,55) := 1$
- spm(55,54) := 1$
- spm(55,55) := 3$
- spm(55,56) := 1$
- spm(56,55) := 1$
- spm(56,56) := 3$
- spm(56,57) := 1$
- spm(57,56) := 1$
- spm(57,57) := 3$
- spm(57,58) := 1$
- spm(58,57) := 1$
- spm(58,58) := 3$
- spm(58,59) := 1$
- spm(59,58) := 1$
- spm(59,59) := 3$
- spm(59,60) := 1$
- spm(60,59) := 1$
- spm(60,60) := 3$
- spm(60,61) := 1$
- spm(61,60) := 1$
- spm(61,61) := 3$
- spm(61,62) := 1$
- spm(62,61) := 1$
- spm(62,62) := 3$
- spm(62,63) := 1$
- spm(63,62) := 1$
- spm(63,63) := 3$
- spm(63,64) := 1$
- spm(64,63) := 1$
- spm(64,64) := 3$
- spm(64,65) := 1$
- spm(65,64) := 1$
- spm(65,65) := 3$
- spm(65,66) := 1$
- spm(66,65) := 1$
- spm(66,66) := 3$
- spm(66,67) := 1$
- spm(67,66) := 1$
- spm(67,67) := 3$
- spm(67,68) := 1$
- spm(68,67) := 1$
- spm(68,68) := 3$
- spm(68,69) := 1$
- spm(69,68) := 1$
- spm(69,69) := 3$
- spm(69,70) := 1$
- spm(70,69) := 1$
- spm(70,70) := 3$
- spm(70,71) := 1$
- spm(71,70) := 1$
- spm(71,71) := 3$
- spm(71,72) := 1$
- spm(72,71) := 1$
- spm(72,72) := 3$
- spm(72,73) := 1$
- spm(73,72) := 1$
- spm(73,73) := 3$
- spm(73,74) := 1$
- spm(74,73) := 1$
- spm(74,74) := 3$
- spm(74,75) := 1$
- spm(75,74) := 1$
- spm(75,75) := 3$
- spm(75,76) := 1$
- spm(76,75) := 1$
- spm(76,76) := 3$
- spm(76,77) := 1$
- spm(77,76) := 1$
- spm(77,77) := 3$
- spm(77,78) := 1$
- spm(78,77) := 1$
- spm(78,78) := 3$
- spm(78,79) := 1$
- spm(79,78) := 1$
- spm(79,79) := 3$
- spm(79,80) := 1$
- spm(80,79) := 1$
- spm(80,80) := 3$
- spm(80,81) := 1$
- spm(81,80) := 1$
- spm(81,81) := 3$
- spm(81,82) := 1$
- spm(82,81) := 1$
- spm(82,82) := 3$
- spm(82,83) := 1$
- spm(83,82) := 1$
- spm(83,83) := 3$
- spm(83,84) := 1$
- spm(84,83) := 1$
- spm(84,84) := 3$
- spm(84,85) := 1$
- spm(85,84) := 1$
- spm(85,85) := 3$
- spm(85,86) := 1$
- spm(86,85) := 1$
- spm(86,86) := 3$
- spm(86,87) := 1$
- spm(87,86) := 1$
- spm(87,87) := 3$
- spm(87,88) := 1$
- spm(88,87) := 1$
- spm(88,88) := 3$
- spm(88,89) := 1$
- spm(89,88) := 1$
- spm(89,89) := 3$
- spm(89,90) := 1$
- spm(90,89) := 1$
- spm(90,90) := 3$
- spm(90,91) := 1$
- spm(91,90) := 1$
- spm(91,91) := 3$
- spm(91,92) := 1$
- spm(92,91) := 1$
- spm(92,92) := 3$
- spm(92,93) := 1$
- spm(93,92) := 1$
- spm(93,93) := 3$
- spm(93,94) := 1$
- spm(94,93) := 1$
- spm(94,94) := 3$
- spm(94,95) := 1$
- spm(95,94) := 1$
- spm(95,95) := 3$
- spm(95,96) := 1$
- spm(96,95) := 1$
- spm(96,96) := 3$
- spm(96,97) := 1$
- spm(97,96) := 1$
- spm(97,97) := 3$
- spm(97,98) := 1$
- spm(98,97) := 1$
- spm(98,98) := 3$
- spm(98,99) := 1$
- spm(99,98) := 1$
- spm(99,99) := 3$
- spm(99,100) := 1$
- spm(100,99) := 1$
- spm(100,100) := 3$
- tmp1 :=
- tmp - tmp1;
- "Empty Matrix"
- % and the complex case..
- on complex;
- *** Domain mode rounded changed to complex-rounded
- lu1 := splu_decom(mat6);
- {
- spm(1,1) := 1$
- spm(2,1) := 4$
- spm(2,2) := 5 - 4*i$
- spm(3,1) := 1 + i$
- spm(3,2) := 3$
- spm(3,3) := 2.26829268293 + 0.414634146341*i$
- spm(4,4) := 1$
- spm(5,4) := 4$
- spm(5,5) := 5 - 4*i$
- spm(6,4) := 1 + i$
- spm(6,5) := 3$
- spm(6,6) := 2.26829268293 + 0.414634146341*i$
- ,
- spm(1,1) := 1$
- spm(1,2) := i$
- spm(2,2) := 1$
- spm(2,3) := 0.243902439024 + 0.19512195122*i$
- spm(3,3) := 1$
- spm(4,4) := 1$
- spm(4,5) := i$
- spm(5,5) := 1$
- spm(5,6) := 0.243902439024 + 0.19512195122*i$
- spm(6,6) := 1$
- lu1 := ,[3,2,3,6,5,6]}
- mat6;
- spm(1,1) := i + 1$
- spm(1,2) := i + 2$
- spm(1,3) := i + 3$
- spm(2,1) := 4$
- spm(2,2) := 5$
- spm(2,3) := 2$
- spm(3,1) := 1$
- spm(3,2) := i$
- spm(4,4) := i + 1$
- spm(4,5) := i + 2$
- spm(4,6) := i + 3$
- spm(5,4) := 4$
- spm(5,5) := 5$
- spm(5,6) := 2$
- spm(6,4) := 1$
- spm(6,5) := i$
- tmp := first lu1 * second lu1;
- spm(1,1) := 1$
- spm(1,2) := i$
- spm(2,1) := 4$
- spm(2,2) := 5$
- spm(2,3) := 2.0$
- spm(3,1) := 1 + i$
- spm(3,2) := 2 + i$
- spm(3,3) := 3.0 + i$
- spm(4,4) := 1$
- spm(4,5) := i$
- spm(5,4) := 4$
- spm(5,5) := 5$
- spm(5,6) := 2.0$
- spm(6,4) := 1 + i$
- spm(6,5) := 2 + i$
- spm(6,6) := 3.0 + i$
- tmp :=
- tmp1 := spconvert(mat6,third lu1);
- spm(1,1) := 1$
- spm(1,2) := i$
- spm(2,1) := 4$
- spm(2,2) := 5$
- spm(2,3) := 2$
- spm(3,1) := i + 1$
- spm(3,2) := i + 2$
- spm(3,3) := i + 3$
- spm(4,4) := 1$
- spm(4,5) := i$
- spm(5,4) := 4$
- spm(5,5) := 5$
- spm(5,6) := 2$
- spm(6,4) := i + 1$
- spm(6,5) := i + 2$
- spm(6,6) := i + 3$
- tmp1 :=
- tmp - tmp1;
- "Empty Matrix"
- off complex;
- *** Domain mode complex-rounded changed to rounded
- mat3inv := sppseudo_inverse(mat3);
- spm(1,1) := - 2.0$
- spm(1,2) := 1$
- spm(2,1) := 1.5$
- spm(2,2) := - 0.5$
- spm(3,3) := - 2.0$
- spm(3,4) := 1$
- spm(4,3) := 1.5$
- spm(4,4) := - 0.5$
- spm(5,5) := - 2.0$
- spm(5,6) := 1$
- spm(6,5) := 1.5$
- spm(6,6) := - 0.5$
- mat3inv :=
- mat3 * mat3inv;
- spm(1,1) := 1$
- spm(2,2) := 1$
- spm(3,3) := 1$
- spm(4,4) := 1$
- spm(5,5) := 1$
- spm(6,6) := 1$
- % Predicates.
- matrixp(mat1);
- t
- matrixp(poly);
- squarep(mat2);
- t
- squarep(mat3);
- t
- symmetricp(mat1);
- t
- symmetricp(mat3);
- sparsematp(mat1);
- t
- sparsematp(poly);
- off rounded;
- end;
- Time for test: 427 ms, plus GC time: 26 ms
|