Aleks11

CalcMath - lab1

Mar 2nd, 2013
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.06 KB | None | 0 0
  1. #include <conio.h>
  2. #include <stdio.h>
  3. #include <math.h>
  4. #include <memory.h>
  5.  
  6. int main()
  7. {
  8. float mSOLE[3][4] = {
  9. { 2, 4, -7, 1 },
  10. { 3, 6, 1, 0 },
  11. { 1, 3, 2, -1 }
  12. };
  13.  
  14. // by columns
  15. for (int k = 0; k < 2; k++)
  16. {
  17. int m = k;
  18.  
  19. for (int i = k + 1; i < 3; i++)
  20. {
  21. if (fabs(mSOLE[m][k]) < fabs(mSOLE[i][k]))
  22. {
  23. m = i;
  24. }
  25. }
  26.  
  27. float pTmp[4];
  28. memcpy(pTmp, mSOLE[k], 4 * 4);
  29. memcpy(mSOLE[k], mSOLE[m], 4 * 4);
  30. memcpy(mSOLE[m], pTmp, 4 * 4);
  31.  
  32. for (int i = k + 1; i < 3; i++)
  33. {
  34. float fDivider = -mSOLE[i][k] / mSOLE[k][k];
  35. for (int j = k; j < 4; j++)
  36. {
  37. mSOLE[i][j] += mSOLE[k][j] * fDivider;
  38. }
  39. }
  40. }
  41.  
  42. float vRoots[3] = { 0.0f, 0.0f, 0.0f };
  43.  
  44. //mSOLE[2][3] /= mSOLE[2][2];
  45. //mSOLE[2][2] /= mSOLE[2][2];
  46.  
  47. for (int i = 2; i >= 0; i--)
  48. {
  49. for (int j = 2; j > i; j--)
  50. {
  51. vRoots[i] -= mSOLE[i][j] * vRoots[j];
  52. }
  53.  
  54. vRoots[i] += mSOLE[i][3];
  55. vRoots[i] /= mSOLE[i][i];
  56. }
  57.  
  58. for (int i = 0; i < 3; i++)
  59. printf("%0.5f ", vRoots[i]);
  60. printf("\n");
  61.  
  62. _getch();
  63. return 0;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment