Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <vector>
- #include <cmath>
- using namespace std;
- const int n = 3;
- // ვექტორის(მეორე) ნორმის გამოსათვლელი ფუნქცია:
- double getNorm(const vector<double> &vec);
- // ვექტორის დასაბეჭდი ფუნქცია:
- void printVector(const vector<double> &vec);
- int main()
- {
- vector<double> z(n), q(n);
- vector<vector<double>> A(n, n);
- double Norm(0), Lambda_Old, Lambda_New(1), Epsilon(0.000001);
- ifstream ifs("input.txt");
- // მატრიცის შევსება:
- for (int i = 0; i < n; i++)
- for (int j = 0; j < n; j++)
- ifs >> A[i][j];
- // z ვექტორის შევსება:
- for (int i = 0; i < n; i++)
- ifs >> z[i];
- ifs.close();
- // საწყისი მიახლოების გამოთვლა:
- Norm = getNorm(z);
- for (int i = 0; i < n; i++)
- q[i] = z[i] / Norm;
- for (int i = 0; i < n; i++)
- {
- z[i] = 0;
- for (int j = 0; j < n; j++)
- z[i] += A[i][j] * q[j];
- }
- int Steps(0), Max_Steps(500);
- do
- {
- Steps++;
- Lambda_Old = Lambda_New;
- Norm = getNorm(z);
- for (int i = 0; i < n; i++)
- q[i] = z[i] / Norm;
- for (int i = 0; i < n; i++)
- {
- z[i] = 0;
- for (int j = 0; j < n; j++)
- z[i] += A[i][j] * q[j];
- }
- Lambda_New = 0;
- for (int i = 0; i < n; i++)
- Lambda_New += z[i] * q[i];
- }
- while (fabs(Lambda_New - Lambda_Old) > Epsilon && Steps < Max_Steps);
- cout << "Steps = " << Steps << endl;
- cout << "Modulit Udidesi Sakutrivi Ricxvi = " << Lambda_New << endl;
- printVector(q);
- system("pause");
- return(0);
- }
- // ვექტორის(მეორე) ნორმის გამოსათვლელი ფუნქცია:
- double getNorm(const vector<double> &vec)
- {
- double Norm(0);
- for (int i = 0; i < n; i++)
- Norm += vec[i] * vec[i];
- return sqrt(Norm);
- }
- // ვექტორის დასაბეჭდი ფუნქცია:
- void printVector(const vector<double> &vec)
- {
- for (int i = 0; i < n; i++)
- cout << vec[i] << " ";
- cout << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment