Co když chceme udělat funkci z něčeho, co jsme již pracně spočetli? > P4:=normal(eval(subs(n=4,1/2^n/n!*diff((x^2-1)^n,x$n))));

Podobné dokumenty
2. přednáška (grafika a maplovský programovací jazyk)

Základní list. Úplný základ - načítání knihoven, informace, restart. Základní informace. Jak dostat z Maplu další informace

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

MASARYKOVA UNIVERZITA. Funkce dvou proměnných: definiční obor, hledání extrémů, grafické znázornění

1. Krivky. krivky zadane parametrickymi rovnicemi. Primka rovnobezna s osou y. Primka rovnobezna s osou x

MAPLOVSKY PROGRAMOVACI JAZYK

Internetová adresa osobní stránky:

Úvod do programu MAPLE

SLOŽENÉ ÚROKOVÁNÍ. částky naspořené po n letech při m úrokových obdobích za jeden rok platí formule

Programovani v Maplu Procedura

Rekurze. Pavel Töpfer, 2017 Programování 1-8 1

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Bakalářská práce. Interaktivní animace v programu MAPLE. doc. RNDr. Stanislav Bartoň, CSc.

Zápočtová písemka z Matematiky III (BA04) skupina A

Nula vyjde až po zjednodušení, které užívá pravidla pro práci s trigonometrickými funkcemi simplify(h1-h);

Internetová adresa osobní stránky:

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Stručný návod k programu Octave

Numerické metody a programování

Semestrální práce z předmětu. Jan Bařtipán / A03043 bartipan@studentes.zcu.cz

Programovací jazyk Haskell

Programovací í jazyk Haskell

PES lib (C + PASCAL) KNIHOVNY KOMUNIKAÈNÍCH FUNKCÍ 03/ PESlib KOMUNIKAČNÍ KNIHOVNY C, PASCAL 03/ stran 1

Rozklad problému na podproblémy

Numerické metody a programování. Lekce 1

3.2 3DgrafyvMaple 106 KAPITOLA 3. UŽITÍ MAPLE PŘI ŘEŠENÍ KVADRIK

Struktura programu v době běhu

Visualizace a animace. Jan Velechovský. Maple. plots Odkazy. Matlab. Animace Odkazy IDL. Odkazy. Gnuplot. 10. prosince Animace.

a 3 c 5 A 1 Programové prostředí

Základy programování Proměnné Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události

ArduinotechGSMShield knihovna

Obecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012

K rozpoznání růstu či klesání dané funkce určitém směru nám pomůže gradient, tj. vektor., ln(1 x2 + y 2 [ = y

1 Funkce dvou a tří proměnných

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

Paměť počítače. alg2 1

1 LC - numerické řešení integrálu - rozšíření

MS Excel Základy maker. Operační program Vzdělávání pro konkurenceschopnost. Projekt Zvyšování IT gramotnosti zaměstnanců vybraných fakult MU

IB015 Neimperativní programování. Časová složitost, Typové třídy, Moduly. Jiří Barnat Libor Škarvada

3 KTE / ZPE Informační technologie

Cvičné texty ke státní maturitě z matematiky

FAKULTA STAVEBNÍ. Stavební statika. Telefon: WWW:

Kristýna Kuncová. Matematika B2

Digitální učební materiál

5. přednáška - Rozklad problému na podproblémy

1. Je dána funkce f(x, y) a g(x, y, z). Vypište symbolicky všechny 1., 2. a 3. parciální derivace funkce f a funkce g.

Programování v Pythonu

3. Derivace funkce Definice 3.1. Nechť f : R R je definována na nějakém okolí U(a) bodu a R. Pokud existuje limita f(a + h) f(a) lim

Cvičení 9 - Monitory. monitor m; var proměnné... procedure p; begin... end; begin inicializace; end;

Hromadná změna datumu a času v buňkách

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

Základy algoritmizace a programování

FAKULTA STAVEBNÍ MATEMATIKA. Cvičení z matematiky s využitím systému MAPLE DOPLŇKOVÝ STUDIJNÍ MATERIÁL

CZ.1.07/1.5.00/

Paradigmata programování 1

9. přednáška - třídy, objekty

awk programovatelný filtr

Test z programování v jazyce VBA v rámci předmětu Počítače II Vzorová zadání a vypracování

Datové struktury. alg12 1

Skripty - úvod. Linux - skripty 2

Úvod do Operačních Systémů

Operační systémy Linux, Mac OS X a jejich srovnání

Hotline SW rezervace a recepce Hotline SW a pokladnå systámy

5. cvičení z Matematiky 2

ROZHODOVACÍ PROCEDURY A VERIFIKACE PAVEL SURYNEK, KTIML

10. přednáška (slovní úlohy vedoucí na extrémy - pokračování)

PROGRAMOVÁNÍ V SHELLU

Funkce, intuitivní chápání složitosti

První kapitola úvod do problematiky

Řídicí struktury. alg3 1

9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek

Dvojné a trojné integrály příklad 3. x 2 y dx dy,

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

11. cvičení z Matematické analýzy 2

14. Složitější konstrukce

6. Příkazy a řídící struktury v Javě

Test z programování v jazyce VBA v rámci předmětu Počítače II Vzorová zadání a vypracování

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Algoritmizace a programování

Úvod do programování - Java. Cvičení č.4

PSK3-9. Základy skriptování. Hlavička

Kapitola 7: Integrál.

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Generování vnitřní reprezentace programu

Příkazové skripty Procedurální jazyky Lua a ostatní

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

diferenciální rovnice verze 1.1

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

Programování. Debugging a testování. Martin Urza

3D GRAFIKA Zakladni volby, ovlivnujici vzhled 3D grafiky Pouzijeme funkci plot3d a specifikujeme rozsah pro obe promenne

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

Funkce a její vlastnosti

Více o konstruktorech a destruktorech

Břetislav Fajmon, UMAT FEKT, VUT Brno. Poznámka 1.1. A) první část hodiny (cca 50 minut): představení všech tří metod při řešení jednoho příkladu.

Limity funkcí. Spočtěte následující limity: x, (Demidovič 411). x a) lim x 0. , b) lim x 1. , c) lim. 2 x 2 x 1

