Wyznaczanie liczby odwrotnej bez dzielenia
-
- Użytkownik
- Posty: 9
- Rejestracja: 29 sie 2009, o 15:15
- Płeć: Mężczyzna
- Podziękował: 1 raz
Wyznaczanie liczby odwrotnej bez dzielenia
Witam
Czy jest możliwość wyznaczenia liczby odwrotnej do a bez wykonywania dzielenia. Liczba a to dowolna liczba rzeczywista dodatnia ?
Operacje dozwolone to dodawanie, odejmowanie, mnożenie
Pozdrawiam
Czy jest możliwość wyznaczenia liczby odwrotnej do a bez wykonywania dzielenia. Liczba a to dowolna liczba rzeczywista dodatnia ?
Operacje dozwolone to dodawanie, odejmowanie, mnożenie
Pozdrawiam
- miki999
- Użytkownik
- Posty: 8691
- Rejestracja: 28 lis 2007, o 18:10
- Płeć: Mężczyzna
- Lokalizacja: Gdańsk
- Podziękował: 36 razy
- Pomógł: 1001 razy
Wyznaczanie liczby odwrotnej bez dzielenia
Jeżeli dana jest liczba \(\displaystyle{ a \neq 0}\), to liczba do niej odwrotna \(\displaystyle{ a^{-1}}\), charakteryzuje się tym, że:
\(\displaystyle{ a \cdot a^{-1}=1}\)
Oczywiście \(\displaystyle{ a}\) i \(\displaystyle{ a^{-1}}\) muszą posiadać ten sam znak. Rozumiem, że to ma służyć do napisania programu?
Pozdrawiam.
\(\displaystyle{ a \cdot a^{-1}=1}\)
Oczywiście \(\displaystyle{ a}\) i \(\displaystyle{ a^{-1}}\) muszą posiadać ten sam znak. Rozumiem, że to ma służyć do napisania programu?
Pozdrawiam.
-
- Użytkownik
- Posty: 9
- Rejestracja: 29 sie 2009, o 15:15
- Płeć: Mężczyzna
- Podziękował: 1 raz
Wyznaczanie liczby odwrotnej bez dzielenia
Tak, chciałbym napisać program, który nie wykorzystuje dzielenia i pozwala na obliczenie \(\displaystyle{ a^{-1}}\).
Powiedzmy tak że mamy układ scalony z zaimplementowanym mnożeniem, dodawaniem i odejmowaniem i teraz pytanie czy można na takim układzie obliczyć liczbę odwrotną do a
Powiedzmy tak że mamy układ scalony z zaimplementowanym mnożeniem, dodawaniem i odejmowaniem i teraz pytanie czy można na takim układzie obliczyć liczbę odwrotną do a
- miki999
- Użytkownik
- Posty: 8691
- Rejestracja: 28 lis 2007, o 18:10
- Płeć: Mężczyzna
- Lokalizacja: Gdańsk
- Podziękował: 36 razy
- Pomógł: 1001 razy
Wyznaczanie liczby odwrotnej bez dzielenia
Nie wiem jakie możliwości programistyczne masz i jakie liczby będą wprowadzane. Przykładowo przy wprowadzeniu \(\displaystyle{ 0.001}\)- otrzymamy \(\displaystyle{ 1000}\), natomiast działając na trochę większych liczbach (powiedzmy od 1 do 1000) zakres będzie inny i wartości będą mniejsze od \(\displaystyle{ 1}\). Czy możesz wykorzystywać relacje większości mniejszości? Czy wprowadzane liczby będą całkowite?
Jeżeli poszukujemy odwrotności liczby większej od 1 i możemy używać nierówności, to użyłbym coś w stylu "metody połowienia przedziału".
Jeżeli poszukujemy odwrotności liczby większej od 1 i możemy używać nierówności, to użyłbym coś w stylu "metody połowienia przedziału".
-
- Użytkownik
- Posty: 9
- Rejestracja: 29 sie 2009, o 15:15
- Płeć: Mężczyzna
- Podziękował: 1 raz
Wyznaczanie liczby odwrotnej bez dzielenia
Tylko te 3 operacje (+ np przesunięcia bitowe potrzebne do mnożenia, czy inne operacje potrzebne do dodawania).
Dane wejściowe go np a = 1,34232
albo a = 323,123
albo a = 222,111
albo a = 2,0
albo a = 0,88881
Dane wejściowe go np a = 1,34232
albo a = 323,123
albo a = 222,111
albo a = 2,0
albo a = 0,88881
-
- Użytkownik
- Posty: 9
- Rejestracja: 29 sie 2009, o 15:15
- Płeć: Mężczyzna
- Podziękował: 1 raz
- miki999
- Użytkownik
- Posty: 8691
- Rejestracja: 28 lis 2007, o 18:10
- Płeć: Mężczyzna
- Lokalizacja: Gdańsk
- Podziękował: 36 razy
- Pomógł: 1001 razy
Wyznaczanie liczby odwrotnej bez dzielenia
Obraliśmy jakąś liczbę \(\displaystyle{ a}\). No to bierzemy zakres od 0 do 10000- liczymy średnią arytmetyczną (czyli wybieramy liczbę pomiędzy nimi): 5000. Sprawdzamy, czy \(\displaystyle{ a \cdot 5000 \ge 1}\) (to się da zrobić sprawdzając bity, albo po prostu sprawdzając znak \(\displaystyle{ a \cdot 5000-1}\)- czyli jedynie pierwszy bit).
Jeżeli wartość \(\displaystyle{ a \cdot 5000-1 >0}\), to rozpatrujesz przedział 0 do 5000, w przeciwnym wypadku 5000 do 10000.
Ustawiasz licznik na ileś operacji (tak to się chyba robi?) albo jakąś dokładność i powtarzasz ten algorytm (chyba że wcześniej trafisz na iloczyn, który daje 1), a na końcu karzesz wypisać środkowy wyraz powstałego na końcu przedziału.
Oczywiście te 10000 wymyśliłem sobie. Jeżeli będą to liczby większe od \(\displaystyle{ 1}\), to mamy zakres od 0 do 1 i dużo większą dokładność.
Jeżeli wartość \(\displaystyle{ a \cdot 5000-1 >0}\), to rozpatrujesz przedział 0 do 5000, w przeciwnym wypadku 5000 do 10000.
Ustawiasz licznik na ileś operacji (tak to się chyba robi?) albo jakąś dokładność i powtarzasz ten algorytm (chyba że wcześniej trafisz na iloczyn, który daje 1), a na końcu karzesz wypisać środkowy wyraz powstałego na końcu przedziału.
Oczywiście te 10000 wymyśliłem sobie. Jeżeli będą to liczby większe od \(\displaystyle{ 1}\), to mamy zakres od 0 do 1 i dużo większą dokładność.
- Mariusz M
- Użytkownik
- Posty: 6909
- Rejestracja: 25 wrz 2007, o 01:03
- Płeć: Mężczyzna
- Lokalizacja: 53°02'N 18°35'E
- Podziękował: 2 razy
- Pomógł: 1246 razy
Wyznaczanie liczby odwrotnej bez dzielenia
Odwrotność można przybliżyć sumą ciągu geometrycznego
o
\(\displaystyle{ a_{1}=1}\)
oraz
\(\displaystyle{ q=1-x}\)
Metoda ta jest zbieżna dla
\(\displaystyle{ \left|1-x \right|<1}\)
Ale to nie jest ograniczenie ponieważ każdą liczbę możesz przeskalować do przedziału
\(\displaystyle{ \left(0;1 \right)}\)
jako że liczba może być przedstawiona w postaci
\(\displaystyle{ x=p \cdot 10^m}\)
o
\(\displaystyle{ a_{1}=1}\)
oraz
\(\displaystyle{ q=1-x}\)
Metoda ta jest zbieżna dla
\(\displaystyle{ \left|1-x \right|<1}\)
Ale to nie jest ograniczenie ponieważ każdą liczbę możesz przeskalować do przedziału
\(\displaystyle{ \left(0;1 \right)}\)
jako że liczba może być przedstawiona w postaci
\(\displaystyle{ x=p \cdot 10^m}\)