Przykład zastosowania funkcji do rozwiązywania układu równań liniowych

Wykorzystując metodę Sarrusa, czyli rozwiązanie układu równań przy wykorzystaniu wyznaczników macierzy. Symboliczny zapis układu równań liniowych wygląda jak poniżej

Układ równan liniowych. Visual Studio C#

Rozwiązaniem tego układu jest para liczb x i y, ale układ może być sprzeczny (brak rozwiązań) lub nieoznaczony (nieskończenie wiele rozwiązań). Te warunki należy uwzględnić pisząc algorytm rozwiązujący układ dowolnych równań liniowych z dwiema niewiadomymi.

Wartość x i y wyliczymy stosując metodę wyznaczników. Wzorem wartość x i y wyraża się jak poniżej

Układ równan liniowych metoda Sarrusa. Visual Studio C#

Gdzie wyznaczniki Wx, Wy i W oblicza się jak poniżej

Układ równan liniowych metoda wyznacznikowa. Visual Studio C#

Warunki rozwiązania układu równań są następujące

Schemat algorytmu rozwiązującego układ równań liniowych z dwiema niewiadomymi

Schemat algorytmu rozwiązującego układ równań liniowych z dwiema niewiadomymi. Visual Studio C#

Proponowany układ kontrolek

układ równań liniowych z dwiema niewiadomymi aplikacja. Visual Studio C#

W aplikacji wykorzystamy możliwość uaktualnienia postaci równania po wpisaniu współczynnika. Uaktualnienie zrealizujemy w zdarzeniu puszczenia klawisza (KeyUp) w kontrolkach TextBox.

Zaznacz grupę kontrolek TextBox przeznaczonych do wprowadzania współczynników równania pierwszego i drugiego

rozwiązanie układ równań liniowych z dwiema niewiadomymi aplikacja. Visual Studio C#

Przejdź do panelu Właściwości i wybierz zdarzenie KeyUp

Zdarzenie KeyUp Visual Studio C#

W metodzie obsługi zdarzenia KeyUp dla kontrolek równania pierwszego wprowadź poniższy kod

Wskazówka:


private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
	label7.Text = textBox1.Text + "x" +
		"+" + textBox2.Text + "y" +
		"=" + textBox3.Text;
}
Czynności powtórz dla kontrolek TextBox równania drugiego

Wskazówka:


private void textBox4_KeyUp(object sender, KeyEventArgs e)
{
	label8.Text = textBox4.Text + "x" +
		"+" + textBox5.Text + "y" +
		"=" + textBox6.Text;
}

Skompiluj program i sprawdź efekt działania. Prawidłowo działający program pokaże w kontrolkach typu Label postać równania liniowego

Funkcja obliczająca wyznacznik

Piszemy funkcję obliczającą wyznacznik macierzy 2x2. Funkcja będzie mieć cztery argumenty typu rzeczywistego- odpowiednie współczynniki podane z równań. Będzie również zwracać wynik w postaci liczby rzeczywistej.

Wskazówka:


float wyznacznik2x2(float _i1,float _j1,float _i2, float _j2)
{
	return _i1 * _j2 - _i2 * _j1;
}

Realizujemy algorytm rozwiązywania układu równań liniowych

W zdarzeniu Click kontrolki Button wprowadź poniższy kod

Wskazówka:


private void button1_Click(object sender, EventArgs e)
{
	float a1 = (float)Convert.ToDouble(textBox1.Text),
		b1 = (float)Convert.ToDouble(textBox2.Text),
		c1 = (float)Convert.ToDouble(textBox3.Text),
		a2 = (float)Convert.ToDouble(textBox4.Text),
		b2 = (float)Convert.ToDouble(textBox5.Text),
		c2 = (float)Convert.ToDouble(textBox6.Text);
	float Wx = wyznacznik2x2(c1, b1, c2, b2),
		Wy = wyznacznik2x2(a1, c1, a2, c2),
		W = wyznacznik2x2(a1, b1, a2, b2);
	//wyczyść textBox'a komunikatów
	textBox7.Text = null;
	float x, y;
	//rozwiąż układ równań
	if (W != 0) { 
		x = Wx / W;
		y = Wy / W;
		textBox7.AppendText("Istnieje jedno rozwiązanie" + Environment.NewLine);
		textBox7.AppendText("x = " + x.ToString("F2") + Environment.NewLine);
		textBox7.AppendText("y = " + y.ToString("F2"));
	}
	else
	if(Wx==0 && Wy == 0)
		textBox7.AppendText("Układ nieoznaczony, nieskończenie wiele rozwiązań");
	else
		textBox7.AppendText("Układ sprzeczny, brak rozwiązań");
}

Skompiluj program i sprawdź działanie. Poniżej zrzut ekranu działającej aplikacji rozwiązującej dowolny układ równań liniowych z dwiema niewiadomymi

aplikacja rozwiązujac aukład równań Visual Studio C#

Pełny kod programu

Pełny kod utworzonej aplikacji obliczającej rozwiązania układu równań liniowych z dwiema niewiadomymi

Wskazówka:


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 _22PojecieFunkcji_UkladRownan
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        float wyznacznik2x2(float _i1,float _j1,float _i2, float _j2)
        {
            return _i1 * _j2 - _i2 * _j1;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            float a1 = (float)Convert.ToDouble(textBox1.Text),
                b1 = (float)Convert.ToDouble(textBox2.Text),
                c1 = (float)Convert.ToDouble(textBox3.Text),
                a2 = (float)Convert.ToDouble(textBox4.Text),
                b2 = (float)Convert.ToDouble(textBox5.Text),
                c2 = (float)Convert.ToDouble(textBox6.Text);
            float Wx = wyznacznik2x2(c1, b1, c2, b2),
                Wy = wyznacznik2x2(a1, c1, a2, c2),
                W = wyznacznik2x2(a1, b1, a2, b2);
            //wyczyść textBox'a komunikatów
            textBox7.Text = null;
            float x, y;
            //rozwiąż układ równań
            if (W != 0) { 
                x = Wx / W;
                y = Wy / W;
                textBox7.AppendText("Istnieje jedno rozwiązanie" + Environment.NewLine);
                textBox7.AppendText("x = " + x.ToString("F2") + Environment.NewLine);
                textBox7.AppendText("y = " + y.ToString("F2"));
            }
            else
            if(Wx==0 && Wy == 0)
                textBox7.AppendText("Układ nieoznaczony, nieskonczenie wiele rozwiązań");
            else
                textBox7.AppendText("Układ sprzeczny, brak rozwiązań");
        }

        private void textBox1_KeyUp(object sender, KeyEventArgs e)
        {
            label7.Text = textBox1.Text + "x" +
                "+" + textBox2.Text + "y" +
                "=" + textBox3.Text;
        }

        private void textBox4_KeyUp(object sender, KeyEventArgs e)
        {
            label8.Text = textBox4.Text + "x" +
                "+" + textBox5.Text + "y" +
                "=" + textBox6.Text;
        }
    }

}

Ćwiczenie:

Na podstawie przedstawionego rozwiązania oraz odszukanych informacji w Internecie dotyczących wyznacznika 3x3 napisz aplikację rozwiązującą układ równań z trzema niewiadomymi

Alkomat- wirtualny test

Alkomat- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
Olinowanie stałe- kalkulator średnic

Olinowanie stałe- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
przepis na gogfry

Przepis na gofry

zobacz
przepis na bitą śmietanę

Przepis na bitą śmietanę

zobacz