O’ZBEKISTON RESPUBLIKASI AXBOROT TEXNOLOGIYALARI VA KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI
Muhammad Al-Xorazmiy nomidagi Toshkent Axborot Texnologiyalari Universiteti
Algoritmlarni loyihalash fanidan
1-Amaliy ish
Mavzu: Chiziqli va Tarmoqlanuvchi algoritmlar
Guruh: 223-21 Topshirdi:Qosimov Omadbek Tekshirdi: Begimov Oybek
Toshkent-2023
Amaliy Ish №1
Chiziqli va tarmoqlanuvchi algoritmlar
13 - Variant
Topshiriq
(nxm) o’lchamdagi ikki o’lchovli A massiv(matritsa) berilgan, matritsaning har bir ustinidagi manfiy elementlari sonidan tashkil topgan bir o’lchovli B massiv hosil qiling
Yechimi:
Dasturlash tili: Python Numpy
import numpy as np
# nxm o'lchamdagi matritsani yaratamiz
A = np.array([[1, -2, 3], [4, -5, 6], [7, -8, 9]])
# Matritsaning har bir ustinidagi manfiy elementlari sonidan tashkil topgan B massivini hosil qilamiz
B = np.sum(A<0, axis=1)
print("A =\n", A)
print("B =", B)
Topshiriq
Berilgan integral qiymatini to‘g‘ri to‘rtburchaklar, trapetsiyalar usullarida hisoblansin. Har bir usul bo‘yicha har n – qiymatlari oshirilib borilib olingan natijalar (Integral ≈ qiymati) quyidagi jadvalga to’ldirilib tahlil qilinsin.
Yechimi:
import pandas as pd
import numpy as np
import math
def integral(x):
return (math.cos(0.6*x*x))
k = ["to'rtburchak usuli,"]
l = ["trapetsiyalar usuli,"]
a = math.pi * int(input("a ni kiriting:"))
b = math.pi * int(input("b ni kiriting:"))/2
n = [10, 20, 30, 50, 100, 1000, 10000, 100000]
for j in np.arange(len(n)):
h = (b - a) / n[j]
r = 0
s = 0
for i in range(n[j]):
x = a + i * h
s = s + integral(x) * h
if i >= 1:
x = a + (i + 1) * h
r = r + integral(x) * h
l.append(str((r + s)/2)+",")
k.append(str(s)+",")
n=[str(i)+"," for i in n]
with open("data.csv","w") as f:
f.write("usul,")
f.writelines(n)
f.write("\n")
f.writelines(k)
f.write("\n")
f.writelines(l)
Topshiriq
Berilgan algebraik va transsendent tenglamalarni yechishda oraliqni teng ikkiga bo‘lish va vatarlar usullaridan foydalanib tenglamaning taqribiy ildizini 0.1, 0.01, 0.001, 0.0001, 0.00001, 0.000001 aniqliklarda hisoblansin. Olingan natijalar quyidagi jadvalga to’ldirilib tahlil qilinsin.
Yechimi:
import numpy as np
from scipy.optimize import bisect
def f(x):
return np.cos(x**3 - 1) - 0.3 - 1/(x**4 + 11)
# kesma chegaralarini belgilab olish
a, b = -5.2, -5
# ildizning taqribiy qiymatini topish
epsilons = [0.1, 0.01, 0.001, 0.0001, 0.00001, 0.000001]
for eps in epsilons:
root = bisect(f, a, b, xtol=eps)
print(f"eps={eps} ildiz={root:.6f}")
javobi :
|