Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * =====================================================================================
- *
- * Filename: example1.c
- *
- * Description:
- *
- * Version: 1.0
- * Created: 06/05/2011 03:09:36 PM
- * Revision: none
- * Compiler: gcc
- *
- * Author: FamiHug (fh), famihug@gmail.com
- * Company: familug.blogspot.com
- *
- * =====================================================================================
- */
- //Giai vi du trang 67 GTS
- //
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- //Nhap ma tran
- void NhapMaTran(float **matrix)
- {
- int size = 3;
- int i,j;
- *matrix = (float *)malloc(size * (size + 1) * sizeof(float));
- printf("Nhap vao ma tran: \n");
- for(i = 0; i < 3; i++)
- {
- for(j = 0; j < 4; j++)
- {
- scanf("%f",*matrix + i * (size + 1) + j);
- }
- }
- printf("Nhap xong!\n");
- return;
- }
- void InRaMatran(float **matrix)
- {
- int size = 3;
- int i,j;
- printf("Ma Tran: \n");
- for(i = 0; i < size; i++)
- {
- for(j = 0; j < size + 1; j++)
- {
- printf("%3.3f ",*(*matrix + i * (size + 1) + j));
- }
- printf("\n");
- }
- return;
- }
- //Viet lai theo dang alphaX
- float *TraVeAlpha(float **matrix)
- {
- int i,j;
- float *alpha;
- int size = 3;
- alpha = NULL;
- alpha = *matrix;
- for(i = 0; i < size; i++)
- {
- for(j = 0; j < size; j++)
- {
- if(i != j) *(alpha + i * (size + 1) + j) = -(*(alpha + i * (size + 1) + j))/(*(alpha + i * (size + 1) + i));
- }
- }
- for(i = 0; i < 3; i++)
- {
- (*(alpha + i * (size + 1) + size)) /= (*(alpha + i * (size + 1) + i));
- *(alpha + i * (size + 1) + i) = 0;
- }
- return alpha;
- }
- //Kiem tra tinh lap don
- float absolute(float x)
- {
- if(x >= 0) return x;
- else return -x;
- }
- int isLapDon(float **alpha)
- {
- int i,j;
- int size = 3;
- float max = 0;
- float tempSum = 0;
- for(i = 0; i < 3; i++)
- {
- tempSum = 0;
- for(j = 0; j < 3; j++)
- {
- tempSum += absolute(*(*alpha + i * (size + 1) + j));
- }
- if(max < tempSum) max = tempSum;
- }
- printf("Max: %f\n",max);
- if(max < 1) return 1;
- else return 0;
- }
- //Chon xap xi dau, so lan lap k
- //Thuc hien lap va dua ra ket qua
- int main(int argc, char **argv)
- {
- float *matrix;
- float *alpha;
- matrix = NULL;
- NhapMaTran(&matrix);
- InRaMatran(&matrix);
- alpha = TraVeAlpha(&matrix);
- InRaMatran(&alpha);
- printf("Co tinh lap don: %d\n",isLapDon(&alpha));
- //Nhap vao xap xi dau
- int k = 4; //k la so lan lap
- int i,g;
- int size = 3;
- float R[3][10];
- R[0][0] = 0, R[1][0] = 0, R[2][0] = 0;
- for(g = 1; g < k + 1; g++)
- {
- for(i = 0; i < 3; i++)
- {
- R[i][g] = R[0][g - 1] * (*(alpha + i * (size + 1) + 0)) + R[1][g - 1] * (*(alpha + i * (size + 1) + 1)) + R[2][g - 1] * (*(alpha + i * (size + 1) + 2)) + *(alpha + i * (size + 1) + size);
- }
- }
- printf("Ket Qua: \n");
- for(i = 0; i < 3; i++)
- {
- for(g = 0; g < k + 1; g++)
- {
- printf("%f ",R[i][g]);
- }
- printf("\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement