Moje doświadczenia z Excelem, Accesem i programowaniem w VBA

Wpisy z tagiem: pierwiastek

środa, 27 kwietnia 2011

Matematyka, szczególnie ta nauczana na różnych etapach edukacji, ma swoje prawa i zwyczaje. Dobrym przykładem może być tu zapis liczb niewymiernych. Co z tego, że na kalkulatorze możemy wyznaczyć wartość √2 z dokładnością do wielu miejsc po przecinku? Zawsze będzie to tylko przybliżona wartość. Rozwiązując zadania - prawidłowy wynik często musi być więc liczbą niewymierną. Jeżeli pod pierwiastkiem mamy np. liczbę 12 - to w prosty sposób widzimy, ze jest to po prostu 2√3. Jeśli jednak mamy np. 4050? Moze być to już trudniejsze.
Może więc warto zrobić sobie mały programik, który za nas to wyliczy?

Jedna z propozycji wygląda tak:

Public Function LiczbaNiewymierna(JakaLiczba As Integer)
Dim PrzedPierwiastkiem
Dim PodPierwiastkiem
Dim Wynik
Dim MojaLiczba

PrzedPierwiastkiem = 1
PodPierwiastkiem = JakaLiczba
MojaLiczba = JakaLiczba
Wynik = 1

Do While Wynik <> 0
Wynik = Sprawdzliczbe(PodPierwiastkiem)
If Wynik > 0 Then
   PrzedPierwiastkiem = PrzedPierwiastkiem * Sqr(Wynik)
   PodPierwiastkiem = PodPierwiastkiem / Wynik
End If
Loop
LiczbaNiewymierna = PrzedPierwiastkiem & " V " & PodPierwiastkiem

End Function

-------------------------------------------------------------------------

Public Function Sprawdzliczbe(AnalizowanaLiczba)
Dim i As Integer
Dim CzyInt
Dim a
Dim b


For i = AnalizowanaLiczba To 2 Step -1
    If AnalizowanaLiczba Mod i = 0 Then
       CzyInt = Sqr(i) / (Int(Sqr(i)))
       If CzyInt = 1 Then
          Sprawdzliczbe = i
          Exit Function
        End If
    End If
Next
Sprawdzliczbe = 0

End Function

Funkcja SprawdzLiczbe jest tu podrzędną. Wprowadzony argument AnalizowanaLiczba jest dzielony przez kolejne liczby (malejąco o 1 aż do wartości równej 2). Jeżeli chwilowa wartość zmiennej i jest podzielnikiem AnalizowanejLiczby - następuje sprawdzenie - czy jej pierwiastek kwadratowy jest liczbą całkowitą (iloraz pierwiastka i cześci całkowitej z pierwiastka jest równy 1). Jeżeli znajdzie się taka liczba - następuje natychmiastowe wyjście z funkcji, a sama wartość funkcji jest równa tej liczbie.
Następnie zmienna PrzedPierwiastkiem zostaje pomnożona przez pierwiastek tej liczby, a zmienna PodPierwiastkiem - podzielona przez samą liczbę. I ponownie analizujemy to, co pod pierwiastkiem. Jeżeli finalnie PodPierwiastkiem nie da się już rozłożyć na 2 czynniki, z kórych jeden jest kwadratem liczby naturalnej - funkcja SprawdzLiczbe przyjmie wartość 0. Jest to warunek wyjścia z pętli w funkcji LiczbaNiewymierna i wyniku ostatecznego.

W praktyce wyglada to tak:

Liczba niewymierna

Wstawiając do komórki A1 wartość - w komórce C1 otrzymujemy pierwiastek z niej w zapisie liczby niewymiernej. komórca C1 - to funkcja użytkownika LiczbaNiewymierna. 
I już - o to chodziło, prawda? 

 

czwartek, 07 kwietnia 2011

Obliczanie pierwiastków równania kwadratowego to jedno z najczęściej spotykanych zadań matematycznych i to na różnych poziomach edukacji. Jak je wyznaczyć bezpośrednio w arkuszu Excela pisałam tu:

 Pierwiastki rzeczywiste równania kwadratowego

 Pierwiastki zespolone równania kwadratowego

Jak to zrobić w VBA? Można np.tak:

Private Function ObliczPierwiastki(a, b, c)
Dim Delta
Dim PierwiastekzDelty
Dim X0
Dim X1
Dim X2
Dim Xr
Dim Xu

Delta = b ^ 2 - 4 * a * c
If Delta = 0 Then                'Równanie ma jedno rozwiązanie            
    X0 = -b / (2 * a)
    Range("a4").Value = "X0= " & X0
    Range("a5").Value = ""
End If
If
Delta > 0 Then                'Równanie ma dwa rozwiązania rzeczywiste
    PierwiastekzDelty = Sqr(Delta)
    X1 = (-b - PierwiastekzDelty) / (2 * a)
    X2 = (-b + PierwiastekzDelty) / (2 * a)
    Range("a4").Value = "X1= " & X1
    Range("a5").Value = "X2= " & X2
End If
If
Delta < 0 Then                'Równanie ma dwa rozwiązania zespolone

    PierwiastekzDelty = Sqr(-Delta)
    Xr = -b / (2 * a)
    Xu = Abs(PierwiastekzDelty / (2 * a))
    Range("a4").Value = "X1= " & Xr & " +j " & Xu
    Range("a5").Value = "X2= " & Xr & " -j " & Xu
End If
End Function

