Toshkent axborot texnologiyalari universiteti


Algebraik va transtsendent tenglamalarni yechishda oraliqni teng ikkiga bo’lish, iteratsiya usullari



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

1.2. Algebraik va transtsendent tenglamalarni yechishda oraliqni teng ikkiga bo’lish, iteratsiya usullari.
Vazifa. Tenglamalar yechimlari joylashgan [a; b] oraliqni grafik va analitik usullar bilan ajrating.

  1. Vazifa. Tenglamalar yechimlari joylashgan oraliqlar aniqlangandan so’ng taqribiy yechimlarini oraliqni teng ikkiga bo’lish usulida E=0.001 aniqlikda hisoblang. Algoritmini tuzib, dasturlash tilida dastur kodini yozib natija oling.

3-Vazifa. Algebraik va transtsendent tenglamalarning taqribiy yechimlarini vatarlar va urinmalar usuli bilan toping. Algoritmini tuzib, dasturlash tilida dastur kodini yozib natija oling.
a) x3-3x2+5x+1=0
Quyidagi C++ kodida, berilgan tenglamalar uchun ildiz topishni amalga oshirish uchun yuqoridagi har xil vazifalarni hal qilish algoritmlari berilgan:
#include
#include

double func(double x) {


return x * x * x - 3 * x * x + 5 * x + 1;
}

double func_derivative(double x) {


return 3 * x * x - 6 * x + 5;
}

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


if (func(a) * func(b) >= 0) {
std::cout << "The function may not have a root in the given interval." << std::endl;
return 0;
}

double c;


int iteration = 0;

do {
c = (a + b) / 2;


if (func(c) == 0.0) {
break;
}
else if (func(a) * func(c) < 0) {
b = c;
}
else {
a = c;
}

iteration++;


} while (fabs(func(c)) > epsilon);

std::cout << "Bisection Method: ";


std::cout << "Root: " << c << ", Iterations: " << iteration << std::endl;

return c;


}

double newtonRaphsonMethod(double initial, double epsilon) {


double x = initial;
int iteration = 0;

while (fabs(func(x)) > epsilon) {


x = x - func(x) / func_derivative(x);
iteration++;
}

std::cout << "Newton-Raphson Method: ";


std::cout << "Root: " << x << ", Iterations: " << iteration << std::endl;

return x;


}

int main() {


double a = -10.0; // Boshlang'ich kesishma
double b = 10.0; // Oxirgi kesishma
double epsilon = 0.0001; // Toleransiya qiymati

bisectionMethod(a, b, epsilon);


newtonRaphsonMethod(a, epsilon);

return 0;


}




b) 2x-cosx=0 Algebraik va transtsendent tenglamalarni yechishda oraliqni teng ikkiga bo’lish,

#include


#include

double func(double x) {


return 2 * x - cos(x);
}

double func_derivative(double x) {


return 2 + sin(x);
}

double newtonRaphsonMethod(double initial, double epsilon) {


double x = initial;
int iteration = 0;

while (fabs(func(x)) > epsilon) {


x = x - func(x) / func_derivative(x);
iteration++;
}

std::cout << "Root: " << x << ", Iterations: " << iteration << std::endl;

return x;
}

int main() {


double initial = 0.0; // Boshlang'ich x qiymati
double epsilon = 0.0001; // Toleransiya qiymati

newtonRaphsonMethod(initial, epsilon);

return 0;
}



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ə