Aproximace funkcí. x je systém m 1 jednoduchých, LN a dostatečně hladkých funkcí. x c m. g 1. g m. a 1. x a 2. x 2 a k. x k b 1. x b 2.

Definice funkcí a procedur. Mnoho operací provozujeme opakovaně, proto je hloupé programovat je při každém použití znovu.

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr

Petr Hasil

Transkript:

restart; Procedury a funkce F:=(x)-sin(x)*exp(-x); F := x sin( x ) e ( x ) Co když chceme udělat funkci z něčeho, co jsme již pracně spočetli? P4:=normal(eval(subs(n=4,1/2^n/n!*diff((x^2-1)^n,x$n)))); 35 15 3 P4 := + 8 x4 4 x2 8 P4_spatne:=(x)-P4; P4_spatne := x P4 P4_spatne(z); 35 15 3 + 8 x4 4 x2 8 Proto tu je unapply P4_lepsi:=unapply(P4,x); 35 15 3 P4_lepsi := x + 8 x4 4 x2 8 Podobně normal(eval(1/2^n/n!*diff((x^2-1)^n,x$n))); PP:=unapply(%,n,x); diff (( x 2 1) n, x $ n) 2 n n! PP(3,x); diff (( x 2 1 ) n, x $ n) PP := ( nx, ) 2 n n! x 3 3 + 2 ( x2 1 ) x PP(3,cos(theta)); Error, (in PP) wrong number (or type) of parameters in function diff Nakonec se tedy budeme mustet snžit k "programovn" P:=proc(n,x) local y; if n=0 then 1 else normal(subs(y=x,eval(1/2^n/n!*diff((y^2-1)^n,y$n)))) Page 1

P := proc( nx, ) local y; if n = 0 then 1 else normal ( subs ( y = x, eval ( diff (( y^2 1)^n, y $ n) / ( 2^n n! ))) ) fi end I zde jsou speciality, jako třeba implictn nvratov hodnota dan poslednm provedenm vrazem před koncem běhu procedury P(2,cos(theta)); 3 cos( θ) 2 1 Jenže P(n,cos(theta)); simplify(subs(n=3,%)); 2 diff (( cos( θ) 2 1) n, cos( θ ) $ n) 2 n n! Error, (in simplify) wrong number (or type) of parameters in function indets Musme se tedy při provděn procedury ujistit, že parametry jsou již dostatečně znmy. A v přpadě, že ne, MUSÍME vrtit nevyhodnocen vraz rovn pvodnmu voln fukce. Tak zařdme, aby až bude znm přslučn parametr zavolal explicitn či implictn eval funkci znovu. P:=proc(n,x) local y; if not type(n,integer) then RETURN('P(n,x)'); if n=0 then RETURN(1) else RETURN(normal(subs(y=x,eval(1/2^n/n!*diff((y^2-1)^n,y$n))))) P := proc( nx, ) local y; if not type ( n, integer ) then RETURN (' P ( nx, )') if n = 0 then RETURN( 1 ) else RETURN ( normal ( subs ( y = x, eval ( diff (( y^2 1)^n, y $ n) / ( 2^n n! ))) ) ) fi end P(n,cos(theta)); simplify(subs(n=3,%)); P ( n, cos( θ )) 2 5 cos( θ) 3 3 cos( θ ) 2 2 Page 2

