Cal011-L2 guruh talabasi Abdisalomov



Yüklə 0,99 Mb.
tarix11.05.2023
ölçüsü0,99 Mb.
#111447


M UHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI



CAL011-L2 guruh talabasi Abdisalomov



Avazbekning algoritmlarni loyihalash



fanidan 1-labaratoriya ishi



Mavzu: Chiziqli, tarmoqlanuvchi va takrorlanuvchi algoritmlar.

1-VARIANT





Tekshirdi: Nasriddinov Saloxiddin




Laboratoriya ishi №1.
Chiziqli, tarmoqlanuvchi va takrorlanuvchi algoritmlar.
Ishdan maqsad: Talabalarda algoritmlarni asimptotik tahlil qilish haqida ko’nikmalar hosil qilish, masalalarni yechishda saralash, qidirish algoritmlarini qo’llash va ularni tahlil qilish orqali qulayini tanlash.

1.1-topshiriq varianlari

Berilgan integralni Simpson hamda Monte-Karlo usulida hisoblang. Oraliqni bo’linish soni
N , hamda sinovlar soni M ko’rsatilgan.





𝒇(𝒙)

[𝒂, 𝒃]

𝑵

𝑴

1.

𝑠𝑖𝑛(𝑥 + 3) ∙ 𝑙𝑛(𝑥2 + 3𝑥 + 1)

[0;1]

12

100


Simpson usuli
Dastur kodi:
#include
using namespace std;

float F(float x) {


return sin(x+3)*log (pow(x,2)+3*x+1);
}
int main() {
double a = a, b = 1, n = 12;
double h = (b-a)/n, S = 0, m = n / 2;
cout<<"f(x) = sin(x+3)*log(pow(x,2)+3*x+1)"<for(int i = 1; i <= m; i ++) {
S += 4 * F(a + (2 * i - 1) * h);
if (i < m) {
S += 2 * F(a + 2* i * h);
}
}
S = (5 + F(a) + F(b)) *h / 3;
cout << S;
}

Dastur natijasi:



Monte-Karlo usuli
Dastur kodi va natijasi:

1.2. Algebraik va transtsendent tenglamalarni yechishda oraliqni teng ikkiga bo’lish, iteratsiya usullari.
1-Vazifa. Tenglamalar yechimlari joylashgan [a; b] oraliqni analitik usul bilan ajrating.
2-Vazifa. Tenglamalar yechimlari joylashgan oraliqlar aniqlangandan so’ng taqribiy yechimlarini oraliqni teng ikkiga bo’lish usulida
3-Vazifa. Algoritmini tuzib, dasturlash tilida dastur kodini yozib natija oling.

Laboratoriya ishiga doir topshiriq variantlari:

1-variant

a) 2x3-2x-1=0 b) 3x+cosx+1=0

a) 2x3 -2x-1=0
F(1)=-1 , f(2)=13
F(a)*f(b)<0 shart bajarildi; [1;2] oraliqni oldim.
Dastur kodi va natijasi:
#include
#include
using namespace std;
float F(float x)
{
//2x3-2x-1=8
return 2*x*x*x-2*x-1;
}
int main(){

const int k = 4;


float a,b,x[2*k+1], y [2*k+1], E = 0.001, c;
for(int i = 0; i <= 2*k+1; i ++)
{
x[i] = -k + i;
y[i] = F(x[i]);
}
for(int i = 0; i <= 2*k; i ++)
{
if(y[i]*y[i+1] <0)
{
a = x[i];
b = x[i+1];
}
}
cout << "a = " << a << ", b = " << b << endl;
while (fabs(b - a) >= E) {
c = (a + b) / 2;
if (F(a) * F(c) < 0) {
b = c;
}
else {
a=c;
}
}
c = (a + b) / 2;
cout << "c = " << c;
}




b) 3x+cosx+1=0
F(0)=2 , f(-1)=manfiy
F(a)*f(b)<0 shart bajarildi; [-1;0] oraliqni oldim.
Dastur kodi va natijasi:
#include
#include
using namespace std;
float F(float x)
{
//b) 3x+cosx+1=0
return 3*x+cos(x)+1;
}
int main(){
const int k = 4;
float a,b,x[2*k+1], y [2*k+1], E = 0.001, c;
for(int i = 0; i <= 2*k+1; i ++)
{
x[i] = -k + i;
y[i] = F(x[i]);
}
for(int i = 0; i <= 2*k; i ++)
{
if(y[i]*y[i+1] <0)
{
a = x[i];
b = x[i+1];
}
}
cout << "a = " << a << ", b = " << b << endl;

while (fabs(b - a) >= E) {


c = (a + b) / 2;
if (F(a) * F(c) < 0) {
b = c;
}
else {
a=c;
}
}
c = (a + b) / 2;
cout << "c = " << c;
}




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

  1. 𝑎) ln 𝑥 + (𝑥 + 1)3 = 0;

  2. 𝑏)𝑥3 + 2𝑥2 + 2 = 0.

Dastur kodi va natijasi:


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




  1. 𝑎) ln 𝑥 + (𝑥 + 1)3 = 0;

  2. 𝑏)𝑥3 + 2𝑥2 + 2 = 0.




Yüklə 0,99 Mb.

Dostları ilə paylaş:




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

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin