Linear Algebra and the C Language/a0k2
Install and compile this file in your working directory.
/* ------------------------------------ */
/* Save as : c00c.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
#define RA R3
#define CA C3
#define Cb C1
/* ------------------------------------ */
int main(void)
{
double ab[RA*(CA+Cb)]={
-2.0, -9.0, +4.0, -202.0,
-1.0, +1.0, -1.0, +3.0,
+8.0, +6.0, -2.0, +236.0
};
double **Ab = ca_A_mR(ab,i_Abr_Ac_bc_mR(RA,CA,Cb));
double **A = c_Ab_A_mR(Ab,i_mR(RA,CA));
double **b = c_Ab_b_mR(Ab,i_mR(RA,Cb));
clrscrn();
printf(" You have this nonlinear system of equations :\n\n");
printf(" a x*y + b x*z + c z**(1/2) = d \n");
printf(" e x*y + f x*z + g z**(1/2) = h \n");
printf(" i x*y + j x*z + k z**(1/2) = l \n\n");
printf(" We write X = x*y; Y = x*z; Z = z**(1/2);\n\n");
printf(" a X + b Y + c Z = d\n");
printf(" e X + f Y + g Z = h\n");
printf(" i X + j Y + k Z = l\n\n");
printf(" Ab :\n");
printf(" a b c d\n");
printf(" e f g h\n");
printf(" i j k l\n\n\n");
stop();
clrscrn();
printf(" With A:");
p_mR(A, S8,P4,C7);
printf(" And b:");
p_mR(b, S8,P4,C7);
printf(" Ab:");
p_mR(Ab, S8,P4,C7);
stop();
clrscrn();
printf(" Copy/Paste into the octave window.\n\n");
p_Octave_mR(Ab,"Ab",P4);
printf("\n rref(Ab,.00000000001)\n\n");
printf(" gj_TP_mR(Ab):");
p_mR(gj_TP_mR(Ab), S10,P4,C7);
printf(" You have X= x*y = 15, Y = x*z = 20, Z = z**(1/2) = 2 \n\n");
printf(" These give x = 5, y = 3, z = 4 \n\n\n");
stop();
f_mR(Ab);
f_mR(b);
f_mR(A);
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Screen output example:
You have this nonlinear system of equations :
a x*y + b x*z + c z**(1/2) = d
e x*y + f x*z + g z**(1/2) = h
i x*y + j x*z + k z**(1/2) = l
We write X = x*y; Y = x*z; Z = z**(1/2);
a X + b Y + c Z = d
e X + f Y + g Z = h
i X + j Y + k Z = l
Ab :
a b c d
e f g h
i j k l
Press return to continue.
With A:
-2.0000 -9.0000 +4.0000
-1.0000 +1.0000 -1.0000
+8.0000 +6.0000 -2.0000
And b:
-202.0000
+3.0000
+236.0000
Ab:
-2.0000 -9.0000 +4.0000 -202.0000
-1.0000 +1.0000 -1.0000 +3.0000
+8.0000 +6.0000 -2.0000 +236.0000
Press return to continue.
Copy/Paste into the octave window.
Ab=[
-2.0000,-9.0000,+4.0000,-202.0000;
-1.0000,+1.0000,-1.0000,+3.0000;
+8.0000,+6.0000,-2.0000,+236.0000]
rref(Ab,.00000000001)
gj_TP_mR(Ab):
+1.0000 +0.0000 +0.0000 +15.0000
+0.0000 +1.0000 +0.0000 +20.0000
-0.0000 -0.0000 +1.0000 +2.0000
You have X= x*y = 15, Y = x*z = 20, Z = z**(1/2) = 2
These give x = 5, y = 3, z = 4
Press return to continue.