How to resolve the algorithm Pascal matrix generation step by step in the ALGOL 68 programming language
How to resolve the algorithm Pascal matrix generation step by step in the ALGOL 68 programming language
Table of Contents
Problem Statement
A pascal matrix is a two-dimensional square matrix holding numbers from Pascal's triangle, also known as binomial coefficients and which can be shown as nCr. Shown below are truncated 5-by-5 matrices M[i, j] for i,j in range 0..4. A Pascal upper-triangular matrix that is populated with jCi: A Pascal lower-triangular matrix that is populated with iCj (the transpose of the upper-triangular matrix): A Pascal symmetric matrix that is populated with i+jCi:
Write functions capable of generating each of the three forms of n-by-n matrices. Use those functions to display upper, lower, and symmetric Pascal 5-by-5 matrices on this page. The output should distinguish between different matrices and the rows of each matrix (no showing a list of 25 numbers assuming the reader should split it into rows).
The Cholesky decomposition of a Pascal symmetric matrix is the Pascal lower-triangle matrix of the same size.
Let's start with the solution:
Step by Step solution about How to resolve the algorithm Pascal matrix generation step by step in the ALGOL 68 programming language
Source code in the algol programming language
BEGIN
# returns an upper Pascal matrix of size n #
PROC upper pascal matrix = ( INT n )[,]INT:
BEGIN
[ 1 : n, 1 : n ]INT result;
FOR j TO n DO result[ 1, j ] := 1 OD;
FOR i FROM 2 TO n DO
result[ i, 1 ] := 0;
FOR j FROM 2 TO n DO
result[ i, j ] := result[ i - 1, j - 1 ] + result[ i, j - 1 ]
OD
OD;
result
END # upper pascal matrix # ;
# returns a lower Pascal matrix of size n #
PROC lower pascal matrix = ( INT n )[,]INT:
BEGIN
[ 1 : n, 1 : n ]INT result;
FOR i TO n DO result[ i, 1 ] := 1 OD;
FOR j FROM 2 TO n DO
result[ 1, j ] := 0;
FOR i FROM 2 TO n DO
result[ i, j ] := result[ i - 1, j - 1 ] + result[ i - 1, j ]
OD
OD;
result
END # lower pascal matrix # ;
# returns a symmetric Pascal matrix of size n #
PROC symmetric pascal matrix = ( INT n )[,]INT:
BEGIN
[ 1 : n, 1 : n ]INT result;
FOR i TO n DO
result[ i, 1 ] := 1;
result[ 1, i ] := 1
OD;
FOR j FROM 2 TO n DO
FOR i FROM 2 TO n DO
result[ i, j ] := result[ i, j - 1 ] + result[ i - 1, j ]
OD
OD;
result
END # symmetric pascal matrix # ;
# print the matrix m with the specified field width #
PROC print matrix = ( [,]INT m, INT field width )VOID:
BEGIN
FOR i FROM 1 LWB m TO 1 UPB m DO
FOR j FROM 2 LWB m TO 2 UPB m DO
print( ( " ", whole( m[ i, j ], - field width ) ) )
OD;
print( ( newline ) )
OD
END # print matrix # ;
print( ( "upper:", newline ) ); print matrix( upper pascal matrix( 5 ), 2 );
print( ( "lower:", newline ) ); print matrix( lower pascal matrix( 5 ), 2 );
print( ( "symmetric:", newline ) ); print matrix( symmetric pascal matrix( 5 ), 2 )
END
You may also check:How to resolve the algorithm Generic swap step by step in the Erlang programming language
You may also check:How to resolve the algorithm Colour pinstripe/Display step by step in the Racket programming language
You may also check:How to resolve the algorithm Temperature conversion step by step in the МК-61/52 programming language
You may also check:How to resolve the algorithm Determine if a string is numeric step by step in the AArch64 Assembly programming language
You may also check:How to resolve the algorithm Hamming numbers step by step in the Pascal programming language