Jizzax filiali amaliy matematika fakulteti «kompyuter ilmlari va dasturlashtirish»


Download 473.53 Kb.
Sana25.04.2023
Hajmi473.53 Kb.
#1397819
Bog'liq
Mustaqil 2


OʻZBEKISTON RESPUBLIKASI
OLIY VA O‘RTA MAXSUS TA’LIM VAZIRLIGI
MIRZO ULUG‘BEK NOMIDAGI MILLIY UNIVERSITETININIG
JIZZAX FILIALI


AMALIY MATEMATIKA FAKULTETI
«KOMPYUTER ILMLARI VA DASTURLASHTIRISH» kafedrasi
ALGORITMLAR VA BERILGANLAR STRUKTURASI” FANIDAN

Mustaqil ish

Mavzu: Gauss usuli yordamida tenglamalar sistemasini yechish algoritmi


Bajardi: “Axbarot tizimlar va texnalogiyalari” yoʻnalishi ATT kurs 2 guruh
22-21 Talabasi Mavlonova Sitora
Tekshirdi: Tojiyev M

Jizzax – 2023






Reja:

  1. Gauss usuli yordamida tenglamalar sistemasini yechish algoritmi

  2. Windows form da dasturi

  3. Xulosa


CHIZIQLI TENGLAMALAR TIZIMINI GAUSS USULI BILAN YECHISH
Ko'pgina amaliy masalalarda quyidagi shakldagi chiziqli algebraik tenglamalar tizimini yechish kerak bo'ladi:
Ax=f 6(1)
Bu yerda A m×m matritsa, kerakli vektor, berilgan vektor. A matritsaning determinanti dan farq qiladi deb taxmin qilinadi.nolga teng, shuning uchun x yechim mavjud va yagonadir. Ko'pgina hisoblash muammolari uchun A matritsasining katta tartibi odatiy hisoblanadi. Chiziqli algebraik tenglamalar tizimini sonli yechish usullari ikki guruhga bo'linadi: to'g'ridan-to'g'ri usullar va takroriy usullar. Takrorlanuvchi usullar deganda tizimning x yechimi n → ∞ ketma-ket x(n) kabi chegara sifatida topilganligini bildiradi, bunda n - takrorlanish soni.Odatda kichik > 0 raqami o'rnatiladi va hisob-kitoblar shu vaqtgacha amalga oshiriladi baholash tugaguniga qadar.
6(2)
Takrorlashlar soni n n = n( ) aniqlikka bog'liq. Ko'pgina iterativ usullar maxsus turdagi matritsalar (uch diagonal, simmetrik, tarmoqli, katta siyrak va boshqalar) uchun mo'ljallangan.
Tizimni (6.1) yechishning eng yaxshi ma'lum to'g'ridan-to'g'ri usullari bu determinantlarni hisoblashga asoslangan Kramer usuli va Gauss usul noma'lumlarni ketma-ket chiqarib tashlashga asoslanganda katta m birinchi yo'l buyurtma m talab qiladi! arifmetik amallar va ikkinchisi faqat O(m3) harakatlar. Shuning uchun Gauss usuli keng qo'llaniladi chiziqli algebra masalalarini sonli yechishda. To'g'ridan-to'g'ri usullar A matritsasi har qanday maxsus shaklga ega va uning tartibi yo'q deb hisoblamaydi100 dan oshadi.
(6.1) tizimni kengaytirilgan shaklda yozamiz

Tizimni yechishning Gauss usuli (6.3) bu sistemadan , nomaʼlumlarni ketma-ket chiqarib tashlashdan iborat. Keling, shunday da'vo qilaylik ≠ 0. Birinchi tenglamani ga bo'lib, hosil bo'ladi

Bu yerda

Endi (6.3) sistemaning qolgan tenglamalarini ko'rib chiqamiz:

(6.4) ni ai1 ga ko'paytiring va hosil bo'lgan tenglamani i-tenglamadan ayiring. sistema (6.6), i=2,…,m. Natijada biz quyidagi tenglamalar tizimini olamiz:

