Linear Algebra and the C Language/a088
Install and compile this file in your working directory.
/* ------------------------------------ */
/* Save as : c00a.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
#define RA R3
#define CA C4
#define Cb C1
/* ------------------------------------ */
/* ------------ Chemistry ------------ */
void p_xn_mR(
double **b
)
{
int r;
for(r=R1; r<b[R_SIZE][C0]; r++)
printf("double x%d = %+0.8f;\n",r,b[r][C2]);
printf("\n\n");
}
/* ------------------------------------ */
/* ------------------------------------ */
int main(void)
{
double ab[RA*(CA+C1)]={
// x1 x2 x3 x4 b
1, 0, -1, -0, 0, //C
4, 0, -0, -2, 0, //H
0, 2, -2, -1, 0, //O
};
double **Ab = ca_A_mR(ab,i_Abr_Ac_bc_mR(RA,CA,Cb));
double **Ab_free = i_Abr_Ac_bc_mR(csize_A_R(Ab),csize_A_R(Ab),Cb+C1);
double **b_free = i_mR(rsize_R(Ab_free),csize_b_R(Ab_free));
clrscrn();
printf(" Ab :");
p_mR(Ab,S10,P4,C10);
printf(" Ab : gj_PP_mR(Ab,NO) :");
gj_PP_mR(Ab,NO);
p_mR(Ab,S10,P4,C10);
put_zeroR_mR(Ab,Ab_free);
printf(" Ab_free : put_zeroR_mR(Ab,Ab_free);");
p_mR(Ab_free,S10,P4,C10);
put_freeV_mR(Ab_free);
printf(" Ab_free : put_freeV_mR(Ab_free);");
p_mR(Ab_free,S10,P4,C10);
stop();
clrscrn();
printf(" Ab_free : gj_PP_mR(Ab_free,YES);");
gj_PP_mR(Ab_free,YES);
p_mR(Ab_free,S10,P4,C10);
c_Ab_b_mR(Ab_free,b_free);
printf(" b_free : free variables");
p_freeV(b_free,S8,P8);
printf("Copy/Paste These code in the c00b.c file.\n\n");
p_xn_mR(b_free);
stop();
f_mR(Ab);
f_mR(Ab_free);
f_mR(b_free);
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
- The values for calculating the coefficients of the chemical equation are given in a list.
- You need to copy the list of these values into the following file: c00b.c.
Screen output example:
Ab :
+1.0000 +0.0000 -1.0000 +0.0000 +0.0000
+4.0000 +0.0000 +0.0000 -2.0000 +0.0000
+0.0000 +2.0000 -2.0000 -1.0000 +0.0000
Ab : gj_PP_mR(Ab,NO) :
+1.0000 +0.0000 +0.0000 -0.5000 +0.0000
+0.0000 +1.0000 -1.0000 -0.5000 +0.0000
-0.0000 -0.0000 +1.0000 -0.5000 -0.0000
Ab_free : put_zeroR_mR(Ab,Ab_free);
+1.0000 +0.0000 +0.0000 -0.5000 +0.0000 +0.0000
+0.0000 +1.0000 -1.0000 -0.5000 +0.0000 +0.0000
-0.0000 -0.0000 +1.0000 -0.5000 -0.0000 +0.0000
+0.0000 +0.0000 +0.0000 +0.0000 +0.0000 +0.0000
Ab_free : put_freeV_mR(Ab_free);
+1.0000 +0.0000 +0.0000 -0.5000 +0.0000 +0.0000
+0.0000 +1.0000 -1.0000 -0.5000 +0.0000 +0.0000
-0.0000 -0.0000 +1.0000 -0.5000 -0.0000 +0.0000
+0.0000 +0.0000 +0.0000 +1.0000 +0.0000 +1.0000
Press return to continue.
Ab_free : gj_PP_mR(Ab_free,YES);
+1.0000 +0.0000 +0.0000 +0.0000 +0.0000 +0.5000
+0.0000 +1.0000 +0.0000 +0.0000 +0.0000 +1.0000
+0.0000 +0.0000 +1.0000 +0.0000 +0.0000 +0.5000
+0.0000 +0.0000 +0.0000 +1.0000 +0.0000 +1.0000
b_free : free variables
x1 = +0.00000000 +0.50000000*u
x2 = +0.00000000 +1.00000000*u
x3 = +0.00000000 +0.50000000*u
x4 = +0.00000000 +1.00000000*u
Copy/Paste These code in the c00b.c file.
double x1 = +0.50000000;
double x2 = +1.00000000;
double x3 = +0.50000000;
double x4 = +1.00000000;
Press return to continue.