logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[BASCOM] Jak zapisać wielomian z potęgami

Mad Jaro 06 Lut 2011 22:25 1838 7
  • #1 9114288
    Mad Jaro
    Poziom 16  
    Witam mam problem z zapisem w programie następującego wielomianu:

    y = 3,627*V1 do potęgi 6 - 38,63*V1 do potęgi 5 + 167,9*V1 do potęgi 4 - 382,0*V1 do potęgi 3 + 475,2*V1 do potęgi 2 - 307,4*V1 + 101,2

    Wynik y ma być wyświetlany na LCD.
    Próbowałem tak, ale wychodzi zły wynik:

    
    $regfile = "m16def.dat"                                     'informuje kompilator o pliku
    
    $crystal = 8000000                                          'informuje kompilator o częstotliwości oscylatora
    Config Porta.6 = Input                                      'port wejściowy
    Config Lcd = 16 * 2                                         'konfiguracja typu wyťwietlacza LCD
    
    Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.5 , Db6 = Portb.2 , Db7 = Portb.4 , E = Portb.7 , Rs = Portb.6
    
    Config Adc = Single , Prescaler = Auto , Reference = Avcc   'konfiguracja wewnętrznego przetwornika A/C   
    
    Dim Wart_u1 As Word
    Dim U1 As Single
    Dim V1 As Single
    Dim Y As Single
    Dim X As Single
    Dim Wart_nap1 As String * 4
    
    Do
    Cls
    Start Adc
    Cursor Off
    
    Wart_u1 = Getadc(6)
    U1 = Wart_u1 * 0.004887585533
    V1 = U1
    
    
    Y = V1 ^ 6
    Y = Y * 3.627
    
    X = V1 ^ 5
    X = X * 38.63
    Y = Y - X
    
    X = V1 ^ 4
    X = X * 167.9
    Y = Y + X
    
    X = V1 ^ 3
    X = X * 382
    Y = Y - X
    
    X = V1 ^ 2
    X = X * 475.2
    Y = Y + X
    
    Y = Y - 307.4
    Y = Y * V1
    
    Y = Y + 101.2
    
    
    Wart_nap1 = Fusing(y , "#.#" )
    Wart_nap1 = Format(wart_nap1 , "      ")
    
    
    Cls
    Locate 1 , 1
    Lcd " " ; Chr(6) ; "     "
    Locate 2 , 1
    Lcd Wart_nap1 ; "  "
    Waitms 800
    Loop
    End
  • #3 9114595
    Mad Jaro
    Poziom 16  
    Próbowałem, ale coś dziwne rzeczy mi wychodzą.

    W jednej linii nie mogę wykonać kilku mnożeń bo bascom woła błędem.
    Trzeba by rozbijać i dodawać kolejne zmienne jak się nie mylę, a wtedy o błąd nie trudno.
  • #4 9114669
    dawid512
    Poziom 32  
    Bascom to bascom tylko jedno działanie w linii...
  • #5 9115045
    Konto nie istnieje
    Konto nie istnieje  
  • #7 9117057
    Konto nie istnieje
    Poziom 1  
  • #8 9117187
    Mad Jaro
    Poziom 16  
    Problem rozwiązany, wstawiam poprawną procedurę dla potomnych:

    Y = V1 ^ 6
    Y = Y * 3.627
    
    X = V1 ^ 5
    X = X * 38.63
    Y = Y - X
    
    X = V1 ^ 4
    X = X * 167.9
    Y = Y + X
    
    X = V1 ^ 3
    X = X * 382
    Y = Y - X
    
    X = V1 ^ 2
    X = X * 475.2
    Y = Y + X
    
    X = V1
    X = X * 307.4
    Y = Y - X
    
    Y = Y + 101.2
REKLAMA