Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Excel Deweloper:Obliczanie całki oznaczonej metodą trapezową

Mroofeczka 22 Wrz 2010 22:45 6602 5
  • #1 22 Wrz 2010 22:45
    Mroofeczka
    Poziom 2  

    Ratunkuu!

    Potrzebuję programu napisanego w dodatku Deweloper w Excelu (if... then...), który będzie mi całkował funkcję metodą trapezową po podaniu granic a i b oraz liczbie podziałów n.
    Przykładowa funkcja x*e^x

    BŁAGAM o pomoc...

    Helena.

    0 5
  • #3 23 Wrz 2010 12:48
    Mroofeczka
    Poziom 2  

    Bardzo Ci dziękuję za te materiały, ale to wszystko wiem i mam już zrobione..

    Tu chodzi konkretnie o tą funkcję, którą mam stworzyć w VBA Deweloper i z tym mam problem, bo oprócz tego, że wiem, że ma się to opierać o komendy IF & THEN to nie mam pojęcia jak to napisać..

    0
  • #4 26 Wrz 2010 16:14
    adamas_nt
    Moderator Programowanie

    Mroofeczka napisał:
    wszystko wiem i mam już zrobione..
    Mroofeczka napisał:
    problem dokładnie rozumiem od strony teoretycznej, znam tą metodę całkowania, wiem na czym polega i tak, wiem, że można to zrobić w excelu bez używania VBA i już to zrobiłam, ale mój wspaniały wykładowca ubzdurał sobie, że MUSZE stworzyć do tego funkcję właśnie w VBA. :)

    Skoro jest gotowe formułami, to wystarczy teraz "przetłumaczyć" na VBA. Podrzuć w załączniku co tam naskrobałaś a my pomyślimy co z tym zrobić...

    P.S. A ten wykładowca skąd się urwał?

    0
  • #5 26 Wrz 2010 20:56
    Mroofeczka
    Poziom 2  

    W pliku jest akurat dla n = 100, wystarczy zmienić w tamtej komórce i przeciągnąć oczywiście tabelkę w dół aż do x+h = b wcisnąć autosum i jest wynik.

    0
  • #6 26 Wrz 2010 21:48
    adamas_nt
    Moderator Programowanie

    Wg Twojego arkusza obliczenia powinna wykonać taka prosta pętla

    Code:
    Option Explicit
    

    Sub PoliczMroofeczka()
    Dim h As Double, x As Double, x1 As Double
    Dim y As Double, y1 As Double, wynik As Double
    Dim i As Integer

    If Cells(3, 2) = 0 Or Cells(3, 3) = 0 Then
      Cells(8, 4) = CVErr(xlErrNull)
    ElseIf Cells(3, 4) = 0 Then
      Cells(8, 4) = CVErr(xlErrDiv0)
    ElseIf Cells(3, 2) >= Cells(3, 3) Then
      Cells(8, 4) = CVErr(xlErrNum)
    Else

      h = (Cells(3, 3) - Cells(3, 2)) / Cells(3, 4)
      x = Cells(3, 2)
     
      For i = 1 To Cells(3, 4)
        x1 = x + h
        y = x * Exp(x)
        y1 = x1 * Exp(x1)
        wynik = wynik + ((y + y1) * h / 2)
        x = x1
      Next

      Cells(8, 4) = wynik
    End If

    End Sub
    Sprawdź, daj znać czy dobrze...

    Edit: Zmieniłem kod, gdzieś te If-Then należało wkomponować... Wynik umieściłem w "D8".

    0