[Delphi] potęga dziesiętna

[Delphi] potęga dziesiętna
0

Jak podniesc do potęgi np 0,6.
MUSZE TO ZROBIĆ W Delphi3 w którym chyba nie ma uses Math.
Z góry dziękuje za pomoc.
Pozdrawiam. [glowa]

Szymek
  • Rejestracja:ponad 22 lata
  • Ostatnio:ponad 2 lata
0

A nie da się liczba^0.6 ?

A szukałeś w internecie na jakiś stronkach o Delphi 3?

0

niestety nie [glowa] ;-(

Vogel
  • Rejestracja:ponad 22 lata
  • Ostatnio:prawie 7 lat
0

Power
ewentualnie
X^Y = Ln(Y * Exp(X))


Life is just a dream, you know...
[Cowboy Bebop]
Kapustka
  • Rejestracja:ponad 22 lata
  • Ostatnio:około miesiąc
0

Uwielbiam takie zadania! (dział dla zaawansowanych? hihi)

tylko że kompletnie nie mam teraz na nie czasu...
chlip chlip

Mogę tylko naszkicować rozwiązanie

wpierw, jak zwykle, formalny problem:
Dane wejściowe:
dwie liczby rzeczywiste a,n
Wynik:
liczba rzeczywista b równa an

to nie jest algorytm, tylko szkic:

  1. przedstaw liczbę n w postaci właściwego ułamka x/y
  2. b = pierwiastek y-stopnia z a
  3. b = bx
  4. stop, wynik=b

a teraz przykład i komentarze: (bardzo mi ostatnio odpowiada układ: opis problemu-algorytm-przykład z komentarzami)

a=4.23 n=3.2
czyli interesuje nas wartość an=4.233.2

  1. przedstaw liczbę n w postaci właściwego ułamka x/y

czyli musimy znaleźć takie x,y że:

x/y=n ,
NWD(x,y)=1 , czyli największy wspólny dzielnik=1 a to oznacza że tego ułamka nie można skrócić - czyli jest on ułamkiem właściwym.

Ten krok algorytmu jest ciekawym problemem sam w sobie!
zabawna sytuacja - wada komputerów, polegająca na tym, że pamiętają one skończoną reprezentację liczb rzeczywistych - obraca się na naszą korzyść!

wpierw to zobrazujmy, potem uogólnijmy,
(dziewczyna mnie nie kocha - właśnie z nią gadałem)

3.2=32/10=16/5

czyli, opierając się na wspomnianej wcześniej "skończoności reprezentacji maszynowej", rozpisujemy wpierw ułamek, jako "bardzo" niewłaściwy a następnie go upraszczamy. (może jest jakiś lepszy sposób?)

mamy więc x=16, y=5

  1. b = pierwiastek y-stopnia z a

mamy kolejny ciekawy problem! jak obliczyć pierwiastek dowolnego stopnia z a? W większości przypadków będzie to liczba z nieskończonym rozwinięciem dziesiętnym ... na szczęście jest to możliwe (trzeba zaznaczyć jaka precyzja nas interesuje) a cały algorytm bazuje na zaledwie jednej pętli.

Ewentualnie, na wyraźne życzenie - mogę go osobno opisać ... zaraz! ja to kiedyś już przecież zrobiłem! , jest dostępny kod w javie do ściągnięcia w dziale kody źródłowe, oczywiście "co mi po kodzie w javie, skoro znam delphi", niemniej do kodu dorzuciłem schemat blokowy (spokojnie można napisać na jego podstawie program). Warto! (ponadto, gdzieś się rozpisałem, w jakimś poście ... )

dla naszych danych:
pierwiastek 5 stopnia z 4.23 = 1.33434481834911048079 ...
(skorzystałem właśnie z tego programu który jest do ściągniecia na forum)

powiedzmy że przybliżenie 1.334344 nam wystarczy.

  1. b = bx

W końcu coś łatwego!

b=1.33434416=100.991521

  1. stop, wynik=b

mamy więc wynik:
4.233.2=100.991521

Rodzi się kilka pytań:
Jaka jest złożonośc obliczeniowa tej metody? Taka jaka jest złożoność obliczeniowa jej "wąskiego gardła".

Jakie są operacje pierwotne?

  • zamiana skończonej reprezentacji dziesiętnej na ułamek właściwy
  • wyciąganie pierwiastka dowolnego stopnia z liczby rzeczywistej
  • potegowanie dowolnego stopnia liczby rzeczywistej

tak więc ten problem można rozbić na trzy mniejsze...

... a tak bardzo chciałem się nie rozpisywać ...

pozdrawiam (nie kocha mnie, chlip chlip)
[niewinnosc]

Vogel
  • Rejestracja:ponad 22 lata
  • Ostatnio:prawie 7 lat
0

tylko że kompletnie nie mam teraz na nie czasu...

Ile byś napisał, jakbyś miał czas?? Boję się...


Life is just a dream, you know...
[Cowboy Bebop]
0

Wielkie dzieki Kapustka za odp. Takiej odpowiedzi mi trzeba bylo. Tylko na tym nie kończy się moj problem z tą potęgą :-/

Mam pytanie głównie do punktu drugiego Twojego opisu:

  1. b = pierwiastek y-stopnia z a
    jest dostępny kod w javie do ściągnięcia w dziale kody źródłowe
    niemniej do kodu dorzuciłem schemat blokowy

Jestem zielony z javy - nie wiem nawet jak otworzyc te plik, jeden ruszyl w notatniku ale drugi (ten istotny) nie otwiera sie.

Ewentualnie, na wyraźne życzenie - mogę go osobno opisać ... zaraz!

To ja prosze :)
Tylko wmiare tak po delphiemu i nieskompikowanie :)
POZDR.

