Program - Makro - VB
Misiaczek ;c
26.01.2015
Ludziska, mój dobry kumpel potrzebuję to na zaliczenie, ktoś pomoże? Poprawi? Bo nie wiem czy jakiegos bledu nie ma bo od ~30h cos ciagle grzebie w GieGie i Dedyku
Program zrobiony, mógłby ktoś sprawdzić czy wszystko jest tak jak powinno?
Option Explicit Dim x, d, fx, fx1, rfx, sum, b As Double, i, licznik As Integer 'd-skok 'fx-wartość dokładna funkcji 'fx1-wartość przybliżona funkcji 'rfx-różnica między wartościa dokładną a przybliżoną 'sum-suma elementów wartości przybliżonej 'I-licznik pętli i elementów sumy 'licznik-numeruje następne wyniki Sub funkcja() Range("A1:G5000").Clear 'Czyszczenie obszaru roboczego Cells(1, 1).Value = "l.p." 'uzupełnianie tytulów poszczególnych kolumn w arkuszu Cells(1, 2).Value = "x" Cells(1, 3).Value = "wartość dokładna funkcji" Cells(1, 4).Value = "suma szeregu" Cells(1, 5).Value = "błąd względny" Cells(1, 6).Value = "liczba sumowanych elementów" d = InputBox("Podaj liczbę przedziałów") 'prośba o podanie liczby prdzedziałów b = InputBox("Podaj wartość błędu") 'prośba o podanie maksymalnej dopuszczalnej wartości błędu między dokładna wartością funkcji a tą obliczoną z sumy szeregu licznik = 1 'licznik potrzebny, żeby program wiedział, w którym wierszu miał wpisywać kolejne wartości For x = -1 + (2 / d) To 1 - (2 / d) Step 2 / (d + 2) 'uruchomienie pętli for dla przedziału podanego w poleceniu fx = 1 / (1 + x ^ 2) 'wzór dokładny funkcji i = 0 'licznik kolejnego wyrazu szeregu sum = 0 'pierwsza suma szeregu Do 'uruchomienie pętli do If i = 0 Then fx1 = 1 Else fx1 = fx1 * -(x ^ 2) 'wzór na wyznaczenie kolejnego wyrazu szeregu End If sum = sum + fx1 'sumowanie szeregu rfx = (fx - (sum)) 'obliczanie różnicy między wartościa dokładną a przybliżoną If Abs(rfx) < b Then 'jeżeli różnica jest mniejsza niz maksymalna dopuszczalna, wypisz wartości i wyjdź z pętli If fx = 0 Then Cells(licznik + 1, 1).Value = licznik Cells(licznik + 1, 2).Value = x Cells(licznik + 1, 3).Value = fx Cells(licznik + 1, 4).Value = sum Cells(licznik + 1, 5).Value = 0 Cells(licznik + 1, 6).Value = i + 1 Else Cells(licznik + 1, 1).Value = licznik Cells(licznik + 1, 2).Value = x Cells(licznik + 1, 3).Value = fx Cells(licznik + 1, 4).Value = sum Cells(licznik + 1, 5).Value = (Abs((sum - fx) / fx)) Cells(licznik + 1, 6).Value = i + 1 End If Exit Do End If 'koniec warunku if i = i + 1 Loop 'następny krok pętli do licznik = licznik + 1 Next 'następny krok pętli for End Sub