БЕСПЛАТНОЕ РЕШЕНИЕ ЗАДАЧ

Перегрузка функции вычисления корня

Ниже приведен код для решения уравнения, но уже с перегрузкой функции вычисления корня уравнения с разными методами: методом Ньютона и методом хорд.

#include 
using namespace std;
const int N=20;
//Функция для полинома:
double F(double x){
return x*x-9*x+14;}
//Функция поиска корня (метод Ньютона):
double FindRoot(double (*f)(double),double x0){
double x=x0,df,h=0.00001;
df=(f(x+h)-f(x))/h;
for(int i=1; i <= N; i++)
 x=x-f(x)/df;
return x;}
//Функция поиска корня (метод хорд):
double FindRoot(double (*f)(double),double a,double b){
double c;
for(int i=1;i<=N;i++){
 c=(f(b)*a-f(a)*b)/(f(b)-f(a));
 if((f(a)*f(c)) > 0) a=c;
 else b=c;
}
return c;}
int main(){
//Начальное приближение, интервал и корни уравнения:
double x0,a,b,x1,x2;
cout << "initial x0 = ";
cin >> x0;
cout << "interval: ";
cin>>a;
cin>>b;
//Поиск решения:
x1=FindRoot(F,x0);
x2=FindRoot(F,a,b);
cout<<"Newton method: x = " << x1 << endl;
cout << "Chord method: x = " << x2 << endl;
return 0;}

Оставить комментарий

Вы должны быть авторизованы , чтобы оставить или оценить комментарий.

Онлайн всего: 10
Гостей: 10
Пользователей: 0

STUDLAB Сообщить про опечатку на сайте