Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2014, 14:38   #1
Legi
 
Регистрация: 05.06.2014
Сообщений: 8
По умолчанию Решение СЛАУ

Добрый день . Прошу в заранее сильно не пинать , я совсем нуб в программировании. Программа решает СЛАУ из 3 уравнений при заданных значениях (по крайней мере подразумевалось что она будет это делать).
Делалось в VisualC 2010.
при запуске возникает ошибка : "Необработанное исключение типа "System.Reflection.TargetInovationE xception" произошло в mscorlib.dll"

Код:

        private void button1_Click(object sender, EventArgs e)
        {
            Single A, B, C, D, E, F, G, H, I, J, K, L;
            bool Число_ли1 = Single.TryParse(textBox1.Text,
            System.Globalization.NumberStyles.Number,
            System.Globalization.NumberFormatInfo.CurrentInfo, out A);
            
            bool Число_ли2 = Single.TryParse(textBox2.Text,
            System.Globalization.NumberStyles.Number,
            System.Globalization.NumberFormatInfo.CurrentInfo, out B);
            
            bool Число_ли3 = Single.TryParse(textBox3.Text,
            System.Globalization.NumberStyles.Number,
            System.Globalization.NumberFormatInfo.CurrentInfo, out C);
            
            bool Число_ли4 = Single.TryParse(textBox6.Text,
            System.Globalization.NumberStyles.Number,
            System.Globalization.NumberFormatInfo.CurrentInfo, out F);
           
            bool Число_ли5 = Single.TryParse(textBox5.Text,
            System.Globalization.NumberStyles.Number,
            System.Globalization.NumberFormatInfo.CurrentInfo, out E);
           
            bool Число_ли6 = Single.TryParse(textBox4.Text,
            System.Globalization.NumberStyles.Number,
            System.Globalization.NumberFormatInfo.CurrentInfo, out D);
           
            bool Число_ли7 = Single.TryParse(textBox9.Text,
            System.Globalization.NumberStyles.Number,
            System.Globalization.NumberFormatInfo.CurrentInfo, out I);
            
            bool Число_ли8 = Single.TryParse(textBox8.Text,
            System.Globalization.NumberStyles.Number,
            System.Globalization.NumberFormatInfo.CurrentInfo, out H);
           
            bool Число_ли9 = Single.TryParse(textBox7.Text,
            System.Globalization.NumberStyles.Number,
            System.Globalization.NumberFormatInfo.CurrentInfo, out G);
            
            bool Число_ли10 = Single.TryParse(textBox10.Text,
            System.Globalization.NumberStyles.Number,
            System.Globalization.NumberFormatInfo.CurrentInfo, out J);

            bool Число_ли11 = Single.TryParse(textBox11.Text,
            System.Globalization.NumberStyles.Number,
            System.Globalization.NumberFormatInfo.CurrentInfo, out K);

            bool Число_ли12 = Single.TryParse(textBox12.Text,
            System.Globalization.NumberStyles.Number,
            System.Globalization.NumberFormatInfo.CurrentInfo, out L);
            
            if (Число_ли1 == false || Число_ли2 == false || Число_ли3 == false || 
                Число_ли4 == false || Число_ли5 == false || Число_ли6 == false || 
                Число_ли7 == false || Число_ли8 == false || Число_ли9 == false ||
                Число_ли10 == false || Число_ли11 == false || Число_ли12 == false)
            { label11.Text = "Следует вводить числа";
                label11.ForeColor = Color.Red;
                return;
            }




            Type ТипМатЛаб = Type.GetTypeFromProgID("Matlab.Application");
           
            object МатЛаб = Activator.CreateInstance(ТипМатЛаб);
           
            object[] Команды = new Object[] 
                 { "Q = [A B C; F E D; I H G]; L = [J; K; L]; " + 
                                   "X = inv(A)*L % обратная матрица inv" };

            object Результат = ТипМатЛаб.InvokeMember("Execute",
                            BindingFlags.InvokeMethod, null, МатЛаб, Команды);
         
            var p = new ParameterModifier(4);
            p[0] = false; p[1] = false; p[2] = true; p[3] = true;
            ParameterModifier[] mods = { p };
            double[,] X = new double[3, 1];
            object[] Аргументы = new object[] { "X", "base", X, new double[0] };
           
            Результат = ТипМатЛаб.InvokeMember("GetFullMatrix", BindingFlags.
                       InvokeMethod, null, МатЛаб, Аргументы, mods, null, null);
            
            X = (double[,])Аргументы[2];
            string Строка = string.Format("X1 = {0};  X2 = {1};  X3 = {2};",
                                                     X[0, 0], X[1, 0], X[2, 0]);
            MessageBox.Show(Строка);
        }

    }
}
Legi вне форума Ответить с цитированием
Старый 05.06.2014, 15:18   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Хочу это развидеть :'(
Matlab у вас установен?
p51x вне форума Ответить с цитированием
Старый 05.06.2014, 16:20   #3
Legi
 
