Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- void LinioweZadanieNajmnieszychKwadratow();
- int main()
- {
- LinioweZadanieNajmnieszychKwadratow();
- system("pause");
- return 0;
- }
- void LinioweZadanieNajmnieszychKwadratow()
- {
- int RozmiarA, RozmiarC;
- cin >> RozmiarC >> RozmiarA;
- double MacierzATransponowana[100][100], MacierzA[100][100], Macierz[100][100], MacierzKwadratowa[100][100];
- double WektorX[100], WektorY[100], WektorKwadratowy[100], wynik[100];
- double WynikOstateczny = 0;
- for (int i = 0; i < RozmiarA; i++) {
- for (int j = 0; j <= RozmiarC; j++) {
- if (j == 0) MacierzA[i][j] = 1;
- else cin >> MacierzA[i][j];
- }
- cin >> WektorX[i];
- }
- for (int i = 0; i <= RozmiarC; i++) {
- for (int j = 0; j < RozmiarA; j++)
- {
- MacierzATransponowana[i][j] = MacierzA[j][i];
- }
- }
- for (int i = 0; i <= RozmiarC; i++) {
- for (int j = 0; j <= RozmiarC; j++) {
- WynikOstateczny = 0;
- for (int k = 0; k < RozmiarA; k++){
- WynikOstateczny = WynikOstateczny + MacierzATransponowana[i][k] * MacierzA[k][j];
- }
- Macierz[i][j] = WynikOstateczny;
- }
- }
- for (int i = 0; i <= RozmiarC; i++) {
- WynikOstateczny = 0;
- for (int j = 0; j < RozmiarA; j++){
- WynikOstateczny = WynikOstateczny + MacierzATransponowana[i][j] * WektorX[j];
- }
- WektorY[i] = WynikOstateczny;
- }
- for (int i = 0; i <= RozmiarC; i++) {
- for (int j = 0; j <= RozmiarC; j++)
- {
- MacierzKwadratowa[i][j] = Macierz[i][j];
- }
- WektorKwadratowy[i] = WektorY[i];
- wynik[i] = 0;
- }
- for (int i = 0; i <= RozmiarC; i++) {
- for (int j = i + 1; j <= RozmiarC; j++) {
- for (int k = i; k <= RozmiarC; k++) {
- MacierzKwadratowa[j][k] = Macierz[j][k] - (Macierz[j][i] / Macierz[i][i] * Macierz[i][k]);
- WektorKwadratowy[j] = WektorY[j] - ((Macierz[j][i] / Macierz[i][i])*WektorY[i]);
- }
- }
- for (int i = 0; i <= RozmiarC; i++) {
- for (int j = 0; j <= RozmiarC; j++)Macierz[i][j] = MacierzKwadratowa[i][j];
- {
- WektorY[i] = WektorKwadratowy[i];
- }
- }
- }
- for (int i = RozmiarC; i >= 0; i--) {
- WynikOstateczny = 0;
- for (int j = 0; j <= RozmiarC; j++)
- {
- if (j != i)
- {
- WynikOstateczny = WynikOstateczny + Macierz[i][j] * wynik[j];
- }
- wynik[i] = (WektorY[i] + (WynikOstateczny * -1)) / Macierz[i][i];
- }
- }
- for (int i = 0; i <= RozmiarC; i++)
- {
- cout << wynik[i] << " ";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement