Matematické Fórum

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

#1 17. 02. 2013 21:06 — Editoval jane338 (17. 02. 2013 21:08)

jane338
Příspěvky: 32
Reputace:   
 

Pascal polynomicka funkcia

Ahoj. Mám menší problém s priebehom funkcie a jej extrémami. Minimum mi program vyhľadá, ale za maximum stále vezme pravú hranicu intervalu, na ktorom chcem priebeh aj extremy zistiť.

Code:

procedure maximum;
var l,p,max:real;
begin
 p:=pr;
 l:=la;
 max:=fx(l);


 while l<p do begin
                   l:=l+0.001;
                   if fx(l)>fx(l-0.001) then max:=l;
              end;
 if (max=la) or (max=p) then writeln ('funkcia nema maximum') else
writeln('maximum v bode x=',max:5:2);

end;

proceduru pre minimum mam zapisanu v podstate rovnako a funguje. aspoň čo som si stačila všimnúť, a neviem prísť na chybu. a ďalšia otázka, priebeh. je lepšie ísť cez 1. deriváciu alebo prechádzať interval po kúskoch? Skúšala som naprogramovať obe možnosti, ale ani jedna nechcela ísť. vedel by niekto pomôcť?

Offline

 

#2 18. 02. 2013 01:46

Stýv
Vrchní cenzor
Příspěvky: 5693
Reputace:   215 
Web
 

Re: Pascal polynomicka funkcia

pokud proběhne příkaz

Code:

max:=p

tak to znamená, že podmínka

Code:

fx(p)>fx(p-0.001)

je splněná - nic víc, nic míň. to ale není definice maxima, že?

Offline

 

#3 18. 02. 2013 15:53

jane338
Příspěvky: 32
Reputace:   
 

Re: Pascal polynomicka funkcia

je to v podstate len vyhľadávanie najväčšieho prvku teda v tomto prípade funkčnej hodnoty a stále nechápem, kde je chyba

Offline

 

#4 19. 02. 2013 17:27 — Editoval Lumikodlak (19. 02. 2013 17:28)

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: Pascal polynomicka funkcia

Tahle podminka:

Code:

if fx(l)>fx(l-0.001) then max:=l;

podle me dela to, ze kdyz ta funkce je v tom bode rostouci, tak na ten bod nastavi maximum. V tom while cyklu postupuje zleva doprava, takze kdyz ta funkce bude rostouci na konci toho intervalu, tak se podle nastavi maximum na ten konec. Jestli mate hledat lokalni maximum, tak by to podle me melo byt spis neco jako:

Code:

if ((fx(l)>fx(l-0.001)) and (fx(l)>=fx(l+0.001))) then max:=l;

protoze je potreba zjistit, jestli hodnoty nejenom nalevo jsou mensi, ale take jestli hodnoty napravo od toho bodu jsou mensi.
(Ten program ani vzorec jsem netestoval tak nevim, jestli to nepisu spatne)

Jeste me napadlo, ze tohle:

Code:

max:=fx(l);

by mozna melo byt spis:

Code:

max:=l;

Nejsem si jisty, jestli mate hledat jen to lokalni maximum, nebo celkove maximum na intervalu (Kdyby to melo byt obecne maximum, tak by to vypadalo jinak), pripadne take - jestli staci najit jen jedno to lokalni maximum, nebo jich tam muze byt vic.

No mozna to pisu zmatene tak kdyztak dej vedet, jestli to pomohlo :-) nebo co si o tom myslis.

Jeste me napada - mozna by to bylo lepsi pres tu derivaci (asi podle toho, jekeho radu muze byt ten polynom), mate zadany nejaky postup, kterym to mate pocitat? Kolik radu muze mit ten polynom?

Offline

 

#5 21. 02. 2013 19:45

jane338
Příspěvky: 32
Reputace:   
 

Re: Pascal polynomicka funkcia

tak ono, ide len o lokálne maximum na intervale, čiže tam má hľadať len jednu hodnotu.
ale zistila som, že ak má funkcia maximum, nájde ho, ale za minimum zoberie pravú hranicu intervalu a naopak.ale som rada, že to funguje aspoň takto.

