Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <conio.h>
- #include <stdio.h>
- #include <math.h>
- #include <memory.h>
- int main()
- {
- float mSOLE[3][4] = {
- { 2, 4, -7, 1 },
- { 3, 6, 1, 0 },
- { 1, 3, 2, -1 }
- };
- // by columns
- for (int k = 0; k < 2; k++)
- {
- int m = k;
- for (int i = k + 1; i < 3; i++)
- {
- if (fabs(mSOLE[m][k]) < fabs(mSOLE[i][k]))
- {
- m = i;
- }
- }
- float pTmp[4];
- memcpy(pTmp, mSOLE[k], 4 * 4);
- memcpy(mSOLE[k], mSOLE[m], 4 * 4);
- memcpy(mSOLE[m], pTmp, 4 * 4);
- for (int i = k + 1; i < 3; i++)
- {
- float fDivider = -mSOLE[i][k] / mSOLE[k][k];
- for (int j = k; j < 4; j++)
- {
- mSOLE[i][j] += mSOLE[k][j] * fDivider;
- }
- }
- }
- float vRoots[3] = { 0.0f, 0.0f, 0.0f };
- //mSOLE[2][3] /= mSOLE[2][2];
- //mSOLE[2][2] /= mSOLE[2][2];
- for (int i = 2; i >= 0; i--)
- {
- for (int j = 2; j > i; j--)
- {
- vRoots[i] -= mSOLE[i][j] * vRoots[j];
- }
- vRoots[i] += mSOLE[i][3];
- vRoots[i] /= mSOLE[i][i];
- }
- for (int i = 0; i < 3; i++)
- printf("%0.5f ", vRoots[i]);
- printf("\n");
- _getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment