Matematické Fórum


1. 8. 2026 (L) Fórum bude brzy uzavřeno 😿

Nejste přihlášen(a). Přihlásit

#1 16. 10. 2017 19:53

Akraell
Příspěvky: 45
Reputace:   
 

V zadaném intervalu nalezněte všechny lokální extrémy

Dobrý den,
Mám napsat program, který v zadaném intervalu <$x_{1}; x_{2}$> nalezne všechny lokální extrémy (minima nebo maxima) kubické funkce f(x) = ax^3 + bx^2 + cx + d
Tip: Funkci procházejte v cyklu s krokem delta = 0.001. Pro extrém platí, že dvě po sobě jdoucí diference (f(x - delta) - f(x)  a  f(x) - f(x + delta)) mají opačná znaménka.

Výsledkem programu má být načtení z klávesnice hodnoty a, b, c, d, x1, x2 a program má podle toho najít lokální extrémy.

Problém je, že nevím, jaká jsou matematická pravidla. Ani nevím, k čemu tam slouží delta.

Offline

 

#2 17. 10. 2017 11:29 — Editoval Rumburak (19. 10. 2017 11:00)

Rumburak
Místo: Praha
Příspěvky: 8691
Reputace:   502 
 

Re: V zadaném intervalu nalezněte všechny lokální extrémy

Ahoj.
Z praktických důvodů změním označení $\langle x_{1}; x_{2} \rangle$ na $\langle a; b \rangle$ ,  kde $a < b$.

Doporučený  tip je v zásadě správný, ale řídit se jím doslova by mohlo vést ke komplikacím,
proto ho poněkud modifikujme.

I. Najděme přirozené číslo $m$ takové, aby $\frac {b-a}{m} \le  0.001$, a položme

                                      $\delta=\frac {b-a}{m}$.

II.  Definujme konečnou posloupnost $(c_n,  n \in \{0, 1, ..., m\})$ předpisem

                                          $c_n = a + n\delta$ .

Zřejmě  $c_0 = a,  c_m = b$.


III. V cyklu pro $k \in \{1, ..., m-1\}$ hledejme taková $k$ , pro něž je splněna podmínka

                    $(f(c_{k+1}) - f(c_k))(f(c_k) - f(c_{k-1})) < 0$ .

Nalezaná čísla $c_k$ jsou aproximacemi bodů uvnitř stanoveného intervalu, v nichž nastávají
lokální extrémy. 

Jak posoudit situaci v jeho krajních bodech,  je snad jasné.

EDIT. Oprava překlepu a chyb v kroku III.

Offline

 

#3 17. 10. 2017 11:33 — Editoval Rumburak (17. 10. 2017 11:33) Příspěvek uživatele Rumburak byl skryt uživatelem Rumburak.

#4 17. 10. 2017 15:32

Akraell
Příspěvky: 45
Reputace:   
 

Re: V zadaném intervalu nalezněte všechny lokální extrémy

Děkuji za první zpětnou vazbu.

Je tu ale stále problém.
Např. když zadám hodnoty, že to bude mít toto zadání:
$0,1x^{3} - x^{2} - 10x + 50$,   $<-4; -2>$
Tak výsledek musí být: $Max:  -3.33$

Nevím jestli jsem počítal správně (ani jsem ještě nepochopil jak mám hledat $c_{k}$ a k, takže jsem třetí část zatím nepočítal), ale když:
nechám "delta = 0,001"
za $c_{0}$ dosadím -4
za $c_{2000}$ dosadím -2 (vyšlo mi, že pro -2 je m = 2000. Snad jsem počítal a pochopil správně..)
Tak ta výsledná hodnota maximum = -3.33 bude pro $c_{1333.\bar{3}}$ a jestli má být n-tý člen přirozený číslo, tak jsem prohrál.

Offline

 

#5 17. 10. 2017 16:46 — Editoval Rumburak (17. 10. 2017 16:56)

Rumburak
Místo: Praha
Příspěvky: 8691
Reputace:   502 
 

Re: V zadaném intervalu nalezněte všechny lokální extrémy

↑ Akraell:

A jak jsi došel k "výsledné hodnotě" -3.33  pro maximum ?

Bod, v němž skutečně nastane extrém, nemusí být členem posloupnosti $(c_{k})$
a že to tak bude,  je i málo pravděpodobné.
Řešení, k nimž vedou numerické metody, jsou obecně jen méně či více přibližná.
V tom možná spočívá problém, na který upozorňuješ.

Offline

 

#6 17. 10. 2017 17:26

Akraell
Příspěvky: 45
Reputace:   
 

Re: V zadaném intervalu nalezněte všechny lokální extrémy

K tomu zadání mi napsali 4 příklady, jak má vypadat výstup. Uvedu 2 z nich:

Příklad spuštění programu 1:
Zadej koeficient a:
0.1
Zadej koeficient b:
-1
Zadej koeficient c:
-10
Zadej koeficient d:
50
Zadej pocatek intervalu:
-6
Zadej konec intervalu:
-4

=> Protože v daném intervalu neleží žádný extrém, program nic nevypíše

Příklad spuštění programu 2:
Zadej koeficient a:
0.1
Zadej koeficient b:
-1
Zadej koeficient c:
-10
Zadej koeficient d:
50
Zadej pocatek intervalu:
-4
Zadej konec intervalu:
-2
max: -3.33


To je asi ten důvod, proč mám doporučeno "Delta = 0,001", protože když si vymyslím jiný m, tak pak to vychází jinak.

Offline

 

#7 18. 10. 2017 05:21

KennyMcCormick
Příspěvky: 1677
Reputace:   49 
 

Re: V zadaném intervalu nalezněte všechny lokální extrémy

V čem přesně je teď problém? :)


Even if you take the best course of action, the universe is still allowed to say "So what?" and kill you.

Offline

 

#8 18. 10. 2017 09:35

Akraell
Příspěvky: 45
Reputace:   
 

Re: V zadaném intervalu nalezněte všechny lokální extrémy

↑ KennyMcCormick:
Nevím jaký vzorečky do programu vložit, aby výstup programu odpovídal zadání a měl shodu s očekávaným výstupem.
Zatím mě napadá jen vytvořit posloupnost, která bude dosazovat za x čísla v intervalu od a; a + 0,01; a + 0,02... do b. Pak vyhledá maximum a minimum s podmínkou, že monotonie např. rostoucí se začala měnit na klesající.

Jenže to je docela blbost, protože někdo vyplní obrovský interval a může si třeba mezitím jít hrát šachy než vyleze výsledek.

Offline

 

#9 18. 10. 2017 10:16

LukasM
Příspěvky: 3274
Reputace:   193 
 

Re: V zadaném intervalu nalezněte všechny lokální extrémy

↑ Akraell:
Pokud to dobře chápu, tak tebou právě navržený postup je naprosto přesně to samé, co doporučují v zadání a co ti rozepsal Rumburak - jen s tím rozdílem, že doteď jste se bavili o kroku 0.001, nikoli 0.01. A pokud to budeš programovat na počítači mladším než nějakých 60 let, tak mezitím nestihneš ani rozestavit figurky na šachovnici, a to i v případě dost velkého intervalu. Samozřejmě pro EXTRÉMNĚ velké intervaly to vhodné není, ale v takovém případě se dají použít zase jiné metody. V tomto případě to například jde derivováním převést na rovnici typu polynom(x)=0, která se dá řešit různými (a mnohem efektivnějšími) způsoby.

Z toho co píšeš jsi to zatím nenaprogramoval. Takže doporučuji už o tom moc nešpekulovat, udělat to a pak zkoumat výsledky. Že netrefiš přesně hodnotu -3.33, jak "chtějí", je celkem jedno (on tam ten extrém ani přesně není). Ale tvá chyba bude maximálně 0.001, takže....

Offline

 

#10 18. 10. 2017 19:48

Akraell
Příspěvky: 45
Reputace:   
 

Re: V zadaném intervalu nalezněte všechny lokální extrémy

Aha, já v tom celou dobu hledal nějakou složitost včetně toho, co psal Rumburak.

Jeden žák to řešil pomocí integrací, že mu odpadlo cyklení programu. Já ještě zatím nevím, co jsou derivace a integrace. Je toho dost a budu to muset dohnat. Takže mě tu asi ještě "párkrát" uvidíte a asi to bude s mojí hlavou opět na dlouho (a to jsem dal maturitu z matematiky na 80%) :D

Děkuji moc za vaší pevnou spolupráci
Vážím si toho.

Offline

 

#11 19. 10. 2017 11:03

Rumburak
Místo: Praha
Příspěvky: 8691
Reputace:   502 
 

Re: V zadaném intervalu nalezněte všechny lokální extrémy

↑ Akraell:
Ahoj. 

V kroku III. mého příspěvku ↑ Rumburak: byla ještě jedna chyba,
dokonce zásadního významu.  Již opraveno.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson