Toshkent axborot texnologiyalari universiteti


Tenglamalarni yechishda Nyuton va vatarlar usullari. Yaqinlashish tezligi. Nyuton (Urinmalar) usuli



Yüklə 2 Mb.
səhifə3/3
tarix12.05.2023
ölçüsü2 Mb.
#109825
1   2   3
Algoritm.1 Dildora

3.Tenglamalarni yechishda Nyuton va vatarlar usullari. Yaqinlashish tezligi. Nyuton (Urinmalar) usuli.

Talabalar mustaqil bajarishlari uchun topshiriqlar:



  1. Tenglama ildizlarini ajratish iteratsion metodi yordamida 0,001 aniqlikda hisoblash.

  2. Vatarlar va urinmalar usullari yordamida tenglama taqribiy ildizlarini 0,001 aniqlikda hisoblash.

  3. Tenglamaning taqribiy oraliqlari topib, ularning yaqinlashish tezligini baholash.

Ushbu vazifalarni bajarish uchun kerakli C++ kodlari quyidagilardir:


𝑎) 2𝑥 − lg𝑥 = 7;

#include


#include

// Tenglama uchun funksiya


double equation(double x) {
return 2 * x - log10(x) - 7;
}

// Tenglama uchun funksiyaning differensialini hisoblash


double derivative(double x) {
return 2 - 1 / (x * log(10));
}

// Nyuton usuli (urinmalar usuli)


double newtonMethod(double x0, double epsilon, int maxIterations) {
double x = x0;
int iteration = 0;

while (std::abs(equation(x)) > epsilon && iteration < maxIterations) {


x = x - equation(x) / derivative(x);
iteration++;
}

return x;


}

int main() {


double x0 = 2; // Boshlang'ich taxmin
double epsilon = 0.0001; // Epsilon (toleransiya)
int maxIterations = 1000; // Maksimal urinishlar soni

double result = newtonMethod(x0, epsilon, maxIterations);

std::cout << "Natija: " << result << std::endl;

return 0;}




b) 𝑥3 + 2𝑥 + 4 = 0. tenglamaning e =0. 01 aniqlikdagi taqribiy ildizi topilsin.
Quyida C++da ushbu misol kodi berilgan:

#include


#include

double f(double x) {


return pow(x, 3) + 2* x +4;
}

double findRoot(double a, double b, double epsilon) {


double c = (a + b) / 2.0;
while (fabs(f(c)) > epsilon) {
if (f(a) * f(c) < 0) {
b = c;
} else {
a = c;
}
c = (a + b) / 2.0;
}
return c;
}

int main() {


double a = 0.01; // Start of the interval
double b = 1.0; // End of the interval
double epsilon = 0.0001; // Desired precision
double root = findRoot(a, b, epsilon);
std::cout << "Approximate root: " << root << std::endl;
return 0;
}
Bu koddagi f(x) funksiyasi berilgan ildizning funksiyasini ifodalaydi. findRoot funksiyasi, berilgan aralikda (a va b orasida) ildizni topish uchun ikki nuqta orasidagi biseksiya usuli (bisection method) bilan ishlaydi. Kodda epsilon qiymati aniqlikni ifodalaydi. Kod ishga tushurilganda Approximate root degan chiqish matni bilan taqribiy ildiz topiladi va ekranga chiqariladi.

Yüklə 2 Mb.

Dostları ilə paylaş:
1   2   3




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə