Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

В чем ошибка C#

34K
26 октября 2011 года
Dinar1623
57 / / 14.11.2010
Я реализовал метод поиска минимума функции по методу дихотомии.Но при запуске программы происходит зацикливание. Компилятор ничего не выдает. Подскажите плиз в чем проблема.
Код:
double F(double x)
        {
            return x*x+6*x+12;
        }
            double E = 0.8, l = 0.08;
            double a = -8, b = 4;
            double x=0, z=0,L=0;
        P1:
            x = (a + b - E) / 2;
            z = (a + b + E) / 2;
            if (F(x) <= F(z))
            {
                b = z;
                goto P2;
            }
            else
            {
                a = x;
                goto P2;
            }
        P2:
            L = Math.Abs(b - a);
            if (L<=l)
            {
                x = (a + b) / 2;
                textBox1.Text = Convert.ToString(x);
            }
            else
            {
                goto P1;
            }
278
26 октября 2011 года
Alexander92
1.1K / / 04.08.2008
Ээммм... Позвольте полюбопытствовать, что заставило вас написать порнографию с goto?
34K
26 октября 2011 года
Dinar1623
57 / / 14.11.2010
а что с goto неправильно? P2 для страховки)))
316
27 октября 2011 года
Alm3n
889 / / 29.05.2009
Негласным кодексом программистов запрещено использовать этот оператор.
[ATTACH=CONFIG]5382[/ATTACH]
34K
27 октября 2011 года
Dinar1623
57 / / 14.11.2010
Цитата: Alm3n
Негласным кодексом программистов запрещено использовать этот оператор.


))) Тогда как еще возвращаться в нужное мне место?

278
27 октября 2011 года
Alexander92
1.1K / / 04.08.2008
Грамотно используя функции и return. :)
2.1K
27 октября 2011 года
Norgat
452 / / 12.08.2009
Цитата: Dinar1623
))) Тогда как еще возвращаться в нужное мне место?



Циклы нужно использовать: http://msdn.microsoft.com/ru-ru/library/32dbftby.aspx
или рекурсию: http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D1%8F
пример рекурсии в C#: http://www.sernam.ru/book_csharp.php?id=54

34K
27 октября 2011 года
Dinar1623
57 / / 14.11.2010
Я попытался сделать при помощи оператора while,но все равно прога не работает((( Посмотрите плиз может я неправильно оператор while использую?
Код:
double F(double x)
        {
            return x*x+6*x+12;
        }
            double E = 0.8,z=0,x=0;
            double a = -8, b = 4;
            double l = 0.08,L=2;
while (L >= l)
            {
                x = (a + b - E) / 2;
                z = (a + b + E) / 2;
                if (F(x) <= F(z))
                {
                    b = z;
                }
                else {
                    a = x;
                     }
                L = Math.Abs(b - a);
                k++;
            }
           
            textBox4.Text = Convert.ToString(k);//количество итераций
            textBox1.Text = Convert.ToString(x);// точка минимума
25K
27 октября 2011 года
Shrek19877
9 / / 24.03.2007
попробуйте использовать отладчик и сразу станет понятно правильно вы используете while или нет
25K
27 октября 2011 года
Shrek19877
9 / / 24.03.2007
а зачем переменная l ?
34K
27 октября 2011 года
Dinar1623
57 / / 14.11.2010
Цитата: Shrek19877
попробуйте использовать отладчик и сразу станет понятно правильно вы используете while или нет


Как использовать отладчик?

Цитата: Shrek19877
а зачем переменная l ?


l-это заданная точность

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог