Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Dobrý den,
Potřeboval bych pomoci s určitým typem goniometrické rovnice.
Jedná se o rovnice ve tvaru: x/(a+x)=sin(x) (nebo podobnou)
Zajímá mě numerické vyjádření proměnné x (klidně obecnější postup). Super by bylo, kdyby se to obešlo bez diferenciálního počtu.(derivace atd.)
Pro příklad dejme tomu že a=100. Pro jaká x se budou strany rovnice rovnat?
Díky.
Offline
Když si představíš grafy těch dotčených funkcí, tak zjistíš následující (pro začátek berme 'a' kladná a zajímejme se u kladná 'x'):
1. Na každém z intervalů
,
, máme dva průsečíky, a tyto průsečíky se blíží k hodnotě
s rostoucím
. Jeden z nich je v intervalu
a druhý v
. Máme tedy vždy nekonečně mnoho řešení.
2. Na intervalu
máme jediný průsečík pro
, dva průsečíky pro
. Pokud jsou dva průsečíky, pak jeden je v intervalu
a druhý v
, pokud je jediný průsečík, tak je v intervalu
.
3.
je vždy řešení.
4. Na každém výše uvedeném intervalu je nulový bod funkce
možno hledat třeba půlením intervalu. S jinými numerickými metodami by to chtělo hlubší analýzu -- sice by mohly vést rychleji k cíli, ale je otázka, splňuje-li funkce g(x) jejich předpoklady (třeba Newtonova metoda).
EDIT: pokud je
, tak je situace jasná. Pokud by bylo
, pak se někde výše objeví absolutní hodnota, resp. se řešení přesunou z oblastí, kde je sinus kladný, do oblastí, kde je sinus záporný. Jistě by sis doplnil sám.
EDIT2: Půlení intervalu (a,b), kteréhokoli z výše uvedených intervalů, se dá symbolicky (v nějakém srozumitelném pseudokódu) udělat třeba takto pomocí 'solution' (rekurzi raději nahradit nějakým cyklem, nemáš-li pod kontrolou stack):
solution(a, b) =
{
c = (b-a)/2
IF b-a < epsilon THEN RETURN c
ELSE
{
IF g(a) * g(c) < 0 THEN solution(a, c) ELSE solution(c, b)
}
}
solution(a, b);Samozřejmě se s tím dá dále pracovat - dá se zjišťovat, zdali jsme se s tím 'c' netrefili přímo do řešení, resp. podmínka b-a < epsilon se dá nahradit nějakým požadavkem na funkční hodnotu g(c), atp.
Offline