Linear Algebra and the C Language/a0l5
Install and compile this file in your working directory.
/* ------------------------------------ */
/* Save as: c00a.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
/* ------------------------------------ */
#define ARRAY A3
/* ------------------------------------ */
#define RC RC3
/* ------------------------------------ */
/* ------------------------------------ */
void fun(void)
{
double **Q = r_Q_mR( i_mR(RC,RC), 9);
double **u[ARRAY];
int i,j;
for(i=A0; i<ARRAY; i++)
{
u[i] = i_mR(RC,C1);
c_c_mR(Q,(i+C1),u[i],C1);
}
clrscrn();
printf(" Orthonormal basis:\n\n");
for(i=A0; i<ARRAY; i++)
{
printf(" u[%d]:",i);
p_mR(u[i], S5,P4,C6);
}
stop();
clrscrn();
for(i=A0; i<ARRAY; i++)
printf(" ||u[%d]|| = %.4f:\n",i,norm_R(u[i]));
printf(" \n\n\n"
" <u,v> = v^t u\n\n");
for(i=A0; i<ARRAY; i++)
for(j=A0; j<ARRAY; j++)
if(i!=j)
printf(" <u[%d],u[%d]> = %+.4f\n",i,j, dot_R(u[i],u[j]));
for(i=A0; i<ARRAY; i++)
f_mR(u[i]);
f_mR(Q);
}
int main(void)
{
time_t t;
srand(time(&t));
do
{
fun();
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Screen output example:
Orthonormal basis:
u[0]:
+0.1980
+0.6931
+0.6931
u[1]:
-0.8995
+0.4094
-0.1524
u[2]:
-0.3894
-0.5933
+0.7045
Press return to continue.
||u[0]|| = 1.0000:
||u[1]|| = 1.0000:
||u[2]|| = 1.0000:
<u,v> = v^t u
<u[0],u[1]> = -0.0000
<u[0],u[2]> = +0.0000
<u[1],u[0]> = -0.0000
<u[1],u[2]> = +0.0000
<u[2],u[0]> = +0.0000
<u[2],u[1]> = +0.0000
Press return to continue
Press X return to stop