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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2012, 20:49   #1
Serg94
Форумчанин
 
Аватар для Serg94
 
Регистрация: 10.12.2011
Сообщений: 167
По умолчанию С#...Работа с указателями на функции.

Метод золотого сечения основан на делении отрезка [a,b] по правилу золотого сечения. Он позволяет сужать отрезок [a,b], каждый раз вычисляя лишь одно значение F(x), а не два, как в методе дихотомии. Данный метод реализуется следующим алгоритмом:
1. Находим коэффициент дробления k=( 5-1)/2 отрезка [a,b].
2. Находим абсциссу x =a+(1-k)(b-a) и вычисляем F(x ).
3. Находим абсциссу x =a+k(b-a) и вычисляем F(x ).
4. Проверяем выполнение условия |x - x |<E, где Е – заданная погрешность вычисления x. Если это условие выполняется, вычисляем x =(x +x )/2 и F(x ), после чего останавливаем счет с выдачей значений x и F(x ). Если данное условие не выполняется, идем к п.5.
5. Проверяем условие F(x )<F(x ). Если оно выполняется, полагаем a=x , x =x и F(x )= F(x ), после чего выполняется п.3 и п. 4.
6. Если F(x )F(x ), полагаем b=x , x =x , F(x )=F(x ), после чего выполняем п.2 и п.4.



Общая постановка задачи: Создать функцию для реализации одного из описанных методов нахождения экстремума функции, заданной в условии варианта. Разработанная функция в качестве первого входящего параметра должна принимать указатель на функцию, так как подразумевает применение метода нахождения экстремума для любой функции. Разработанная функция должна быть первоначально оттестирована на квадратичной функции, экстремум которой известен из аналитического решения. В случае совпадения аналитического и численного решения с заданной точностью, можно производить расчет для функции заданной в варианте. Для применения методов с заданной точностью полагаем Е=0.001.
................................... ................................... ...................
Код:
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //погрешность вычисления
            const double epsilon = 1e-10;
            double a, b;
            //интервал [1,2].
            a = 1;
            b = 2;
            while (b - a > epsilon)
            {
                double c = (a + b) / 2;
                if (f(b) * f(c) < 0)
                    a = c;
                else
                    b = c;
            }
          
            Console.WriteLine((a + b) / 2);
            Console.ReadLine();
        }

        static double f(double x)
        {
            // F(x)=sqrt(2x+3)-3cos((sqrt(19x)-1) найти точку минимума

            double a, b, c;

            a = Math.Sqrt(2*x+3);
            b = 3 * Math.Cos((Math.Sqrt(19*x))-1);
            return c = a - b;
            

            
        }
    }
}
ответ должен быть -0.5!!!а выдает другой...а чем ошибка????

Последний раз редактировалось Serg94; 20.04.2012 в 20:52.
Serg94 вне форума Ответить с цитированием
Старый 20.04.2012, 23:02   #2
Serg94
Форумчанин
 
Аватар для Serg94
 
Регистрация: 10.12.2011
Сообщений: 167
По умолчанию ....

Посмотрите пжлста код и скажите что не так!!!ответ должен быть -0.5....а выдает 1.000000000291
Serg94 вне форума Ответить с цитированием
Старый 21.04.2012, 22:05   #3
Serg94
Форумчанин
 
Аватар для Serg94
 
Регистрация: 10.12.2011
Сообщений: 167
По умолчанию ..

тема неактуальна!!!
Serg94 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с указателями Byurrer Общие вопросы C/C++ 8 02.04.2011 21:09
Работа с указателями. Alex Cones Общие вопросы Delphi 8 06.07.2010 18:34
Работа с указателями Masip Общие вопросы Delphi 2 12.06.2010 12:49
Работа с указателями (C) pixel_ Помощь студентам 1 28.08.2009 14:07
Работа с указателями Mango Помощь студентам 2 23.11.2008 10:33