Równanie kwadratowe

Równanie kwadratowe

Program: testujący działania dążące do obliczenia funkcji kwadratowej.

Jak w opisie.

Kompilator: Microsoft Visual Studio

Galeria:

Program w akcji.

Kod programu:

Program główny:

//Program główny
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Rownanie_kwadratowe
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

//Klasy
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Rownanie_kwadratowe
{
    public class rownanie
    {
        public double liczba_a(double a)
        {
            if (a == 0)
                throw new ArgumentOutOfRangeException();
            else
                return a;
        }
        public double delta(double a, double b, double c)
        {
            double delta = b * b - 4 * a * c;
            return delta;
        }
        public double pierw_delta(double delta)
        {
            if (delta < 0)
                throw new ArgumentOutOfRangeException();
            double pierw_delta = Math.Sqrt(delta);
            return pierw_delta;
        }

        public double pierwiastkiall_delta(double pierw_delta, double a, double b)
        {
            double x1;
            if (pierw_delta == 0)
            {
                return x1 = (-b) / (2 * a);
            }
            else if (pierw_delta > 0)
            {
                return x1 = ((-b) + pierw_delta) / (2 * a) + ((-b) - pierw_delta) / (2 * a);
            }
            else
                throw new ArgumentOutOfRangeException();
        }
    }
}

Jednostka testowa:

//Unit testowy
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Rownanie_kwadratowe;

namespace UnitTestRownanie
{
    [TestClass]
    public class UnitTest1
    {
        rownanie test = new rownanie();
        [TestMethod]
        public void Test_LiczbaA()
        {
            double a = 1;
            double pop = a;
            double od_metody_testowej = test.liczba_a(a);
            Assert.AreEqual(pop, od_metody_testowej);

        }
        [TestMethod]
        public void Test_Delta()
        {
            double a = 1;
            double b = 2;
            double c = 3;
            double pop = b * b - 4 * a * c;
            double od_metody_testowej = test.delta(a, b, c);
            Assert.AreEqual(pop, od_metody_testowej);
        }
        [TestMethod]
        public void Test_Pierwiastek_z_delta()
        {
            double delta = 16;
            double pop = Math.Sqrt(delta);
            double od_metody_testowej = test.pierw_delta(delta);
            Assert.AreEqual(pop, od_metody_testowej);
        }

        [TestMethod]
        [ExpectedException(typeof(ArgumentOutOfRangeException))]
        public void Test_Rozwiazania()
        {
            double pierw_delta = -3;
            double pop;
            double a = 1, b = 2;
            if (pierw_delta == 0)
            {
                pop = (-b) / (2 * a);
                double od_metody_testowej = test.pierwiastkiall_delta(pierw_delta, a, b);
                Assert.AreEqual(pop, od_metody_testowej);
            }
            else
            {
                pop = ((-b) + pierw_delta) / (2 * a) + ((-b) - pierw_delta) / (2 * a);
                double od_metody_testowej = test.pierwiastkiall_delta(pierw_delta, a, b);
                Assert.AreEqual(pop, od_metody_testowej);
            }
        }
    }
}

Słowniczek pojęć:

Funkcja wielomianowa drugiego stopnia, tzn. postaci f(x) = ax^2 + bx + c, gdzie a, b, c są pewnymi stałymi, przy czym a!=0 (co gwarantuje, że funkcja kwadratowa nie degeneruje się do przypadku funkcji liniowej; to założenie będzie obowiązywać w całym artykule). Funkcja kwadratowa realizuje pewien wielomian (drugiego stopnia), z tego powodu nazywa się ją czasami trójmianem kwadratowym.