Mžeme tak deklarovat použit globlnch proměnnch; Rozsah platnosti je stejn jako v běžnch jazycch Q:=proc(a,b,c) local l,m,n; global g,h,i; #body Q := proc( abclocal,, ) lmnglobal,, ; ghi,, ; end Je tu ale jeden detail, aby se nepltvalo časem, vyhodnocuj se lokln proměnn jen do hloubky 1 Q:=proc() local A,x; global n; A:=diff((x^n),x); n:=3; RETURN(A); Q := proc() local Axglobal, ; n ; n := '' n ; A := diff ( xnx ^, ); n := 3 ; RETURN( A) end Q(); eval(%); n:='n': # klid x n n x 3 x 2 Dovnitř již deklarovan procedury mžeme nahldnout print(legendrep); proc( a1:: algebraic, a2:: algebraic, a3:: algebraic)... end interface( verboseproc = 3 );# Tohle se nevrt do pvodnho stavu pomoc restart! print(legendrep); proc( a1:: algebraic, a2:: algebraic, a3:: algebraic)... end Podobně jako v archaickch jazycch si mžeme nechat vypsat kroky, kter procedura provd restart; printlevel:=10; int(x^2,x); printlevel:=1; printlevel := 10 {-- enter int, args = x^2, x {-- enter int/int, args = [x^2, x], 10, _EnvCauchyPrincipalValue answer := [ x 2, x, [ formula ]] Page 3

1 3 x3 <-- exit int/int (now in int) = 1/3*x^3} 1 answer := 3 x3 1 3 x3 <-- exit int (now at top level) = 1/3*x^3} 1 Ještě je tu dalš specialita: fib:=proc(n) if n=0 then 0 elif n=1 then 1 else fib(n-1)+fib(n-2) := = fib(27); 3 x3 printlevel := 1 fib proc( n) if n 0 then 0 elif n = 1 then 1 else fib ( n 1 ) + fib ( n 2) fi end 196418 Vpočet trv tak dlouho, protože 2^26 je 67 milion fib:=proc(n) if n=0 then 0 elif n=1 then 1 else fib(n):=fib(n-1)+fib(n-2) fib := proc( n) if n = 0 then 0 elif n = 1 then 1 else fib( n ):= fib ( n 1 ) + fib ( n 2) fi end fib(27); 196418 Nyn jsme využili vnitřn tabulku funkčnch hodnot, kterou si Maple vede pro zapamatovn již spočtench hodnot op(fib); proc( n) if n = 0 then 0 elif n = 1 then 1 else fib( n ):= fib ( n 1 ) + fib ( n 2) fi end restrat; fib:=proc(n) option remember; if n=0 then 0 elif n=1 then 1 else fib(n-1)+fib(n-2) Page 4

