Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- double A[4][4]={{2,0,0,0},{0,5,0,0},{ 0,0,10,0},{0,0,0,4}};
- double L[4][4]={{0,0,0,0},{0,0,0,0},{ 0,0,0,0},{0,0,0,0}};
- double U[4][4]={{0,0,0,0},{0,0,0,0},{ 0,0,0,0},{0,0,0,0}};
- double b[4]={10,5,20,8 };
- double l(int j, int i){
- if ( i > j){
- return 0;
- }
- if (i==j){
- return 1;
- }
- if ( i<j){
- double suma=0;
- for (int k=0; k <=i-1;k++){
- suma += L[j][k]*U[k][i];
- }
- double wynik = (A[j][i]-suma)/(U[i][i]);
- return wynik;
- }
- }
- double u(int i, int j){
- if ( i > j){
- return 0;
- }
- if ( i<=j){
- double suma=0;
- for (int k=0; k <=i-1;k++){
- suma += L[i][k]*U[k][j];
- }
- return (A[i][j]-suma) ;
- }
- }
- void Gauss_Siedl(){
- int size=4;
- double* x = new double[size];
- for (int i=0; i<size;i++){
- x[i]=0;
- }
- cout << "Metoda Siedla" << endl;
- int it;
- it =30;
- for (int i=0 ; i<it; i++){
- for (int k=0; k<size;k++){
- double suma1=0;
- double suma2=0;
- for (int j=0;j<k-1;j++){
- suma1+=A[k][j]*x[j];
- }
- for (int j=k+1;j<size;j++){
- suma2+=A[k][j]*x[j];
- }
- x[k]=(-suma1 - suma2 + b[k])/A[k][k];
- }
- }
- for (int i=0;i<size;i++){
- cout << x[i] << endl;
- }
- cout << endl;
- cout << endl;
- }
- void Jacobi( ){
- int size =4;
- double* x = new double[size];
- for (int i=0; i<size;i++){
- x[i]=0;
- }
- cout << "Jacobi" << endl;
- int it;
- it=30;
- cout << endl;
- for (int i=0 ; i<it; i++){
- for (int k=0; k<size;k++){
- double suma=0;
- for (int j=0;j<size;j++){
- if(k==j){
- continue;
- }
- suma+=A[k][j]*x[j];
- }
- x[k]=(-suma+b[k])/A[k][k];
- }
- }
- for (int i=0;i<size;i++){
- cout << x[i] << endl;
- }
- }
- int main(){
- /* for(int i=0;i<4;i++){
- for (int j=0;j<4; j++)
- {
- U[i][j]=u(i,j);
- }
- for (int j=0;j<4; j++)
- {
- L[j][i]=l(j,i);
- }
- }
- for (int i=0;i<4;i++){
- for (int j=0;j<4;j++){
- cout<< L[i][j] << " ";
- }
- cout << endl;
- }
- cout << endl;cout << endl;cout << endl;
- for (int i=0;i<4;i++){
- for (int j=0;j<4;j++){
- cout<< U[i][j] << " ";
- }
- cout << endl;
- }
- */
- Jacobi();
- Gauss_Siedl();
- system ("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement