C/C++

Найти решение уравнения(arccos(x-1)+x^3-4=0) на указанном диапазоне ([0.5;1.9]). используя численный метод-Метод Ньютона

Помогите пожалуйста
Найти решение уравнения(arccos(x-1)+x^3-4=0) на указанном диапазоне ([0.5;1.9). используя численный метод-Метод Ньютона(касательных). Есть код, но не рабочий.

#include <iostream>
#include <cmath>
using namespace std;
double func(double x) {
return acos(x - 1) + x * x * x - 4;
}
int main() {
float x, y, der1, der2;
const float eps = 0.000001;
x = -3;
y = func(x);
while (abs(y - x) > eps) {
der1 = 3 * x * x - 1 / sqrt(x * (2 - x));
der2 = 6 * x - (x - 1) / pow(x * (2 - x), 1.5);
y = x;
x = y - der1 / der2;
}
cout << "Result: " << y << endl;
return 0;
}
Я не знаю этот метод, но у вас дан диапазон x [0.5;1.9]
А вы присваиваете значение -3 в начале. Это за пределами отрезка.
Нужно задать нижнюю границу в начале (0.5).
И с каждым проходом цикла прибавлять к x какое-то значение, пока x не превысит значение 1.9
И проверять y
Гарик Егоян
Гарик Егоян
79 667
Лучший ответ
Гарик Егоян y = func(x); должно быть внутри цикла
Когда условие выполнится, нужно прервать цикл break;
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
double func(double x)
{
return acos(x - 1) + x * x * x - 4.0;
}
int main()
{
double x, h = 1e-4, d = 2. * h;
cout << "x n » ";
cin >> x >> n;
for (int i = 1; i <= n; i++)
{
x -= func(x) * d / (func(x + h) - func(x - h));
cout << setw(2) << i << setprecision(15)
<< fixed << setw(21) << x << endl;
}
}
Когда я беру за начальное приближение х=1 и заказываю 10 итераций (хотя, как видно из скрина ниже, для отыскания корня уравнения с машинной точностью хватает и шести итераций !), то всё хорошо. Но нельзя брать за начальное приближение любое число из диапазона [0,5; 1,9], потому что на этом отрезке есть точка минимума (х≈0.6), а по теореме Ферма́ производная гладких функций в их точках экстремума равна нулю, поэтому и касательная к графику функции в этой точке минимума получается горизонтальной прямой параллельной оси абсцисс и уходящей в бесконечность, а метод касательных Ньютона при таком начальном приближении неприменим - это здесь главный подвох!. (•‿•)
Антон 123
Антон 123
29 440
Серёга Кочергин ===========================================требуется!!========
ПОМОЩ! в голосовании
https://otvet.mail.ru/question/228021301
Cosmos, 1 месяц назад
Высший разум
Рождаются!

>
> > >
> > > > Выбор ответа лучший
> >
> > > >
> > > > @firsov-2022