int main() { setlocale(LC_ALL,"Russian"); cout << "уравнение 2*e^-x - (x-2)^2=0 " << endl; int it=0; long double a=1, b=6; cout << "Начальное приближение: A=" << a << ", B=" << b << endl; cout << "=============" << endl; long double Xi1=0, Xi=b, Xim1=a; while(1)//что такое while(1)? { long double xpr=Xi1; Xi1=(-F(Xim1)*(Xi-Xim1)) / (F(Xi)-F(Xim1))+Xim1;//вообще не понятно что это if (F(Xim1)*F(xpr)>0) {//вообще не понятно что это Xi=Xi1; //b Xim1=Xim1; //a } else { Xi=Xi; //b Xim1=Xi1; //a } it++; cout << "Значение X на итерации " << it << ": "<< Xi << endl; if (fabs(Xi1-xpr)<0.001) break;//что такое fabs? } cout << "============="; cout << endl <<"Всего итераций: " << it << endl; cout << "корень уравнения: " << Xi << ", с точностью 0.001" << endl; system("pause"); return 0; } и тут нельзя задать отрицательный промежуток.корни только положительные.как это исправить? Добавлено спустя 15 минут 33 секунды: вообще, в целом задание-найти корень уравнения методом дихотомии и методом хорд.вот мой код #include #include #include #include #include using namespace std; long double F(long double x) { return 2*exp(pow(x,-1))-pow((x-2),2); } long double Dihotomiya (long double a,long double { long double c; c=(a+b)/2; while(b-a>0.001) { if( F(a)*F(c)<0) b=c; else a=c; c=(b+a)/2; } return c; } int main() { setlocale(LC_ALL,"Russian"); cout << "уравнение 2*e^-x - (x-2)^2=0 " << endl; int it=0; long double a=1, b=2; cout << "Начальное приближение: A=" << a << ", B=" << b << endl; cout << "=============" << endl; long double Xi1=0, Xi=b, Xim1=a; while(1) { long double xpr=Xi1; Xi1=(-F(Xim1)*(Xi-Xim1)) / (F(Xi)-F(Xim1))+Xim1; if (F(Xim1)*F(xpr)>0) { Xi=Xi1; //b Xim1=Xim1; //a } else { Xi=Xi; //b Xim1=Xi1; //a } it++; cout << "Значение X на итерации " << it << ": "<< Xi << endl; if (fabs(Xi1-xpr)<0.001) break; } cout << "============="; cout << endl <<"Всего итераций: " << it << endl; cout << "корень уравнения: " << Xi << ", с точностью 0.001" << endl; cout << "=================="; cout << endl; cout << "метод дихотомии" << endl; cout << "корень с точностью 0.001 равен " << Dihotomiya(a,; system("pause >> void"); return 0; } и он работает неправильно...кароче, корни выводятся неверные.помогите кто чем можетпоследнее задание для зачета к пятнице