Problem z eliminacją Gaussa

0

Witam
Mam problem z eliminacja Gaussa dla macierzy 2x2 działa dobrze ale dla większych podaje już złe wyniki :/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication37
{
    class Program
    {
        static void Main(string[] args)
        {




            const int n = 2;

            double[,] A ={ {2,3,0},                          
                         {3,4,1} };
            int[] Z = new int[n];
            double[] X = new double[n];

            for (int i = 0; i < n; i++)
            {
                Z[i] = i;
            }


            //?

            for (int k = 0; k < n; k++)
            {//1
                double max = A[k, k];
                int r = k;
                int c = k;

                for (int i = k; i < n; i++)
                {//2
                    for (int j = k; j < n; j++)
                    {//3
                        if (Math.Abs(A[i, j]) > Math.Abs(max))
                        {//if1
                            max = A[i, j];
                            r = i;
                            c = j;
                        }//if1
                    }//3

                }//2


                for (int j = k; j <= n; j++)
                {//4    
                    //zamiana k i w
                    double a = A[k, j];
                    A[k, j] = A[r, j];
                    A[r, j] = a;
                }//4j


                for (int i = k; i < n; i++)
                {//5
                    double b = A[i, k];
                    A[i, k] = A[i, c];
                    A[i, c] = b;
                }//5

                int temp = Z[c];
                Z[c] = Z[k];
                Z[k] = temp;


                for (int i = k + 1; i < n; i++)
                {//6
                    for (int j = k+1; j <= n; j++)
                    {//7
                        A[i, j] = A[i, j] - (A[i, k] / max) * A[k, j];
                    }//7
  }//1
                }//6
                for (int i =0; i < n; i++)
                {//6
                    for (int j =0; j <= n; j++)
                    {//7
                        Console.Write(A[i, j]+" ");
                    }//7
                    Console.WriteLine();
                }//6
          





            for (int i = n - 1; i >= 0; i--)
            {
                double s = 0;
                for (int m = (i + 1); m < n; m++)
                {//?
                    s = s + A[i, m] * X[m];//???
                }

                X[i] = (A[i, n] - s) / A[i, i];

            }

            for (int i = 0; i < n; i++)
            {
                Console.WriteLine(" Z[ " + i + " ]" + X[(Z[i])]);

            }

            Console.ReadLine();
        }
    }
}
 
0
  1. dla jakich większych
  2. jakie wyniki podaje
  3. jakie są prawidłowe
0

dla macierzy 2x3 np
2 3 0
3 4 1
podaje
X[0]=-2 i X[1]=3 prawidłowo, ale już dla macierzy 3x4 ,4x5 itd podaje tylko dwa X[] prawidłowo a reszta X[] się nie zgadza

1 użytkowników online, w tym zalogowanych: 0, gości: 1