polynóm môže byť hocijakého stupňa, ale tak najviac pracujem s maximálne 5tym stupňom.


záleží na tom, akého stupňa je ?
je to na mne, ako to naprogramujem, ale aj ja si myslím, že cez deriváciu by to mohlo byť lepšie. len vôbec neviem, ako to zapísať

Offline

 

#6 22. 02. 2013 01:09 — Editoval Lumikodlak (22. 02. 2013 01:14)

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: Pascal polynomicka funkcia

Polynom 5. stupne muze mit treba 2 maxima, napriklad kdyz se podivas sem: Odkaz, proto jsem se ptal, jakeho muze byt stupne a kolik mate hledat maxim (minim). Ale nevim, jake mate zadani, anebo k cemu ten program potrebujes.

Jeste me napadlo, ze ta podminka, jak tam mas:

Code:

if (max=la) or (max=p) then writeln ('funkcia nema maximum') else

Tak nejspis nefunguje, protoze v tom cyklu je:

Code:

while l<p do begin

takze 'l' se uvnitr toho cyklu nebude nikdy rovnat 'p' (bude vzdycky akorat mensi - kdyz se bude rovnat nebo bude vetsi, tak uz to skonci), takze i ta promenna 'max' bude vzdycky mensi nez p - proto to nejspis ukazuje maximum na konci intervalu, a nepise to, ze nema zadne maximum. Kdyby se to zmenilo na:

Code:

if (max=la) or (max>=p-0.001) then writeln ('funkcia nema maximum') else

tak to podle me bude fungovat (v nekterych pripadech :-) ), ale nezkousel jsem to

Jinak si ale porad myslim, ze kdyz to neupravis jak jsem psal minule, tak to v nekterych pripadech nebude fungovat (treba kdyz na tom intervalu bude zaroven maximum i minimum)

Co se tyce te derivace, tak vis treba, jak naprogramovat samotnou tu derivaci polynomu? (podle vzorce pro derivaci polynomu) Ale pro paty stupen nevim, jestli to s derivaci bude jednodussi, mel jsem na mysli, za kdyby to bylo treba do 3. stupne, tak by se to dalo pocitat normalne pomoci kvadraticke rovnice.

Offline

 

#7 22. 02. 2013 14:22 — Editoval jane338 (22. 02. 2013 14:51)

jane338
Příspěvky: 32
Reputace:   
 

Re: Pascal polynomicka funkcia

o tom viem, že môže mať aj dve maximá, ale myslím, že bude stačiť, ak nájde jedno.je to program do školy, ale jedine s týmto neviem pohnúť.

maximum som upravila, funguje.

a už len ten priebeh.
1. deriváciu naprogramovanú mám, takisto funkciu výpočtu hodnoty prvej derivácie fxder-len neviem či dobre. a podľa toho chcem urobiť ten priebeh, ale netuším ako ďalej, mám len toto

Code:

if fxder(l)>0 then write('funkcia rastie na intervale: <',l:3:1)
              else write('funkcia klesa na intervale: <',l:3:1);

teraz by mal ísť cyklus while, zase by mal prechádzať celý interval a vypisovať, kde klesá a kde rastie.

Offline

 

#8 22. 02. 2013 18:03 — Editoval Lumikodlak (24. 02. 2013 00:05)

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: Pascal polynomicka funkcia

Ok, tak nejspis vis, co delas :-) upravit to by podle me nebylo slozite.

Tady jsem neco napsal - jak by mohl vypadat ten cyklus: (je to trochu slozitejsi, ale jednoduseji me to nenapadlo)


ale nezkousel jsem, jestli to funguje, ani to spoustit - predpokladam, ze si to kdyztak napises nejak podle sebe, s tim, ze to co jsem tu napsal je akorat navrh (a navic se mi to zkouset nechtelo :-) ). Promennou 'l' jsem prejmenoval na 'x', aby se to nepletlo s cislem 1. Kdybys k tomu mela dotazy, tak se klidne ptej.

Offline

 

#9 23. 02. 2013 19:11 — Editoval jane338 (23. 02. 2013 20:39)

