|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.02.2012, 20:07 | #1 |
Регистрация: 13.02.2011
Сообщений: 3
|
Работа с большим количеством текста в String иTextbox
Доброго времени суток! Суть моей задачи : минимизировать градиентным методом функцию, для одномерной оптимизации использовать методы дробления и золотого сечения, на каждой итерации выводить координаты точки, значение функции, градиент и его норму а также коефициент альфа. Програмноя реализовал все правильно, но вижуал в String оч долго рисует 2000-4000 строк. Вот код метода:
void rez(double eps, int chose, int meth, TextBox ^r1) { String ^result = gcnew String(""); String ^chern; double x_0 = 10; double y_0 = 10; double e = 1000; double x,y; double alp; int i=1; switch (meth) { case 1 : { result += L"Метод золотого січення\r\n";break; }; case 2 : { result += L"Метод ділення\r\n"; break;}; } switch (chose) { case 1 : {result += L"Зупинка при малому модулі різниці сусідніх значень функції\r\n"; break;}; case 3 : {result += L"Зупинка при малій нормі різниці сусідніх значень аргументу\r\n"; break;}; case 2 : {result += L"Зупинка при малому значенню норми градієнту\r\n"; break;}; } while ( e>eps) { switch (meth) { case 1 : { alp = zolot(eps,x_0,y_0); break; }; case 2 : { alp = dilen(eps,x_0,y_0); break;}; } x = x_0 - alp*grad(x_0,y_0,eps)[0]; y = y_0 - alp*grad(x_0,y_0,eps)[1]; chern = Convert::ToString(i); // Здесь в строку result начинает выписываться промежуточные данные если записывать сразу в TextBox прога тож долго работает result += L"ітерація № "; result += chern; result += L"\r\n"; chern = Convert::ToString(x); result += L"x= "; result += chern; result += L"\r\n"; chern = Convert::ToString(y); result += L"y= "; result += chern; result += L"\r\n"; chern = Convert::ToString(func(x,y)); result += L"f(x,y)= "; result += chern; result += L"\r\n"; chern = Convert::ToString(alp); result += L"alpha= "; result += chern; result += L"\r\n"; chern = Convert::ToString(norm(grad(x,y,eps ))); result += L"||df||= "; result += chern; result += L"\r\n"; chern = Convert::ToString(grad(x,y,eps)[0]); result += L"df.x= "; result += chern; result += L"\r\n"; chern = Convert::ToString(grad(x,y,eps)[1]); result += L"df.y= "; result += chern; result += L"\r\n"; result += L"------\r\n"; i++; switch (chose) { case 1 : {e = Math::Abs(func(x,y)-func(x_0,y_0)); break;}; case 3 : {e = Math::Sqrt( (x-x_0)*(x-x_0) + (y-y_0)*(y-y_0)); break;}; case 2 : {e = norm(grad(x,y,eps)); break;}; } x_0 = x; y_0 = y; } // здесь в textBox записываються промеж. результаты r1->Text = result; } Короче помогите как-то секономить время записи в строку или сразу в textBox |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сводная таблица с большим количеством строк | s8259 | Microsoft Office Excel | 1 | 03.04.2011 00:28 |
работа с большим объемом данных | Ckif | Microsoft Office Excel | 1 | 14.09.2010 17:05 |
Метод для управления большим количеством данных | eda | Microsoft Office Excel | 0 | 13.07.2009 10:50 |
ГСЧ с большим количеством нулей | Frog25 | Общие вопросы C/C++ | 6 | 26.06.2008 18:22 |