restrat fib := proc( n) option remember; if n = 0 then 0 elif n = 1 then 1 else fib ( n 1 ) + fib ( n 2) fi end fib(27); 196418 P:=proc(n) local u,x; option remember; if (n=1) then (x)-x elif n=0 then (x)-1 else u := simplify((2*n-1)/n*p(n-1)(x)*x-(n-1)/n*p(n-1)(x)); unapply( u, x); P:= proc( n) local ux, ; option remember; if n = 1 then x x elif n = 0 then 1 else u := simplify ((( 2 n 1 ) P( n 1) ( x) x) / n (( n 1 ) P( n 1) ( x) )/ n ); unapply ( ux, ) fi end P(24)(cos(theta)): Knihovny když umme pst funkce, mohli bychom začt pst moduly. Kdyby to snad někdy někdo potřeboval ať si přečte npovědu k realib,writelib. Z historickch dvod se kromě library použv mocnějš package. Plat, že větš, universlnějš věci se bal do balk, menš speciln do knihoven. with(plots); [ animate, animate3d, animatecurve, changecoords, complexplot, complexplot3d, conformal, contourplot, contourplot3d, coordplot, coordplot3d, cylinderplot, densityplot, display, display3d, fieldplot, fieldplot3d, gradplot, gradplot3d, implicitplot, implicitplot3d, inequal, listcontplot, listcontplot3d, listdensityplot, listplot, listplot3d, loglogplot, logplot, matrixplot, odeplot pareto pointplot pointplot3d polarplot polygonplot polygonplot3d,,,,,,, Page 5

polyhedra_supported, polyhedraplot, replot, rootlocus, semilogplot, setoptions, setoptions3d, spacecurve, sparsematrixplot, sphereplot, surfdata, textplot, textplot3d, tubeplot] readlib(mtaylor); proc()... end Nejdřve ten mtaylor, knihovna pro prci s rozvoji funkc vce proměnnch mtaylor(sin(x-y),{x,y,z}); 1 1 1 1 1 1 1 x y + + + + + 6 x3 2 yx2 2 y2 x 6 y3 120 x5 24 yx4 12 y2 x 3 1 12 y3 x 2 1 1 24 y4 x 120 y5 whattype(%); + Nyn vybran funkce z balku plots předevšm display zobraz uschovan vsledek malovn A:=plot(1-x^2/2,x=-1..1,numpoints=6,adaptive=false); B:=plot(cos(x),x=-1..1): A := PLOT( CURVES ( [[-1.,.5000000000000000], [-.5814946400000001,.8309319918256352],[ -.2173553639999999,.9763783228702138], [.1921573360000000,.9815377791106915],[.6043845520000002,.8173596566518795], [ 1.,.5000000000000000]], COLOUR ( RGB, 1.000,, )), AXESLABELS ("x", ), VIEW (-1... 1., DEFAULT )) display(a,b); Jak je vidět, použv Maple k uschovn obrzk reprezntaci zznamu pomoc symbolickch funkc, jejich seznam zjistme:?plot/structure a ještě se jim budeme věnovat Mnoho funkci z balku plots jsou jen zkratky za něco, co bychom asi zvldli sami complexplot(arctan(x-i/2),x=-1..1); # je zkratka za Page 6

plot([re(arctan(x-i/2)),im(arctan(x-i/2)),x=-1..1]); Nikoli ale contourplot, densityplot,... A:=contourplot( x^2-2*y^2+2*x*y,x=-2..2,y=-2..2,levels=[-1,0,1,-2,2]): B:=contourplot( x^2+2*y^2-2*x*y,x=-2..2,y=-2..2,levels=[1,2,3],filled=true,color ing=[red,yellow]): display(b,a); densityplot(sin(pi*x/y)*sin(pi*y/x),x=-1..1,y=-1..1,grid=[200,20 0],style=PATCHNOGRID); Page 7

?plot/options gradplot( sin(x*y)/(x^2+y^2+1),x=-2..2,y=-2..2); Page 8

#fieldplot( [y,-x],x=-2..2,y=-2..2); #fieldplot( map(t-diff('sin(x*y)/(x^2+y^2+1)',t),[x,y]),x=-2..2,y=-2..2); display( PLOT(CURVES([[0,0],[1,1],[2,1],[3,0]]),COLOR(RGB,1,0,1)) ); Page 9

Domc loha: modifikujte nsledujc řdky tak aby to kreslilo něco hezčho Nf:=33: Nt:=8: Nr:=10: q:=1.8: sfs:=(u,theta,phi)-([u*sin(theta)*cos(phi), u*sin(theta)*sin(phi), sqrt(u^2+1)*cos(theta)]); K1:=(r,t,f)-evalf(sfs((q*r/Nr),t/Nt*Pi,f/Nf*2*Pi)): K:=(r,t,f)-[K1(r-1,t,f-1),K1(r,t,f-1),K1(r,t,f,0),K1(r-1,t,f)]: S:=[ seq(seq(seq(k(u,t+1/2,f),f=1..nf),t=0..nt-1),u=1..nr) ]: sfs := ( u, θφ, ) [ u sin( θ ) cos( φ), u sin( θ ) sin( φ ), u 2 + 1 cos( θ) ] P:=PLOT3D(POLYGONS(op(S)), LIGHT(0,0,0.0,0.7,0.0), LIGHT(100,45,0.7,0.0,0.0), LIGHT(100,-45,0.0,0.0,0.7), AMBIENTLIGHT(0.2,0.2,0.0), STYLE(PATCH),COLOR(ZHUE),SCALING(CONSTRAINED)): display(p); Page 10

Page 11