Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Двумерные массивы. Привести систему к треугольному виду. 
:(
    Опции темы
Tinysik2009
  Дата 22.1.2010, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 2.5.2009

Репутация: нет
Всего: нет



Здравствуйте, подскажите пожалуйста как решить задачу:

Коэффициенты системы линейных уравнений заданы в виде прямоугольной матрицы. С помощью допустимых преобразований привести систему к треугольному виду.
Найти количество строк, среднее арифметическое элементов которых меньше заданной величины. 


Не знаю как ее реализовать... Всё,что смогла сделать:
Код

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
           int m,n;
           m = 3; //stroki
           n = 3;//stolbci
            double[,] A = new double[3, 3] { { 4, 1, 2 }, { 7, 2, 5 }, {4, 3, 1 } };
            double[,] L = new double[m, n];
            double[,] U = new double[m, n];



            for (int i = 0; i < m; ++i)
                {
                 for (int j = 0; j < n; ++j)
                Console.Write("\t" + A[i, j]);
                Console.WriteLine();
                }


            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    U[0, i] = A[0, i];
                    L[i, 0] = A[i, 0] / U[0, 0];



                    double sum = 0;
                    for (int k = 0; k < i; k++)
                    {
                        sum += L[i, k] * U[k, j];
                    }


                    U[i, j] = A[i, j] - sum;
                    if (i > j)
                    {
                        L[j, i] = 0;
                    }

                    else
                    {
                        sum = 0;
                        for (int k = 0; k < i; k++)
                        {
                            sum += L[j, k] * U[k, i];
                        }
                        L[j, i] = (A[j, i] - sum) / U[i, i];
                    }
                    for (i = 0; i < m; ++i)
                    {

                        for (j = 0; j < n; ++j)
                            Console.Write("\t" + L[i, j]);
                        Console.WriteLine();
                    }


                    Console.ReadLine();
                }

            }

        }
    }
}




Подскажите ...как делать дальше?
PM MAIL   Вверх
KelTron
Дата 22.1.2010, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск

Репутация: 11
Всего: 38



Метод Гаусса в помощь.


--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
Tinysik2009
Дата 22.1.2010, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 2.5.2009

Репутация: нет
Всего: нет



легко сказать....=) я уже эту ссылку сто раз читала smile 
PM MAIL   Вверх
Gaudi
Дата 22.1.2010, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 18.3.2007

Репутация: нет
Всего: нет



Нижнетреугольная
Код

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

namespace MatrixTriangTest
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = 7;
            int m = 7;
            double[,] A = new double[7, 7] 
            {
                {4, 1, 2, 5, 2, 7, 1 },
                {7, 2, 5, 6, 1, 3, 1},
                {4, 3, 1, 9, 1, 6, 2},
                {6, 8, 1, 6, 8, 1, 0},
                {8, 2, 4, 6, 9, 1, 1},
                {8, 7, 5, 3, 2, 3, 9},
                {9, 7, 1, 9, 5, 8, 4}
            };

            triang(ref A, m, n);
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                    Console.Write("\t" + Math.Round(A[i, j]), 2);
                Console.WriteLine();
            }

        }

        public static int triang(ref double[,] a, int n, int m)
        {
            double tmp = 0;
            for (int i = 0; i < m; i++)
                for (int j = 0; j < n; j++)
                    if (i > j)
                    {
                        if (a[j, i] != 0)
                            tmp = a[i, j] / a[j, j];
                        for (int f = 0; f < n; f++)
                            a[i, f] = a[i, f] - (tmp * a[j, f]);
                    }
            return 0;
        }
    }
}

PM MAIL   Вверх
Tinysik2009
  Дата 22.1.2010, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 2.5.2009

Репутация: нет
Всего: нет



спасибо большое за помощь.




 Я уже решила,но чуть иным способом)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0928 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.