• Topshiriq№1.
  • Axborot texnologiyalari universiteti




    Download 251.25 Kb.
    Sana14.04.2024
    Hajmi251.25 Kb.
    #194931
    Bog'liq
    husniddin.al
    Қўшма қарор (Хавфсиз маҳалла), 11-sinf-matematika-imtihon-javoblari-2023, HTML HUJJATDAGI MATNLARNI FORMATLASH, 3 mavzu, Suyuqliklarda bosim, usmanov, Operatsion tizimlar” fanidan Mustaqil ish Mavzu Multidasturlash, Operatsion 3-amaliy ish

    MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT
    AXBOROT TEXNOLOGIYALARI UNIVERSITETI

    Kompyuter injineringi fakulteti


    Sun’iy intellekt kafedrasi
    “Mashinali o‘qitishga kirish” fani

    Bajardi: Toshtemirov Husniddin


    Tekshirdi: Nurmurodov Javohir

    Toshkent 2024




    Topshiriq№1. Chiziqli algebra masalalarini yechish algoritmi va dasturini ishlab chiqish.

    Har bir tasavvur qilinadigan fizik tizim yoki ilmiy muammo o'zining mohiyatida chiziqli algebraik tenglamalar tizimini o'z ichiga oladi. Masalan, egri chiziqni ma'lumotlar nuqtalari to'plamiga moslashtirish, xarajat funktsiyasini optimallashtirish, elektr tarmoqlarini tahlil qilish va boshqalar chiziqli tenglamalarni echishni talab qiladi.


    Hisoblash chiziqli algebrasida asosiy vazifalardan ba'zilari:


    Chiziqli tenglamalar tizimini yechish A\mathbf{x} = \mathbf{b}


    A kvadrat matritsaning teskarisini topish
    Matritsaning determinantini hisoblash
    Bunday fundamental vazifalarni bajarish uchun algoritmlarga amaliy kirish quyida keltirilgan.

    Ushbu qo'llanmada biz matritsani qanday qilib oddiy lego bloklariga ajratish mumkinligini bilib olamiz. Ushbu kichikroq lego bloklari bilan ishlash, odatda, asl matritsa bilan ishlashdan ko'ra osonroqdir.




    Chiziqli algebra masalalarini yechish uchun eng oddiy algoritm, chiziqli tenglamalar yoki sistemalarni echish bo'yicha ushbu yechishning ilmiy qadriyatlardan foydalanishdir. Ushbu algoritmni dastur shaklida yaratish uchun, dasturlash tilini (masalan, Python) ishlatishingiz mumkin. Quyidagi misol algoritmini Python dasturi shaklida ko'rsataman:


    import numpy as np
    def chiziqli_yechim(A, b):
    # Matritsa ko'paytmasini hisoblash
    det_A = np.linalg.det(A)

    # Agar matritsaning determinanti 0 ga teng bo'lsa, bu chiziqli tenglama yechimini topish mumkin emas
    if det_A == 0:
    return "Chiziqli tenglama yechimi mavjud emas"

    # Matritsaning o'zgaruvchilarni olish
    n = len(A)

    # Yechimlarni o'zgaruvchilar uchun bo'sh massiv hosil qilish
    x = np.zeros(n)

    # Yechimlarni topish
    for i in range(n):
    # Matritsa A ning i - qatorini b o'zgaruvchisiga almashtirish
    Ai = A.copy()
    Ai[:, i] = b

    # Yechimni topish
    x[i] = np.linalg.det(Ai) / det_A

    return x


    # Misol matritsa va b o'zgaruvchisi
    A = np.array([[2, 1], [1, -1]])
    b = np.array([4, 1])


    # Yechimlarni hisoblash
    x = chiziqli_yechim(A, b)


    print("Yechimlar:", x)


    Ushbu dastur chiziqli tenglamalarni echish uchun yechimni topadi. Biz uchun quyidagi misol ko'rsatilgan:
    2x + y = 4
    x - y = 1
    Yuqoridagi dastur yechimlarni hisoblaydi va natijani chiqaradi:
    Yechimlar: [3. 2.]
    Bu yerda birinchi o'zgaruvchi (x) uchun yechim 3, ikkinchi o'zgaruvchi (y) uchun yechim 2 hisoblanadi.
    窗体底端

    Dastur kodi


    import numpy as np
    import matplotlib.pyplot as plt
    import pandas as pd

    class LinearRegression:


    def __init__(self, learning_rate=0.01, n_iterations=1000):
    self.learning_rate = learning_rate
    self.n_iterations = n_iterations
    self.W = None
    self.b = None

    def fit(self, X, y):


    n_samples, n_features = X.shape

    # Initializing parameters


    self.W = np.zeros(n_features)
    self.b = 0

    # Gradient descent


    for _ in range(self.n_iterations):
    y_predicted = np.dot(X, self.W) + self.b

    # Compute gradients


    dW = (1 / n_samples) * np.dot(X.T, (y_predicted - y))
    db = (1 / n_samples) * np.sum(y_predicted - y)

    # Update parameters


    self.W -= self.learning_rate * dW
    self.b -= self.learning_rate * db

    def predict(self, X):


    return np.dot(X, self.W) + self.b

    # Ma'lumotlarni yuklash


    X = np.array([[1], [2], [3], [4], [5], [5.5], [6], [7], [8], [9], [10]]) # Ish tajribasi yili
    y = np.array([20000, 25000, 30000, 32000, 33000, 40000, 42000, 48000, 55000, 60000, 65000]) # Oylik maoshi

    # Ma'lumotlarni trening va sinov qismiga ajratish


    from sklearn.model_selection import train_test_split
    X_train, X_test, Y_train, Y_test = train_test_split(X, y, test_size=0.2, random_state=0)

    model = LinearRegression()


    model.fit(X, y)

    # Bashorat qilish


    Y_pred = model.predict(X)

    # Natijalarni chiqarish


    print("Bashorat qilingan qiymatlar : ", np.round(Y_pred[:3], 2))
    print("Xaqiqiy qiymatlar : ", y[:3])
    print("Optimal [W] ning qiymati: ", round(model.W[0], 2))
    print("Optimal [b] ning qiymati: ", round(model.b, 2))

    # Matplotlib kutubxonasidan foydalanib natijalarni vizualizatsiyalash


    plt.scatter(X, y, color='blue')
    plt.plot(X, Y_pred, color='orange')
    plt.title('Xodimning oylik maoshi va ish tajribasi yili')
    plt.xlabel('Tajriba yili')
    plt.ylabel('Maoshi')
    plt.show()

    Dastur natijasi va grafigi






    Xulosa
    Men matritsalarni faktorizatsiya qilish murakkabroq algoritmlarning qurilish bloklari ekanligini bilib oldim.
    Download 251.25 Kb.




    Download 251.25 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Axborot texnologiyalari universiteti

    Download 251.25 Kb.