Linear Algebra and the C Language/a0ld
Install and compile this file in your working directory.
/* ------------------------------------ */
/* Save as: c00d2.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
/* ------------------------------------ */
#define RC RC3
/* ------------------------------------ */
/* ------------------------------------ */
int main(void)
{
double tu[RC*C1]={
-7,
-6,
+8
};
double tv[RC*C1]={
-5,
-4,
+7
};
double tQ[RC*RC]={
+0.4819, +0.4615, +0.7448,
+0.6196, -0.7806, +0.0828,
+0.6196, +0.4216, -0.6621
};
double **u = ca_A_mR(tu, i_mR(RC,C1));
double **v = ca_A_mR(tv, i_mR(RC,C1));
double **Q = ca_A_mR(tQ, i_mR(RC,RC));
double **Qu = mul_mR(Q,u, i_mR(RC,C1));
double **Qv = mul_mR(Q,v, i_mR(RC,C1));
clrscrn();
printf(" Calculate the cosine of the angle"
" between vectors U and V: \n\n");
printf(" u:");
p_mR(u, S3,P0,C6);
printf(" v:");
p_mR(v, S3,P0,C6);
printf(" <u,v> \n"
" cos(alpha) = ----------- = %+.4f \n"
" ||u|| ||v|| \n\n\n\n\n",
dot_R(u,v)
/
( norm_R(u) * norm_R(v) ));
stop();
clrscrn();
printf(" Q:");
p_mR(Q, S3,P4,C6);
printf("\n\n\n\n\n");
stop();
clrscrn();
printf(" Calculate the cosine of the angle"
" between vectors U and V: \n\n");
printf(" Qu:");
p_mR(Qu, S3,P4,C6);
printf(" Qv:");
p_mR(Qv, S3,P4,C6);
printf(" <Qu,Qv> \n"
" cos(alpha) = ------------- = %+.4f \n"
" ||Qu|| ||Qv|| \n\n\n\n\n",
dot_R(Qu,Qv)
/
( norm_R(Qu) * norm_R(Qv) ));
stop();
clrscrn();
printf(" Orthonormal matrices preserve angles.\n\n"
" Calculate the cosine of the angle between"
" vectors U and V: \n\n"
" <u,v> \n"
" cos(alpha) = ----------- = %+.4f \n"
" ||u|| ||v|| \n\n\n\n\n",
dot_R(u,v)
/
( norm_R(u) * norm_R(v) ));
printf(" <Qu,Qv> \n"
" cos(alpha) = ------------- = %+.4f \n"
" ||Qu|| ||Qv|| \n\n\n\n\n",
dot_R(Qu,Qv)
/
( norm_R(Qu) * norm_R(Qv) ));
stop();
f_mR(u);
f_mR(v);
f_mR(Qu);
f_mR(Qv);
f_mR(Q);
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Screen output example:
Calculate the cosine of the angle between vectors U and V:
u:
-7
-6
+8
v:
-5
-4
+7
<u,v>
cos(alpha) = ----------- = +0.9931
||u|| ||v||
Press return to continue.
Q:
+0.4819 +0.4615 +0.7448
+0.6196 -0.7806 +0.0828
+0.6196 +0.4216 -0.6621
Press return to continue.
Calculate the cosine of the angle between vectors U and V:
Qu:
-0.1839
+1.0088
-12.1636
Qv:
+0.9581
+0.6040
-9.4191
<Qu,Qv>
cos(alpha) = ------------- = +0.9931
||Qu|| ||Qv||
Press return to continue.
Orthonormal matrices preserve angles.
Calculate the cosine of the angle between vectors U and V:
<u,v>
cos(alpha) = ----------- = +0.9931
||u|| ||v||
<Qu,Qv>
cos(alpha) = ------------- = +0.9931
||Qu|| ||Qv||
Press return to continue.