E
ermackprogramis
Добрый вечер всем.Мне нужно решить уравнене x=ln(x)+2 методом касательных и перебором.Последнее я вроде сделал но где то ошибка что оно не правильно считает.
Скаэите пожалуйста что в коде не так.Вот код:
И подскажите как сделать методом касательных.Зарание спасибо.
Скаэите пожалуйста что в коде не так.Вот код:
C++:
#include <iostream>
#include <math.h>
using namespace std;
float h,x;
float f1(float *param)
{
if (*param==0)
*param+=h;
return (*param-log(*param)-2);
}
float f2(float *param2)
{
if(*param2==0)
*param2+=h;
return ((*param2+h)-log(*param2+h)-2);
}
void solution(float *a, float *с)
{
do{
{
x=*a;
if(f1(&x)*f2(&x)>0)
x=x+h;
}
}while(f1(&x)*f2(&x)<0);
}
int main()
{
cout<<"x=ln(x)+2"<<endl;
cout<<"Enter h"<<endl;
cin>>h;
float left,right;
cout<<"input a,с"<<endl;
cin>>left;
cin>>right;
float* pl=&left;
float* pr=&right;
solution(pl,pr);
cout<<"root = "<<x<<endl;
system("pause");
}