jane338
Příspěvky: 32
Reputace:   
 

Re: Pascal polynomicka funkcia

prečo je toto? pre obidva to isté?

Code:

lastIncreasing := la;
lastDecreasing := la;

nefunguje to :(
veľká vďaka za snahu a pomoc, ale mne z toho programu už šibe :D najprv som zistila, že mi zle počíta deriváciu, opravila som to. deriváciu mi už počíta dobre, ale aj tak to nejde.

Offline

 

#10 24. 02. 2013 00:04

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: Pascal polynomicka funkcia

Proc je oboji to same - nevim, jak by to melo vypisovat ty intervaly, kde je to rostouci, a kde klesajici, tak jsem si rekl, ze to bude od zacatku toho testovaneho intervalu. Promenne lastIncreasing a lastDecreasing jsem tam dal jako indikatory toho, v jakem poslednim miste byla funkce rostouci anebo klesajici. Pro zacatek je to nastavene oboji proste na zacatek toho intervalu, podrobnejsi vysvetleni by bylo asi dlouhe :-) nevim, jestli to takhle staci.

Jestli jsi prepsala to, co jsem tu psal :-) (a opravila ty syntakticke chyby, co tam byly), tak se omlouvam, ze to nefunguje. Stahnul jsem pascal a vyzkousel to, a v tech vypisech jsem tam mel vymenene lastIncreasing a lastDecreasing. Takhle mi to tak nejak fungovalo:

Code:

program Untitled;

var x, la, p, lastIncreasing, lastDecreasing: real;
var previousSign: integer;

function fxder(x:real):real;
begin
          fxder:= 3-x;
end;

begin
     la := 0;
     p := 6;

     x := la;
     lastIncreasing := la;
     lastDecreasing := la;
     previousSign := 0;

while x < p do begin
    if fxder(x)>0 then begin
          if previousSign = -1 then
              writeln('funkcia klesa na intervale: <',lastIncreasing:3:1,',',x:3:1,'>');
          previousSign := 1;
          lastIncreasing := x;
    end
    else begin
          if previousSign = 1 then
              writeln('funkcia rastie na intervale: <',lastDecreasing:3:1,',',x:3:1,'>');
          previousSign := -1;
          lastDecreasing := x;
    end;
    x := x + 0.001;
end;

if (previousSign = -1) then
   begin
      if (lastDecreasing < x - 0.001) then write('funkcia klesa na intervale: <',lastIncreasing:3:1,',',x:3:1,'>');
   end
else
   begin
        if (lastIncreasing < x - 0.001) then write('funkcia rastie na intervale: <',lastDecreasing:3:1,',',x:3:1,'>');
   end;

   readln();
end.

(ten readln() na konci jsem tam dal jenom aby se to zastavilo a byl videt vysledek, jinak to tam nepatri :-) )
Vypsalo mi to:
funkcia rastie na intervale: <0.0,3.0>
funkcia klesa na intervale: <3.0,6.0>

Jestli ti to nefunguje z jineho duvodu, tak kdyztak napis, co to vypisuje, a pripadne muzes poslat, jak vypada ten program (jinak nevim jestli nekdo bude schopny s tim poradit)

Offline

 

#11 24. 02. 2013 14:04 — Editoval jane338 (24. 02. 2013 14:45)

jane338
Příspěvky: 32
Reputace:   
 

Re: Pascal polynomicka funkcia

ok toto už nejako pomaly chápem.

a už to funguje, som to zle poprepájala predtým :) len ak je funkcia najprv klesajúca, napíše interval kde klesá a potom aj kde rastie. ale ak je funkcia najprv rastúca, potom už nechce napísať klesajúci interval a pritom potom ešte klesá. tak neviem,ale inak to ide :)

viem že takto cez net sa to ťažko vysvetľuje :) veľmi si mi pomohol, ďakujem pekne :)

Offline

 

#12 26. 02. 2013 02:03

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: Pascal polynomicka funkcia

V nejhorsim sem muzes poslat cely ten kod, ale tusim ze to asi nejak zvladnes :-)

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson