szukanie zaawansowane
 [ Posty: 15 ] 
Autor Wiadomość
Mężczyzna Offline
PostNapisane: 23 mar 2016, o 00:03 
Użytkownik

Posty: 8
Lokalizacja: Warka
Witam.
Mamy dany trójkąt o znanych bokach a i b, gdzie a < b.
Długość boku c może się zmieniać od b-a do b+a.
Tak, dopuszczalne są przypadki kiedy kąty będą 180, 0, 0 stopni, wyobraźcie sobie wskazówki zegara i odcinek pomiędzy ich końcami.
Interesuje nas jeszcze kąt \alpha pomiędzy bokami a (krótszym znanym) i c (zmiennym).
Trzeba wyprowadzić dwa wzory :
1, Na długość boku c, jeśli dany będzie kąt \alpha .
2. Na kąt \alpha , jeśli dana będzie długość boku c.
Nie chodzi o to żeby to obliczyć, bo to potrafię, tylko o wyprowadzenie jak najprostszych wzorów, które będzie można wykorzystać w programie komputerowym.
Do dyspozycji mamy funkcje dostępne w komputerze (np. sin, cos, asin, acos), rozwiązania "zajrzeć do tablic" nie wchodzą w grę.
Góra
Mężczyzna Offline
PostNapisane: 23 mar 2016, o 08:14 
Korepetytor
Avatar użytkownika

Posty: 5074
Lokalizacja: Poznań
Jeśli masz dane 2 boki trójkąta oraz miarę kąta pomiędzy dowolnymi bokami, lub masz dane 3 boki trójkąta, to chyba najprościej będzie wykorzystać twierdzenie cosinusów.
Góra
Mężczyzna Offline
PostNapisane: 23 mar 2016, o 18:28 
Użytkownik

Posty: 8
Lokalizacja: Warka
Po pierwsze to chyba trochę namieszałem z oznaczeniami.
Znalazłem w Googlach taki rysunek, mam nadzieję że autor się nie pogniewa.
Obrazek
Zgodnie z podanymi tutaj oznaczeniami mamy dane albo wszystkie trzy boki, albo boki a, b i kąt \beta.
Przy danych trzech bokach twierdzenie cosinusów by przeszło, ale przy dwóch bokach mamy dany nie ten kąt co potrzeba.
Oczywiście dwa boki i dowolny kąt opisują trzeci bok jednoznacznie, ale trzeba pokombinować inaczej.
Rozwiązanie zadania nie jest specjalnie trudne, ale nieeleganckie z punktu widzenia informatyki.
W komputerze pierwiastek z dwóch podniesiony do kwadratu to nigdy nie jest dwa, bo używane są algorytmy będące kompromisem pomiędzy długością kodu, czasem wykonania i dokładnością obliczeń.
Swoich wyników nie chcę podawać żeby nikogo nie zasugerować, ale wychodzą mi pierwiastki z sinusów.
Szukam jakiegoś prostszego wzoru, który być może istnieje.

Zasadniczo to nie jest żaden trójkąt, tylko mechanizm korbowodowy, który będzie elementem bardziej skomplikowanej maszyny. Mechanizm ten będzie napędzany osią obrotową umieszczoną w wierzchołku B według powyższego rysunku. W punkcie C jest zawias, swobodę ruchu punktu A ogranicza inny mechanizm, na przykład drugi taki sam. Trzeba przeliczyć kąt obrotu osi na liniowe przesunięcie punktu A, albo na odwrót.
A teraz wyobraźmy sobie że na przykład sześć takich mechanizmów jest połączonych ze sobą w trójwymiarowej przestrzeni i każdy jest niezależnie napędzany, a wszystkim ma sterować komputer.
Tutaj nie wystarczy policzyć, trzeba to jeszcze zrobić szybko i w miarę dokładnie.
Góra
PostNapisane: 23 mar 2016, o 18:32 
Użytkownik
Cytuj:
W komputerze pierwiastek z dwóch podniesiony do kwadratu to nigdy nie jest dwa, bo używane są algorytmy będące kompromisem pomiędzy długością kodu, czasem wykonania i dokładnością obliczeń
.

Kod:
1
https://www.wolframalpha.com/input/?i=(sqrt(2))%5E2


Jakoś wolfram podaje mi 2. Korzystałeś z wolframa kiedyś?
Góra
Mężczyzna Offline
PostNapisane: 23 mar 2016, o 18:41 
Użytkownik

Posty: 8
Lokalizacja: Warka
Mam opisać wzór w języku C korzystając z dostępnych bibliotek.
Góra
PostNapisane: 23 mar 2016, o 18:49 
Użytkownik
Kod:
1
math.h


Bibliotekę masz, więc dalej nie widzę, gdzie jest problem
Góra
Mężczyzna Offline
PostNapisane: 23 mar 2016, o 19:18 
Użytkownik

Posty: 8
Lokalizacja: Warka
Na razie pracuję nad czymś podobnym do tego :
http://onexia.com/CodianRobotics/Codian-D2-Robots.html
To bardzo prosty układ pracujący w jednej płaszczyźnie.
Ale jak już mam coś robić, to bym chciał żeby przydało się też do rzeczy bardziej skomplikowanych.
Dlatego szukam najprostszych wzorów.

A Wolfram chyba nie liczy, tylko udaje człowieka ...
Kod:
1
https://www.wolframalpha.com/input/?i=sqrt(pi)^2
Góra
Kobieta Offline
PostNapisane: 24 mar 2016, o 00:22 
Użytkownik
Avatar użytkownika

