![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 364 Pomógł: 3 Dołączył: 29.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Czy jest jakiś sensowny algorytm na generowanie równań kwadratowych tak aby x1 i x2 były liczbami całkowitymi ?
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 650 Pomógł: 16 Dołączył: 5.07.2010 Skąd: Ściśle Tajne Ostrzeżenie: (0%) ![]() ![]() |
rozwiń co chcesz uzyskać.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 302 Pomógł: 24 Dołączył: 6.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ja bym nie kombinował tylko napisał funkcję rozwiązującą równanie kwadratowe i przeleciał ją w trzech zagnieżdżonych pętlach po współczynnikach a, b,c w rozsądnych zakresach i zostawiał tylko kombinację dającą całkowite x1 i x2
|
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
A po kiego czorta rozwiązywać? Znasz wzorki? To czemu nie idziesz "od tyłu"? Znając rozwiązanie i wzory je obliczające masz drogę niemal równie prostą (IMG:style_emoticons/default/smile.gif)
x1 = (-b - sqrt(b*b - 4*a*c))/(2*a); x2 = (-b + sqrt(b*b - 4*a*c))/(2*a); z warunkiem: b*b > 4*a*c Pozostaje podstawiać x1 i x2 i się bawić, bo dostajesz układ 2 równań i nierówność z 3 niewiadomymi. Wystarczy, że za jedna z niewiadomych podstawisz dowolną liczbę i pozostałe sobie ładnie wyliczysz. EDIT: Zapomniałem kompletnie o wzorach Viete'a... x1 * x2 = c/a x1 + x2 = -b/a x1 i x2 masz... wybierz sobie jedynie jakąś liczbę a != 0 i masz układ banalny do rozwiązania (IMG:style_emoticons/default/smile.gif)
Powód edycji: [thek]: Zapomniałem o wzorach Viete'a
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 302 Pomógł: 24 Dołączył: 6.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Wydawało mi się , że autorowi chodziło o równania książkowe czyli również z całkowitymi a,b,c
...chociaż jeśli "a" będzie całkowite to b i c też Ten post edytował sada 22.02.2012, 11:43:52 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 364 Pomógł: 3 Dołączył: 29.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
narazie dzięki (IMG:style_emoticons/default/biggrin.gif)
zaraz pomyśle i zobaczymy co z tego wyjdzie Refresh Jednak sobie nie poradziłem. Czy ktoś ma jakiś pomysł? |
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Szczerze? Nie wiem z czym masz problem... Wzorki Viete'a są banalne, masz więc zwykłe podstawienie i potem już zabawę w podstawianiu kolejnych liczba pod a oraz sprawdzanie czy wynik jest OK dla Twoich wymagań :/ Ja bym zrobił tak:
a) Pobieramy x1 i x2, przypuśćmy -3 i -1 b) x1*x2 = 3; x1+x2 = -4 więc podstawiamy - mamy 3 = c/a oraz -4 = -b/a ale możemy od razu przenieść a na drugą stronę, czyli 3*a = c i -4*a = -b c) bierzemy sobie dowolne a ( ja wezmę 1) i podstawiamy 3 = c oraz -4 = -b, czyli c = 3 i b = 4. KONIEC d) Można iść dalej i dać kilka dodatkowych warunków jak choćby to, ile równań ma być znalezionych. Jeśli chcesz ograniczyć ,b,c,x1,x2 jedynie do całkowitych to zrób sobie skakanie od 1 do wolnej liczby w zakresie Z = <-z, z> z pominięciem 0. To jak to zrobisz, zależy od Ciebie. Ja bym sobie zrobił poprzez skakanie z naprzemienną zmianą znaku na zasadzie: 1, -1, 2, -2, 3, -3 i wyjściem gdy dojdzie się do końca zakresu lub zostanie znaleziona określona liczba równań. Można też to olać, bo jeśli się przyjrzysz, to mając jedno rozwiązanie, możesz łatwo kolejne uzyskać. Równania kwadratowe się prosto skalują ;) Wystarczy wszystkie parametry pomnożyć przez tę samą liczbę. Jeśli więc masz tylko jedno rozwiązanie, masz od razu dla tej samej pary rozwiązań, nieskończenie wiele możliwości równań. WERSJA OBLICZAJĄCA - PODSTAWOWA:
WERSJA OPTYMALIZOWANA: Weź sobie sam porównaj tablice z wynikami i powiedz, czy są identyczne :) Jak dla mnie - są.
Powód edycji: [thek]:
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 253 Pomógł: 31 Dołączył: 30.03.2009 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
Generuj, jak są błędy to popraw.
Ten post edytował celbarowicz 23.02.2012, 13:30:02 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 364 Pomógł: 3 Dołączył: 29.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
dzięki (IMG:style_emoticons/default/smile.gif)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 06:50 |