Funkcja ma charakter uniwersalny tzn. oblicza zarówno pierwiastki rzeczywiste jak i urojone równania. Oczywiście liczby zespolone nie są standardem nauczania. W wersji uproszczonej można jednak bez problemu dla warunku Δ<0 wpisać odpowiedź "brak pierwiastków".

Funkcja jest przypisana do modułu arkusza i zapisuje wyniki w konkretnych komórkach tego arkusza.

pierwiastki równania kwadratowego

Istotny jest też tu fakt, że funkcja ta przypomina bardziej makro wykonywalne niż funkcje VBA. Do jej uruchomienia potrzebne jest jakieś zdarzenie. Moim zdaniem - najprościej można tu użyć  jakiegoś zdarzenia arkusza lub skoroszytu. Można też oczywiście zmodyfikować kod, aby uzyskać klasyczną funkcję zwracajaca wynik (np. czy Δ jest ujemna, dodatnia czy równa 0), a wartości pierwiastków wpisywać w odniesieniu względnym do jakiejś komórki).
To już jednak pole do popisu dla włąsnej kreatywności każdego z czytających te słowa.

poniedziałek, 28 marca 2011

Poprzednia notka dotyczyła wyliczenia w arkuszu Excel pierwiastków rzeczywistych równania kwadratowego. Wpisane tam formuly działają jeżeli wartość Δ ≥ 0. Dla wartości ujemnych Δ pierwiastki w zbiorze liczb rzeczywistych nie istnieją. Można je za to obliczyć w zbiorze liczb zespolonych. Wprawdzie nie bezpośrednio, ale wystarczy trochę pomyśleć i oszukać Excela.

Załóżmy, że szukamy pierwiastków równania:
-X2 - 2X - 5 = 0
W tym przypadku Δ = -16.
Ponieważ -1= j2 możemy zapisać, że
Δ = 16j2
√Δ = 4j

I dalej już standardowo - zgodnie ze wzorami na X1 i X2.

W arkuszu Excela wygląda to tak:

pierwiastki równania kwadratowego

 Żeby arkusz był pełny - powinien być uniwersalny i w zależności od wartości Δ pokazywać/ukrywać/zmieniać zawartość odpowiednich komórek. Wystarczy wykorzystać tu funkcję Jeżeli ... to.... .

 

wtorek, 22 marca 2011

Równanie stopnia drugiego to stały element wielu zadań matematycznych i to na różnych poziomach edukacji. Czy do ułatwienia sobie życia można tu wykorzystać również Excela? Jak najbardziej, w końcu to arkusz kalkulacyjny.

Najprostszą wersją może byc proste ustawienie kilku formuł w poszczególnych komórkach, tak jak w przykładzie:

pierwiastki równania kwadratowego

W pola zaznaczone kolorem żółtym wpisujemy wartości współczynników trójmianu: a w A1, b w C1 i c w E1. Reszta pół jest wypełniana automatycznie jako wynik działania formuł.
Komórka C4 wylicza wartość Δ równą b2 - 4ac. Wpisana formuła to:
=POTĘGA(C1;2)-4*A1*E1
Komórka C5 to pierwiastek z tej wartości czyli
=PIERWIASTEK(C4)
Komórka C7 wylicza pierwiatek X1 = (- b - √Δ)/2a. W arkuszu wygląda to tak:
=(-C1-C5)/(2*A1)
Analogicznie komórka C9 wylicza pierwiatek X2 = (- b + √Δ)/2a. Czyli
=(-C1+C5)/(2*A1)

I już. Oczywiście jest to najprostszy wzór. Gdy wyróżnik Δ < 0 - formuły pokażą błąd, gdyż w dziedzinie liczb rzeczywistych nie istnieje pierwiastek kwadratowy z liczby ujemnej. Jest to możliwe w zakresie liczb zespolonych. Poza tym dla potrzeb "szkolnych" lepiej byłoby zamiast wyniku 0,866025403... wpisać √3/2.  Jest to możliwe, ale to już tematy kolejnych notek.

 

środa, 16 marca 2011

W ramach funkcji własnych Excela jest funkcja PIERWIASTEK. Oblicza ona pierwiastek kwadratowy z danej liczby nieujemnej. Jak jednak obliczyć pierwiastek 3, 4 czy wyższego stopnia?
Można tu wykorzystać po prostu matematykę. Pierwiastek stopnia n z liczby X to liczba X podniesiona do potęgi 1/n. Funkcja POTĘGA przybierze więc w tym przypadku postać: Potęga(X;1/n).

W praktyce wygląda to tak:

Pierwiastek stopnia n

I już. Konstruując w ten sposób własny arkusz - można obliczyć pierwiastek dowolnego stopnia.

środa, 28 lipca 2010

Funkcja VBA SQR(Liczba) to odpowiednik funkcji Excela PIERWIASTEK. Wynikiem działania fukncji SQR jest pierwiastek kwadratowy. Argumentem funkcji może być oczywiście tylko liczba nieujemna.

 

poniedziałek, 26 lipca 2010

PIERWIASTEK to jedna z typowych funkcji matematycznych Excela. Zgodnie z nazwą oblicza po prostu pierwiastek kwadratowy funkcji.
Konstrukcja formuły jest także banalnie prosta:
Pierwiastek(Liczba)
Oczywiście, zgodnie z zasadami matematyki - argument Liczba musi być nieujemny.
Odpowiednikiem funkcji w VBA jest funkcja SQR.

| < Lipiec 2017 > |
Pn Wt Śr Cz Pt So N
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            


Książki warte polecenia
zobacz szczegóły...


A tu oferta na dziś:





ministat liczniki.org



Napisz do mnie!