SE
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 4 lata
  • Postów:1103
0

tylko że kompletnie nie mam teraz na nie czasu...

Ile byś napisał, jakbyś miał czas?? Boję się...

Też się boję Vogel, ostatnio kapustke coś napdało na pisanie strasznie długich postów, ale to dobrze przynajmniej ludzie są zadowolenii :-D


pozdrawiam, Sebek
Kapustka
  • Rejestracja:ponad 22 lata
  • Ostatnio:około miesiąc
0

jak obliczyć pierwiastek n-tego stopnia z liczby x przy dokładności do m liczb po przecinku ?

sebek - zapraszam do artykułu:
<font size="18">"kapuściane materiały"</span>
http://www.4programmers.net/view.php?id=199,
znajdziesz tam odpowiedni algorytm pierwiastkowania.

jeszcze nie zastanawiałem się nad jego złożonością obliczeniową ...
... i chyba o czwartej w nocy jej nie wyznaczę ...

pozdrawiam

Kapustka
  • Rejestracja:ponad 22 lata
  • Ostatnio:około miesiąc
0

Postanowiłem, że jednak odrobinę omówię ten algorytm (na rzecz czytelnego układu, postanowiłem nie umieszczać zbyt wielu objaśnień w kapuścianych materiałach)

oto ten algorytm, jeszcze raz:

Dane wejściowe:
liczba rzeczywista x
liczby naturalne n, m
Wynik:
pierwiastek n-tego stopnia z liczby x
przy dokładności do m miejsc po przecinku

PIERWIASTEK (x,n,m)

  1. y:=0, p:=0, d:=1
  2. while p!=x
    2.1 if p>x
    2.1.1 y:=y-d
    2.1.2 d:=d/10
    2.1.3 if m=0 then stop, wynik=y
    2.1.4 m:=m-1
    2.2 y:=y+d
    2.3 p:=1
    2.4 for i:=1 to n
    2.4.1 p:=p*y
  3. stop, wynik=y

zastanówmy się nad tym algorytmem ... (wszelkie definicje dostępne są w kapuścianych materiałach http://www.4programmers.net/view.php?id=199)

jak on w ogóle działa?
prześledźmy schemat na przykładzie ...
chcemy obliczyć pierwiastek trzeciego stopnia z 10

zakładamy wpierw, że wynik=0
0^3=0, nie jest większe równe 10
1^3=1, nie jest większe równe 10
2^3=8, nie jest większe równe 10
3^3=27, jest większe równe 10

kluczowa chwila całego rozumowania, teraz sprawdzamy:

jeśli 3^3 = 10 to odpowiedzią jest "liczba 3 jest dokładnym pierwiastkiem 3-stopnia z 10"

ale oczywiście ten warunek nie zachodzi, więc robimy teraz co następuje

cofamy ostatnią operację zwiększania wyniku:
3-1=2

powtarzamy wszystko od nowa, tylko że teraz zwiększamy o 0.1

2.1^3=9.261, nie jest większe równe 10
2.2^3=10.648, jest większe równe 10

2.2^3 nie jest równe 10, więc 2.2-0.1=2.1

2.11^3=9.391931 nie jest większe równe 10
2.12^3 ...

metoda jest chyba już zrozumiała. Teraz jeszcze (aby algorytm miał cechę całkowitej poprawności) trzeba narzucić moment kończący obliczenia - czyli podać liczbę miejsc po przecinku jaka nas interesuje.

ciekawe jest pytanie o złożoność obliczeniową tego algorytmu, ciekawe -gdyż jest ona funkcją trzech zmiennych.

spróbuję z tym powalczyć i zastąpić znak ? odpowiednim wielomianem (a może nie wielomianem)

0

KAPUSTKA JESTEŚ GENIALNY !!!!!
Zaczyna mi się rozjaśniać, [hurra] spróbuje napisać kod w delphi( w 3 oczywiście) ale być może porywam się z motyką na księżyc.
Pozdrawiam

0

mam taki problem nie wim jak mam obliczyć : 2 do potęgi -1,270 szukałam juz chyba wszedzie nigdzie nic nie pisze jak podnieść liczbę do potegi po przecinku prosze o pomoc

MA
  • Rejestracja:ponad 17 lat
  • Ostatnio:prawie 16 lat
  • Postów:501
0

Eh. Nekrofil.

0

a do potęgi b liczymy tak:
a**b
albo tak
exp(b*ln(a))

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)