Численные Методы

Тема в разделе "C/C++/C#", создана пользователем Катюша1603, 15 янв 2014.

  1. Катюша1603

    Катюша1603 New Member

    Регистрация:
    15 янв 2014
    Сообщения:
    2
    Симпатии:
    0
    Скоро экзамен. Одним из заданий нужно запрограммировать один из численных методов.
    Пример: Найти корень функции методом половинного деления
    Код:
    int Metod1(float a,float b,float EPS,float *Root,float *FRoot, int *STEP)
    {
    float c,fa,fb,fc;
    fa=F(a); fb=F(b);
    if(fa*fb>0) {cout<<"Метод нельзя применить";
    return 0;
    }
    else{
    *STEP=2;
    while(fabs(b-a)>EPS){
    c=(a-b)/2;
    fc=F©;
    if(fa*fc>0) {a=c; fa=fc;}
    else {b=c;fb=fc;}
    *STEP=(*STEP)+1;
    }
    *Root=(a+b)/2;
    *FRoot=F(*Root);
    return 1;
    }

    void main()
    { float L,R,E,RT,FRT;
    int S;
    cout<<"ВВедите левую и правую границы и точность: ";
    cin>>L>>R>>E;
    int K;
    K=Metod1(L,R,E,&RT,&FRT,&S);
    if(K==1){cout<<RT<<FRT<<S;}

    2. Нахождение корня методом хорд.
    3.Нахождение корня функции методом касательной
    4.Нахождение минимума функции методом дихотомии
    5.Нахождение минимума унимодальной функции методом золотого сечения
    6.Нахождение определенного интеграла функции методом прямоугольника
    7.Вычисление определенного интеграла методом трапеции.

    Помогите, пожалуйста!!!
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    Здравствуйте
    Что именно не получается?
    Исходный код функций вычисления площади под графиком можно найти тут: http://pro-prof.com/archives/1316
    например
    Но все это есть в соседних темах на форуме, тема много раз обсуждалась.
    У вас есть конкретные вопросы?
     
  3. Whatka

    Whatka Well-Known Member

    Регистрация:
    9 окт 2011
    Сообщения:
    433
    Симпатии:
    4
    Чем помочь то?
    Вы хоть сами методы знаете??
    Для их нормальной реализации надо знать конкретные функции и самому задавать начальные значения.
    А вообще там каждый метод будет функцией строк на 20.
    вот то,что я когда-то сам писал,может поможет
    Код (C++):
    //
    void Dih_iter(double a,double b)
    {
    double c=0.5*(a+b);
    D.push_back(c);
    iter++;
    if(fabs(fun(c))<eps)
    {
    cout<<"Корень,полученый методом дихотомии:\t"<<c<<"\tитераций:"<<iter<<"\n";
    return;
    }
    if(fun(c)*fun(a)<0)
    Dih_iter(a,c);
    if(fun(c)*fun(b)<0)
    Dih_iter(c,b);
    }
    void Hord_iter(double a,double b)
    {
    // a - k-1, b - k-тый члены
    while(fabs(b - a)>eps)
    {
    H.push_back(b);
    iter++;
    a = b - (b - a) * fun(b)/(fun(b) - fun(a));
    b = a - (a - b) * fun(a)/(fun(a) - fun(b));
    }
    cout<<"Корень,полученый методом секущих:\t"<<b<<"\tитераций:"<<iter<<"\n";
    return;
    }
    //
    H и D - вектора в которые записываем все приближения
     
  4. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    Кстати эти методы (поиска корней тоже) можно попробовать впилить в проект по ссылке что я привел :)

    Будет красиво и наглядно. Предлагаю потренироваться. Я помогу если будут вопросы :)
     
  5. Катюша1603

    Катюша1603 New Member

    Регистрация:
    15 янв 2014
    Сообщения:
    2
    Симпатии:
    0
    Спасибо всем большое!! Во всем разобралась, сдала на отлично!! Спасибо)))
    И извиняюсь, что не отвечала... Я,честно говоря, не думала, что кто-то ответит((
     
  6. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    Да ничего страшного. У вас получилось написать какой-то код? - если есть желание - выкладывайте на форум, мы его отрецензируем (а-то скучно тут).
     
Загрузка...
Похожие Темы - Численные Методы
  1. kuzduk
    Ответов:
    0
    Просмотров:
    350
  2. gardlok
    Ответов:
    0
    Просмотров:
    1.368
  3. Seriy1994
    Ответов:
    1
    Просмотров:
    1.368
  4. V88
    Ответов:
    3
    Просмотров:
    3.464

Поделиться этой страницей