• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Czym są liczby zespolone i jak je utworzyć w języku c++

Object Storage Arubacloud
0 głosów
3,039 wizyt
pytanie zadane 6 sierpnia 2018 w C i C++ przez Sic Dyskutant (8,510 p.)
Witam mam napisać program opierający się na liczbach zespolonych. Sprawdzałem dokumentację na różnych stronach jednak albo nie ma takiego terminu, a jeżeli już jest to nie jasno wyjaśnione.

Czym one są ? I w jaki sposób można je utworzyć lub użyć w języku c++?

3 odpowiedzi

+1 głos
odpowiedź 6 sierpnia 2018 przez Patrycjerz Mędrzec (192,320 p.)

Nie wiem, czy czytałeś definicję liczby zespolonej na Wikipedii. Wg mnie jest dość przystępna. Gdy będziesz miał jakieś wątpliwości, to pytaj.

Jeśli chodzi o zapis takiej liczby w C++, to można to zrobić za pomocą prostej struktury zawierającej dwie liczby: a i b (odsyłam do definicji, tam jest napisane, co oznaczają te dwie liczby). Trudno cokolwiek więcej powiedzieć, jeśli nie znamy wymogów twojego programu.

komentarz 6 sierpnia 2018 przez manjaro Nałogowiec (37,390 p.)
Przeczytaj szczególnie ten dział Postać algebraiczna (kanoniczna) tam jest to dość dobrze wytłumaczone.
komentarz 9 sierpnia 2018 przez Sic Dyskutant (8,510 p.)
edycja 9 sierpnia 2018 przez Sic

Zapoznałem się z nim zacząłem już pisać program, jednak mam problem z uzupełnieniem przeciążenia operatorów.

Przykładem może być tutaj + (poniżej znajduję się prototyp):

Zespolone Zespolone::operator+(const Zespolone & value);

W jaki sposób mogę zamienić wyrażenie poniżej na kod ?

a + c = (A + C, (B+D)i)

Proszę o wybaczenie, ale nie wiem w jaki sposób zrobić to zadanie.

+1 głos
odpowiedź 6 sierpnia 2018 przez Bondrusiek Maniak (61,370 p.)

Witam,

 Liczby zespolone to liczby będące elementami rozszerzenia ciała liczb rzeczywistych o jednostkę urojoną to znaczy pierwiastek wielomianu. Przydają się w obliczeniach gdy chcesz obliczyć pierwiastek z liczby ujemnej. Np. sqrt(-1) = i. Liczba zespolona to w skrócie liczba składająca się z części urojonej oraz z części rzeczywistej. Np z = 2i + 2, z = 3, z = 3i. https://pl.wikipedia.org/wiki/Liczby_zespolone

Co do tej liczby zespolonych w C++ to możesz wykorzystać klasę std::complex https://en.cppreference.com/w/cpp/numeric/complex ,która implementuje działania na liczbach zespolonych,

1
komentarz 6 sierpnia 2018 przez J0ker Pasjonat (15,400 p.)
Takie pierdoły jak dodawanie liczb zespolonych, mnożenie ich czy branie modułu liczby zespolonej to można łatwo zaimplementować samemu jako ćwiczenie.
komentarz 6 sierpnia 2018 przez Sic Dyskutant (8,510 p.)

W jaki sposób mógłbym utworzyć zmienną lub wyrażenie:

i^2 = -1

W programowaniu ?

komentarz 6 sierpnia 2018 przez Bondrusiek Maniak (61,370 p.)
@Sic

Wartość mnożenia dwóch liczb zespolonych można wyznaczyć ze wzoru. Za https://pl.wikipedia.org/wiki/Liczby_zespolone

(a+bi)(c+di) = ac+(bc+ad)i+bdi^2 = (ac - bd) + (bc + ad)

Teraz możesz podstawić Twój powyższy przykład:

(0+1i)(0+1i) = (0*0 - 1*1) + (1*0+ 0*1) = -1 Czyli i*i =-1 (ze wzoru)
0 głosów
odpowiedź 6 sierpnia 2018 przez Sic Dyskutant (8,510 p.)

Dziękuję bardzo zabieram się za literaturę.

@Patrycjerz,

Co to treści zadania na razie nie bedę jej udostępniał, ponieważ chcę spróbował własnych sił. Mimo to dziękuję bardzo.

komentarz 6 sierpnia 2018 przez Secrus Nałogowiec (32,880 p.)
Samo zadanie możesz udostępnić. Na forum z zasady nikt ci gotowca nie da, a chętnie zobaczę co za zadanie jest do wykonania
komentarz 7 sierpnia 2018 przez Sic Dyskutant (8,510 p.)

Programowanie obiektowe

Zdefiniuj klasę liczb zespolonych tak, aby mogła zostać wykorzystana w poniższym programie i zapewnia poprawne wyniki obliczeń:

#include <iostream>
#include "complex0.h"

int main()
{
complex a(3.0, 4.0);  //inicjalizacja wartości (3, 4i)
complex c;
std::cout << "Podaj liczbę zespoloną (k, aby zakończyć):\n";

while(std::cin >>c)
{
std::cout << "c to  " << c << '\n';
std::cour << "sprężona z c to " << -c << '\n';
 std::cout << "a to  " << a << '\n';
std::cout << "a + c wynosi " << a + c << '\n';
std::cout << "a - c wynosi " << a - c << '\n';
std::cout << "a * c wynosi " << a * c << '\n';
std::cout << "2 * c wynosi " << 2 * c << '\n';
std::cout << "Podaj liczbę zespoloną (k, aby zakończyć):\n";
}
std::cout << "Gotowe\n";
return 0;
}

Zauważ, że trzeba będzie przeciążyc operator << i >>. Standard c++ ma już w nagłówku 'complex' wbudowaną obsługę liczb zespolonych (i to bardziej rozbudowaną niż w powyższym  przykładzie), więc aby uniknąc kolizji z biblioteką, zastosuj się dla pliku deklaracji klasy nazwę 'complex0.h'. Wszędzie tam, gdzie zasadne, stosuj modyfikacji 'const'.

Oto pożądany wynik programu:

Podaj liczbę zespoloną (k, aby zakończyć):
składowa rzeczywista: 10
składowa urojona: 12
c to (10, 12)
sprzężona z c to (-10, -12i)
a + c wynosi (13, 16)
a - c wynosi (-7, -8i)
a * c wynosi (-18 76i)
2 * c wynosi (20, 24)
Podaj liczbę zespoloną (k, aby zakończyć):
składowa rzeczywista: k
Gotowe

Zauważ, że przeciążona wersja operatora >> w wyrażeniu cin >> c powinna pytać o obie składowe (rzeczywistą i urojną) z osobna.

Podobne pytania

0 głosów
1 odpowiedź 165 wizyt
0 głosów
1 odpowiedź 176 wizyt
0 głosów
1 odpowiedź 355 wizyt
pytanie zadane 25 kwietnia 2019 w Matematyka, fizyka, logika przez DODO Bywalec (2,950 p.)

92,579 zapytań

141,432 odpowiedzi

319,660 komentarzy

61,963 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...