Posty: 4376
Lokalizacja: Łódź
tuxcnc napisał(a):
Przy danych trzech bokach twierdzenie cosinusów by przeszło, ale przy dwóch bokach mamy dany nie ten kąt co potrzeba.

Przy danych dwóch bokach możesz policzyć drugi kąt z tw.sinusów i trzeci z sumy kątów w trójkącie.
Góra
Mężczyzna Offline
PostNapisane: 24 mar 2016, o 05:28 
Użytkownik

Posty: 8
Lokalizacja: Warka
Znam tą metodę, tylko cały czas wychodzą mi wzory o podobnym stopniu skomplikowania.
Cały czas chodzi mi po głowie, że odpowiedzią jest jakaś prosta funkcja, być może najzwyklejsza sinusoida i że wszystko co mi potrzebne da się wyliczyć prościej.
Góra
Kobieta Offline
PostNapisane: 24 mar 2016, o 10:15 
Użytkownik
Avatar użytkownika

Posty: 4376
Lokalizacja: Łódź
Tu http://autowiedza.republika.pl/kinemat_ukl_korb.html jest wzór 2.1 na drogę tłoka x \in \left[ 0,2R\right] (R=a to promień korby). Wtedy c=a+b-x
Wyprowadzenie wzoru jest tutaj http://www.zss.lublin.pl/html/pliki/motor/9.1%20%20Kinematyka%20ukladu%20korbowego.pdf.
Przy danych trzech bokach kąt łatwiej liczyć z tw. cosinusów niż z tego wzoru. Zapewne nie ma "prostych" wzorów.
Góra
Mężczyzna Offline
PostNapisane: 24 mar 2016, o 17:09 
Użytkownik

Posty: 8
Lokalizacja: Warka
W szczególnym wypadku, gdy a=b, c=2acos\beta .
Było by pięknie, tylko nie da się zbudować maszyny o równych ramionach, b musi być dłuższe od a ...

Długość boku c jest funkcją kąta \beta, to nie ulega wątpliwości.
Pytanie jest takie, czy da się tą funkcję opisać bez wyciągania pierwiastków z sinusów.
Pewnie nikt się nad tym nie zastanawiał, bo istniejące rozwiązania zwykle wystarczają.
Góra
Kobieta Offline
PostNapisane: 24 mar 2016, o 23:10 
Użytkownik
Avatar użytkownika

Posty: 4376
Lokalizacja: Łódź
Przecież tu nigdzie nie ma pierwiastków z sinusów.

Gdy szukasz c to możesz dwukrotnie skorzystać z tw. sinusów. Najpierw liczysz \alpha z zależności

\sin \alpha=  \frac{a \sin  \beta }{b}

a potem masz

c= \frac{b \sin ( \alpha + \beta )}{\sin  \beta }

Gdy szukasz \beta to z tw. cosinusów masz

\cos  \beta = \frac{a ^{2} +c ^{2} -b ^{2} }{2ac}
Góra
Mężczyzna Offline
PostNapisane: 25 mar 2016, o 21:11 
Użytkownik

Posty: 8
Lokalizacja: Warka
"Pomógł" poleciał, dzięki.
Na czymś się zafiksowałem i prześladował mnie pierwiastek z sumy kwadratów ...
Te wzory wyglądają dużo lepiej od moich i wyszedł z nich całkiem ładny kod.
Kod:
1
2
3
4
5
6
7
8
9
10
11
12
13
//tuxcnc 2016
//licencja GPL
double a=1;
double b=1.732;
double c=2;
double angle(double arm){
  double beta=acos((a*a+arm*arm-b*b)/(2*a*arm));
  return beta;
}
double arm(double angle){
  double c=(b*sin(angle+asin((a*sin(angle))/b)))/sin(angle);
  return c;
  }
Góra
Mężczyzna Offline
PostNapisane: 26 mar 2016, o 10:52 
Użytkownik

Posty: 13581
Lokalizacja: Bydgoszcz
Dwa boki i kąt, który nie jest pomiędzy nimi nie wyznaczaja trójkąta jednoznacznie
\begin{tikzpicture}
\draw[blue] (0,4)--(8,0) node[below] {$\beta$};
\draw (-4,0)--(8,0);
\draw[green] (0,4)--(-3,0);
\draw[red] (0,4)--(3,0);
\end{tikzpicture}

długości czerwonego i zielonego odcinka są równe
Góra
Mężczyzna Offline
PostNapisane: 26 mar 2016, o 12:12 
Użytkownik

Posty: 8
Lokalizacja: Warka
a4karo napisał(a):
Dwa boki i kąt, który nie jest pomiędzy nimi nie wyznaczaja trójkąta jednoznacznie

W sensie ogólnym to masz rację, co zresztą udowodniłeś, ale tutaj mamy przypadek szczególny.
Kąt jest dany przy krótszym boku.
Góra
Utwórz nowy temat Odpowiedz w temacie  [ Posty: 15 ] 


 Zobacz podobne tematy
 Tytuł tematu   Autor   Odpowiedzi 
 trójkat opisany na okręgu  celia11  1
 Okręg i trójkąt  grero89  8
 Trójkąt i jego punkt wew. - zad z Nierówności trójkąta  user9613  2
 trójkąt równoboczny - wpisywanie trójkątów równo  sea_of_tears  1
 trójkąt prostokątny wpisany w okrąg - zadanie 2  AndrzejK  1
 
Atom [Regulamin Forum] [Instrukcja LaTeX-a] [Poradnik] [F.A.Q.] [Reklama] [Kontakt]
Copyright (C) Karpatka.pl