using namespace std;
double f(double x)
{
return sin(x / 2) + 1 - x * x;
}
double f_prime(double x)
{
return cos(x / 2) / 2 - 2 * x;
}
double newton(double guess) {
double x = guess;
double x_prev = x - 1;
while (abs(x - x_prev) > 0.0001) {
x_prev = x;
x = x - f(x) / f_prime(x);
}
return x;
}
int main() {
double root = newton(1);
cout << "Root: " << root << endl;
return 0;
}
Dastur quyidagi 3 matematik funksiyasidan foydalanadi:
1. `f(x)` - asosiy funksiya.
2. `f_prime(x)` - asosiy funksiyasining x-dagi yengilishiga qarab olingan yordamchi funksiya.
3. `newton(guess)` - newton metodini qo'llab-quvvatlaydigan funksiya.
`newton(guess)` funksiyasi, quyidagi 2 asosiy o'zgaruvchini o'z ichiga oladi:
1. `guess` - yuzaga kelgan hisoblangan yechim.
2. `x` - Yangi hisoblangan yechim.
`newton(guess)` dasturi foydalanuvchidan boshlang'ich tahmin hisoblanib oladi va `x` o'zgaruvchisiga kiritadi. Keyin, dastur `while` tsikliga kirib, yechimni topishni davom ettiradi. Yechim topilguncha tsikl tugatiladi va yechim qaytariladi.
Ushbu dasturda `1` boshlang'ich qiymati sifatida x izlanadi, shuningdek, yechimning ustuni ochiladi. Yangi hisoblangan yechim `x` o'zgaruvchiga saqlanadi va qaytariladi. Natijada yechim konsolga chiqariladi.