• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

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

  • Автор темы Катюша1603
  • Дата начала
К

Катюша1603

Скоро экзамен. Одним из заданий нужно запрограммировать один из численных методов.
Пример: Найти корень функции методом половинного деления
Код:
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.Вычисление определенного интеграла методом трапеции.

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

rrrFer

Здравствуйте
Что именно не получается?
Исходный код функций вычисления площади под графиком можно найти тут:
например
Но все это есть в соседних темах на форуме, тема много раз обсуждалась.
У вас есть конкретные вопросы?
 
W

Whatka

Чем помочь то?
Вы хоть сами методы знаете??
Для их нормальной реализации надо знать конкретные функции и самому задавать начальные значения.
А вообще там каждый метод будет функцией строк на 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 - вектора в которые записываем все приближения
 
R

rrrFer

Кстати эти методы (поиска корней тоже) можно попробовать впилить в проект по ссылке что я привел :)

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

Катюша1603

Спасибо всем большое!! Во всем разобралась, сдала на отлично!! Спасибо)))
И извиняюсь, что не отвечала... Я,честно говоря, не думала, что кто-то ответит((
 
R

rrrFer

Да ничего страшного. У вас получилось написать какой-то код? - если есть желание - выкладывайте на форум, мы его отрецензируем (а-то скучно тут).
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!