Bu yerda belgilar:

Tizim matritsasi (6.7) quyidagi shaklga ega:

Bunday strukturaning matritsalari uchun quyidagi belgilar qabul qilinadi:

Bu yerda x nolga teng bo'lmagan elementlarni bildiradi. Tizimda (6.7)noma'lum x1 faqat birinchi tenglamada mavjud.Keyinchalik, kesilgan tenglamalar tizimi bilan shug'ullanish kifoya

Shunday qilib, biz Gauss usulining birinchi bosqichini yakunladik. Agar ≠ 0 bo'lsa,keyin noma'lum va (2) ga ekvivalent va quyidagi matritsaga ega bo'lgan tizimga keling tuzilmalar:

Bu holda (6.7) sistemaning birinchi tenglamasi o'zgarishsiz qoladi.Xuddi shunday, noma'lum , ,... yo'q qilish. Natijada, tenglamalar tizimi quyidagi ko'rinishga keltiriladi:

Ushbu tizimning matritsasi



Asosiy diagonal ostidagi elementlarda nollarni o'z ichiga oladi. Bu shakldagi matritsalar yuqori uchburchak matritsalar deyiladi.Olish tizimi (8) Gauss usulining bevosita harakatidir. Teskari harakat (8) tizimidan , noma’lumlarni topishdir.Matritsa uchburchak shaklga ega bo'lganligi sababli, ketma-ket boshlash mumkin bilan barcha noma'lumlarni toping. Umumiy orqaga harakat formulalari quyidagilardir

Oldinga o'tish dasturida Gauss usulini qo'llashda , o'zgaruvchilari bilan ishlashning hojati yo'q. Algoritmni belgilash kifoyaunga ko'ra asl A matritsasi uchburchak shaklga aylantiriladi (6.11) va tizimning o'ng tomonlarining mos keladigan o'zgarishlarini ko'rsating.Keling, ushbu umumiy formulalarni olamiz. Birinchi k-1 bosqichlari amalga oshirilsin, ya'ni. Allaqachon ,…, o'zgaruvchilari bundan mustasno. Keyin bizda tizim mavjud

Ushbu tizimning k tenglamasini ko'rib chiqing:

Faraz qilaylik ≠ 0 Bu tenglamaning ikkala tomonini ga teng qilib olamiz



Bu yerda:

Keyinchalik (6.14) tenglamani ga ko'paytirish kerak va natijaviy munosabatni sistemaning (6.13) i-tenglamasidan ayirib tashlang, bunda i=k+1,k+2,…,m. Natijada (6.13) tizim tenglamalarining oxirgi guruhi quyidagi shaklni oladi:


Bu yerda:

Shunday qilib, Gauss usulining bevosita kursida tenglamalarning koeffitsientlari quyidagi qoidaga muvofiq aylantiriladi:

Tizimning o'ng qismlarini hisoblash (6.10) formulalar bo'yicha amalga oshiriladi:

koeffitsientlari va o'ng qismlari yi, i=1,2,..m, j=i+1,i+2,…, m, saqlanadi.Xotirada va formulalar bo'yicha orqaga qaytishda ishlatiladi(6.12).
Shubhasiz, oldinga siljishda barcha elementlarni deb hisoblash kerak. noldan farq qiladi. Raqam k-bartaraf qilish bosqichida yetakchi element deb ataladi. Hisob-kitoblar jarayonida ba'zi bir etakchi element nolga teng bo'lmasa-da, lekin shunchaki unga yaqin bo'lsa ham katta xatolar to'planishi mumkin. Ushbu vaziyatdan chiqish yo'li shundaki, etakchi element tanlanmagan va boshqa raqam 6.1 ro'yxatida A matritsasini oladigan Gauss() usuli ko'rsatilgan va erkin a'zolar ustuni B va usulning oldinga va orqaga qadamlarini amalga oshiradi.


Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;


