tutorial_lud

# Differences

This shows you the differences between two versions of the page.

 tutorial_lud [2014/05/30 11:49]127.0.0.1 external edit tutorial_lud [2017/04/19 13:26]waruna [Generating and Testing Alphabets] 2018/06/19 15:45 sanjay 2018/06/19 15:45 sanjay 2018/06/19 15:41 sanjay 2018/06/19 15:40 sanjay 2017/04/19 14:09 external edit2017/04/19 13:26 waruna [Generating and Testing Alphabets] 2016/12/12 10:12 waruna Changed the latex notation to support new dokuwiki2015/10/06 16:12 sanjay [Step 3 : Equations] 2015/10/06 16:10 sanjay 2015/10/06 16:09 sanjay 2015/03/06 09:34 guillaume 2015/03/06 09:33 guillaume old revision restored (2015/03/02 12:09)2015/03/06 09:32 guillaume input/output/local keywords used2015/03/02 12:09 guillaume Modifying the latex code delete it => old version restored + temp note added2015/03/02 12:05 guillaume old revision restored (2014/05/30 11:49)2015/02/27 08:36 guillaume Corrected condition of second domain of L in equation + alpha program2014/05/30 11:49 external edit Next revision Previous revision 2018/06/19 15:45 sanjay 2018/06/19 15:45 sanjay 2018/06/19 15:41 sanjay 2018/06/19 15:40 sanjay 2017/04/19 14:09 external edit2017/04/19 13:26 waruna [Generating and Testing Alphabets] 2016/12/12 10:12 waruna Changed the latex notation to support new dokuwiki2015/10/06 16:12 sanjay [Step 3 : Equations] 2015/10/06 16:10 sanjay 2015/10/06 16:09 sanjay 2015/03/06 09:34 guillaume 2015/03/06 09:33 guillaume old revision restored (2015/03/02 12:09)2015/03/06 09:32 guillaume input/output/local keywords used2015/03/02 12:09 guillaume Modifying the latex code delete it => old version restored + temp note added2015/03/02 12:05 guillaume old revision restored (2014/05/30 11:49)2015/02/27 08:36 guillaume Corrected condition of second domain of L in equation + alpha program2014/05/30 11:49 external edit Next revision Both sides next revision Line 2: Line 2: The equation for LU Decomposition,​ derived from first principles using simple algebra in {{:​foundations.pdf|Foundations}} (pg.3), is as follows: The equation for LU Decomposition,​ derived from first principles using simple algebra in {{:​foundations.pdf|Foundations}} (pg.3), is as follows: - <​latex>​ + - \$U_{i,​j}=\begin{cases} + /*<​latex>​*/ + $$+ ​U_{i,​j}=\begin{cases} 1=i\le j & A_{i,j}\\ 1=i\le j & A_{i,j}\\ 1 +$$ + /*<\latex>*/ + + + [Temp note due to : in the last case of L, the condition is "1 < j <= i"] =====Writing Alphabets===== =====Writing Alphabets===== Line 40: Line 46: ​ Now these variable declarations need to be placed at appropriate places to specify whether they are input/​output/​local. Now these variable declarations need to be placed at appropriate places to specify whether they are input/​output/​local. - ''​given''​ is the keyword for input, ''​returns''​ is the keyword for output, and ''​using''​ is the keyword for local variables. + ''​input''/​''​given''​ is the keyword for input, ​''​output''/​''​returns''​ is the keyword for output, and ''​local''/​''​using''​ is the keyword for local variables. ​ affine LUD {N|N>0} affine LUD {N|N>0} - given + input   float A {i,​j|1<​=(i,​j)<​=N};​ - float A {i,​j|1<​=(i,​j)<​=N};​ + output - returns + float L {i,​j|1<​=j<​i<​=N};​ float L {i,​j|1<​=j<​i<​=N};​ float U {i,​j|1<​=i<​=j<​=N};​ float U {i,​j|1<​=i<​=j<​=N};​ Line 142: Line 147: L = case L = case ​{i,​j|1==j} : (A / (i,​j->​j,​j)@U);​ ​{i,​j|1==j} : (A / (i,​j->​j,​j)@U);​ - ​{i,​j|1<​i} : (A - reduce(+, (i,​j,​k->​i,​j),​ (i,​j,​k->​i,​k)@L*(i,​j,​k->​k,​j)@U))/​(i,​j->​i,i)@U; + ​{i,​j|1<​i} : (A - reduce(+, (i,​j,​k->​i,​j),​ (i,​j,​k->​i,​k)@L*(i,​j,​k->​k,​j)@U))/​(i,​j->​j,j)@U; esac; esac; ​ ====Final Alphabets Program==== ====Final Alphabets Program==== - Combine all of the above, and you will get the Alphabets program for LU decomposition. Don't forget the keyword ''​through''​ before equations the period at the end (since our example has no local variables). ​ Notice how we can mix and match Show and AShow syntax within the program, but each equation must obviously, be consistent. + Combine all of the above, and you will get the Alphabets program for LU decomposition. Don't forget the keyword ​''​let''/​''​through''​ before equations the period at the end (since our example has no local variables). ​ Notice how we can mix and match Show and AShow syntax within the program, but each equation must obviously, be consistent. ​ affine LUD {N|N>0} affine LUD {N|N>0} - given + input float A {i,​j|1<​=(i,​j)<​=N}; ​ float A {i,​j|1<​=(i,​j)<​=N}; ​ - returns + output float L {i,​j|1<​i<​=N && 1<​=j<​i};​ float L {i,​j|1<​i<​=N && 1<​=j<​i};​ float U {i,​j|1<​=j<​=N && 1<​=i<​=j};​ float U {i,​j|1<​=j<​=N && 1<​=i<​=j};​ - through + let ​U[i,​j] = case ​U[i,​j] = case {|1==i} : A[i,j]; {|1==i} : A[i,j]; Line 161: Line 166: L = case L = case {i,j|1==j} : A / (i,​j->​j,​j)@U;​ {i,j|1==j} : A / (i,​j->​j,​j)@U;​ - {i,j|1​i,​j),​ (i,​j,​k->​i,​k)@L*(i,​j,​k->​k,​j)@U))/​(i,​j->​j,​j)@U;​ + {i,j|1​i,​j),​ (i,​j,​k->​i,​k)@L*(i,​j,​k->​k,​j)@U))/​(i,​j->​j,​j)@U;​ esac; esac; . . Line 168: Line 173: Analyses, transformations,​ and code generation of Alphabets programs are performed using the AlphaZ system. The normal interface for using AlphaZ is the scripting interface called compiler scripts. Analyses, transformations,​ and code generation of Alphabets programs are performed using the AlphaZ system. The normal interface for using AlphaZ is the scripting interface called compiler scripts. Given below is an example script for that does several things using the LUD program we wrote above. Given below is an example script for that does several things using the LUD program we wrote above. - + # read program and store the internal representation in variable prog # read program and store the internal representation in variable prog prog = ReadAlphabets("​./​LUD.ab"​);​ prog = ReadAlphabets("​./​LUD.ab"​);​