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.

VBA- Excel - rozwiązywanie równań nieliniowych.

czapaaa 26 Paź 2014 02:06 1257 10
  • #1 26 Paź 2014 02:06
    czapaaa
    Poziom 11  

    Witam. Mam taki problem. Potrzebuję stworzyć makro do excela, które będzie wczytywało jako funkcję pewne wartości liczbowe z formularza, a następnie będzie rozwiązywało równanie metodą ... no właśnie, chciałem użyć metody porównania prawej i lewej strony funkcji oraz zmniejszania zmiennej (trzeba zmniejszać wartość zmiennej, wartość szukana jest wartością niższą). Czy ktoś mógłby zobaczyć co jest w tym kodzie nie tak? Jestem początkujący w VBA. To co "powinno" być robione przez program jest w komentarzach

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Z góry dziękuję za pomoc

    0 10
  • #2 26 Paź 2014 10:11
    JRV
    Specjalista - VBA, Excel

    Witaj
    hi + Tair
    Czy nie powinno być w nawiasie?
    Podaj zdjęcia formuł

    0
  • #3 26 Paź 2014 10:56
    czapaaa
    Poziom 11  

    $$f=c*(T_{air}-T_{inf})^{5/4}+d*(T_{air}^4 - T_{inf}^4)/h_i + T_{air}$$
    nie powinno być w nawiasie więc myślę że funkcja jest jednak poprawnie zdefiniowana. Błąd raczej leży w składni której dobrze nie znam

    0
  • #4 26 Paź 2014 11:04
    witoldwitoldowicz
    Poziom 28  

    Bez nawiasów
    f = c * (Tair - Tinf) ^ (5 / 4) + d * (Tair ^ 4 - Tinf ^ 4) / hi + Tair

    0
  • #5 26 Paź 2014 11:09
    czapaaa
    Poziom 11  

    No więc tak, pierwszy błąd jest taki że to Tair jest z minusem na końcu. Ale algorytm nadal nie działa, wyrzucając wartość początkową Tair a powinien wyrzucić takie x dla którego równanie jest spełnione

    0
  • #6 26 Paź 2014 11:37
    JRV
    Specjalista - VBA, Excel

    choć przykłady wartości c , Tair, Tinf, d, hi

    0
  • #7 26 Paź 2014 11:45
    czapaaa
    Poziom 11  

    Tair=698, Tinf=294, c=2,067, d=3,402E-8, hi=7,095

    0
  • #8 26 Paź 2014 12:41
    JRV
    Specjalista - VBA, Excel

    W celu (f - x) < eps , x musi być 294, tzn x = Tinf,
    bo po obliczeń (c * (x - Tinf) ^ (5 / 4) + d * (x ^ 4 - Tinf ^ 4)) / hi jeszcze plus x
    Algorytm coś nie jest to.
    jaki temat pracy? Tam są linki do oryginalnych źródeł?

    0
  • #9 26 Paź 2014 13:07
    czapaaa
    Poziom 11  

    Chciałem porównac pewne wyniki zagadnienia z termodynamiki. Najprościej mógłbym sformułowac problem tak: Znaleźc rozwiązanie równania nieliniowego $$c*(x-T_{inf})^{5/4}+d*(x^4 - T_{inf}^4)/h_i -x=0$$. Rozwiązywanie tego równania ma byc pewnym makrem w excelu czyli w arkuszu wpisuję funkcję ze stałymi Tinf,c,d,hi oraz wartośc Tair czyli jakby wartośc maksymalną x do oszacowania przedziału. Nieważne czy jest to metoda bisekcji czy sprawdzania kolejnych wartości zmiennych tak ja chciałem to zrobic.

    0
  • Pomocny post
    #10 26 Paź 2014 14:00
    JRV
    Specjalista - VBA, Excel

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Dodano po 8 [minuty]:

    Do While Math.Abs(f) > eps lub
    Do Until Math.Abs(f) < eps

    0