namespace gaus_usuli
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private double[] Solve(double[,] A, double[] B)
{
int n = B.Length;
for (int i = 0; i < n; i++)
{
// Eng katta elementni izlash
int max = i;
for (int j = i + 1; j < n; j++)
{
if (Math.Abs(A[j, i]) > Math.Abs(A[max, i]))
{
max = j;
}
}
// Qatorlarni almashtirish
double[] temp = new double[n];
for (int j = 0; j < n; j++)
{
temp[j] = A[i, j];
A[i, j] = A[max, j];
A[max, j] = temp[j];
}
double t = B[i];
B[i] = B[max];
B[max] = t;
// Qatorlarni yechish
for (int j = i + 1; j < n; j++)
{
double alpha = A[j, i] / A[i, i];
B[j] = B[j] - alpha * B[i];
for (int k = i; k < n; k++)
{
A[j, k] = A[j, k] - alpha * A[i, k];
}
}
}
// Javobni topish
double[] X = new double[n];
for (int i = n - 1; i >= 0; i--)
{
double sum = 0;
for (int j = i + 1; j < n; j++)
{
sum += A[i, j] * X[j];
}
X[i] = (B[i] - sum) / A[i, i];
}
return X;
}
private void button1_Click(object sender, EventArgs e)
{
double[,] A = new double[3, 3];
A[0, 0] = Convert.ToDouble(textBox1.Text);
A[0, 1] = Convert.ToDouble(textBox13.Text);
A[0, 2] = Convert.ToDouble(textBox3.Text);
A[1, 0] = Convert.ToDouble(textBox4.Text);
A[1, 1] = Convert.ToDouble(textBox14.Text);
A[1, 2] = Convert.ToDouble(textBox6.Text);
A[2, 0] = Convert.ToDouble(textBox7.Text);
A[2, 1] = Convert.ToDouble(textBox15.Text);
A[2, 2] = Convert.ToDouble(textBox9.Text);
double[] B = new double[3];
B[0] = Convert.ToDouble(textBox10.Text);
B[1] = Convert.ToDouble(textBox11.Text);
B[2] = Convert.ToDouble(textBox12.Text);
double[] result = Solve(A, B);
for (int i = 0; i < result.GetLength(0); i++)
{
result[i] = Math.Round(result[i], 2);
}
for (int i = 0; i < result.GetLength(0); i++)
{
rsttxt.Text += " x" + (i + 1).ToString() + "=" + result[i].ToString() + ";";
}
}


private void button2_Click(object sender, EventArgs e)
{
textBox1.Text = "";
textBox13.Text = "";
textBox3.Text = "";
textBox4.Text = "";
textBox14.Text = "";
textBox6.Text = "";
textBox7.Text = "";
textBox15.Text = "";
textBox9.Text = "";
textBox10.Text = "";
textBox11.Text = "";
textBox12.Text = "";
rsttxt.Text = "";
}
}
}

Xulosa:
Xulosa qilib aytish mumkinki, Gauss usuli chiziqli tenglamalar tizimini yechish uchun kuchli algoritmdir. O'zgaruvchilarni yo'q qilish va uchburchak tizimni yaratish uchun qator operatsiyalarni qo'llash orqali hatto katta, murakkab tizimlarni ham samarali va aniq hal qilish mumkin. Ammo shuni ta'kidlash kerakki, usul asosan asosiy arifmetikaga tayanadi va tafsilotlarga diqqat bilan e'tibor berishni talab qiladi. Amaliyot bilan Gauss usuli keng doiradagi ilovalarda chiziqli tenglamalarni yechmoqchi bo‘lgan har bir kishi uchun muhim vositaga aylanishi mumkin.
Foydalanilgan adabiyotlar:

  1. C#. АЛГОРИТМЫ И СТРУКТУРЫ ДАННЫХ

  2. Data Structures And Algorithmic Thinking With Python

  3. DATA STRUCTURES AND ALGORITHMS USING C#

Download 473.53 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling