Linear Algebra and the C Language/a0az
Install and compile this file in your working directory.
/* ------------------------------------ */
/* Save as : c00a.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
void fun(int r,int rn)
{
double **A = r_mR(i_mR(r+rn,r),9.);
double **Q = i_mR(r+rn,r);
double **R = i_mR(r,r);
clrscrn();
printf(" A :");
P_mR(A,S3,P0,C6);
printf(" Copy/Paste into the octave windows \n\n");
p_Octave_mR(A,"a",P0);
printf(" [Q, R] = qr (a,0) \n\n");
stop();
clrscrn();
QR_mR(A,Q,R);
printf(" Q :");
p_mR(Q,S10,P6,C6);
printf(" R :");
p_mR(R,S10,P6,C6);
stop();
clrscrn();
printf(" A :");
p_mR(A,S3,P0,C6);
printf(" A = Q * R :");
mul_mR(Q,R, A);
p_mR(A,S10,P4,C6);
f_mR(A);
f_mR(Q);
f_mR(R);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do
{
fun(rp_I(R3),rp_I(C2));
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Screen output example:
A :
-8, -3, -1,
-3, +3, -4,
+1, -3, -9,
-8, +6, -2,
-2, +1, +3
Copy/Paste into the octave windows
a=[
-8,-3,-1;
-3,+3,-4;
+1,-3,-9;
-8,+6,-2;
-2,+1,+3]
[Q, R] = qr (a,0)
Press return to continue.
Q :
-0.671345 -0.700678 +0.154918
-0.251754 +0.299468 -0.407390
+0.083918 -0.372415 -0.824559
-0.671345 +0.525988 -0.182945
-0.167836 +0.063349 +0.310913
R :
+11.916375 -3.188889 +1.762281
-0.000000 +7.336960 +1.992612
-0.000000 +0.000000 +10.194305
Press return to continue.
A :
-8 -3 -1
-3 +3 -4
+1 -3 -9
-8 +6 -2
-2 +1 +3
A = Q * R :
-8.0000 -3.0000 -1.0000
-3.0000 +3.0000 -4.0000
+1.0000 -3.0000 -9.0000
-8.0000 +6.0000 -2.0000
-2.0000 +1.0000 +3.0000
Press return to continue
Press X return to stop