Регистрация: 05.06.2014
Сообщений: 8
По умолчанию

Да , если ""Q = [A B C; F E D; I H G]; L = [J; K; L]" Задавать числами , то все работало .

Последний раз редактировалось Legi; 05.06.2014 в 16:23.
Legi вне форума Ответить с цитированием
Старый 05.06.2014, 16:25   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Ну так ясень пень. У вас же
Цитата:
"Q = [A B C; F E D; I H G]; L = [J; K; L]; "
просто строка и А там просто символ А. Соберите строку и переменные Форматом.
p51x вне форума Ответить с цитированием
Старый 05.06.2014, 16:35   #5
Legi
 
Регистрация: 05.06.2014
Сообщений: 8
По умолчанию

А можно по подробнее объяснить ?
Legi вне форума Ответить с цитированием
Старый 05.06.2014, 17:16   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

http://msdn.microsoft.com/ru-ru/library/b1csw23d.aspx
p51x вне форума Ответить с цитированием
Старый 05.06.2014, 17:52   #7
Legi
 
Регистрация: 05.06.2014
Сообщений: 8
По умолчанию

прочитал , потом еще раз прочитал , потом погуглил .Не понял синтаксис .

Последний раз редактировалось Legi; 05.06.2014 в 17:56.
Legi вне форума Ответить с цитированием
Старый 06.06.2014, 05:57   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

А что там не понятного? Первая форматная строка, которая подробна описана, вторым - элементы для подстановки.
p51x вне форума Ответить с цитированием
Старый 06.06.2014, 09:49   #9
Legi
 
Регистрация: 05.06.2014
Сообщений: 8
По умолчанию

т.е должно выглядеть так ?
string Q = string.Format("{0} {2} {3}; {4} {5} {6}; {7} {8} {9};",
A, B, C, D, E, F, G, H, I, J, K, L);
Это должно сформировать строку Q из значени A,B,C и т.д ?

P.S А почему сейчас у меня в матрице просто A,B,C , они же вроде заданны ?
Legi вне форума Ответить с цитированием
Старый 06.06.2014, 14:35   #10
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
т.е должно выглядеть так ?
string Q = string.Format("{0} {2} {3}; {4} {5} {6}; {7} {8} {9};",
A, B, C, D, E, F, G, H, I, J, K, L);
У вас надо сформировать строку "A C D; ..." (здесь имеются в виду значения переменных)? А где же ваши Q = [ и прочее матлабовское?

Цитата:
P.S А почему сейчас у меня в матрице просто A,B,C , они же вроде заданны ?
Потому что символ 'А', переменная A и значение переменной А - это три разные вещи.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение СЛАУ cderty Помощь студентам 3 30.05.2012 15:27
Решение СЛАУ С++ Foralberg Помощь студентам 3 16.06.2011 04:04
Решение СЛАУ в С++ Foralberg Помощь студентам 2 12.06.2011 16:50
Решение СЛАУ в mfc Gollandec Помощь студентам 0 10.05.2010 22:26
Решение СЛАУ Alex2012 Общие вопросы .NET 2 10.02.2010 02:07