12.07.2015 Views

Exemple examen pràctic

Exemple examen pràctic

Exemple examen pràctic

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Pràctica 1 11 Examen 2Construiu un procedure per trobar zeros de funcions usant el mètode de la secant i useu–loper trobar totes les solucions d’una funció donada. Feu també un dibuix de la gràfica de lafunció que volem estudiar junt amb una recta que mostri l’aplicació del mètode de la secant.Dades d’entrada: La funció, un interval on es troba un únic zero de la funció, un nombre màximd’iterats a realitzar, i un epsilon per determinar si ja tenim una solució acceptable.Dades de sortida: El zero de la funció.Problema a resoldre:Pels alumnes de la primera fila:(0.1x 2 + 2x − 60 + 31 sin(x))/(x + 10) = 0Pels alumnes de la segona fila:(5 sin(x) + ln(x 2 ))/(x + 5) = 0Pels alumnes de la tercera fila:(ln(|5 sin(x) + 0.1x 2 |) − 1)/(x + 6) = 0Recordatori del mètode:Donada una funció f(x) i un interval [a, b] tal que f(a)f(b) < 0 i hi hagi un únic zero, en lloc delmètode de Newton, podem usar el mètode de la secant que ens estalvia de calcular la derivada de la funció.Per això prenem dos punts (x n−1 , f(x n−1 )) i (x n , f(x n )) (inicialment poden ser els extrems de l’interval),calculem la recta que passa per ells, i busquem on aquesta recta intersecta l’eix de les x. Prenem aquestpunt com a nou element de la succeció x n+1 . Tot això es pot calcular directament amb l’expressió:x n+1 = x n −x n − x n−1f(x n ) − f(x n−1 ) f(x n).Us recordem també que donats dos punts (x n−1 , f(x n−1 )) i (x n , f(x n )) la recta que passa per tots doscompleix:y − f(x n )f(x n ) − f(x n−1 ) = x − x n.x n − x n−1Nota: Per fer aparèixer el dibuix a cada iteració cal posar la instrucció “plot” dins d’un “print”.Coses que podeu necessitar del Maple:Us recordem que podem trencar un bucle abans d’hora amb “break” que pot estar condicionat a un“if”. Com per exemple amb una comanda dins del “do”> if (dif


2 Curs pràctic de MapleForma d’entrega: Guardeu el fitxer Maple posant com a nom del mateix el vostre DNI, i graveu–loen el disquet que se us entrega. Podeu afegir tots els comentaris i descripcions que cregueu necessaris.Restriccions: Teniu aquí descrita tota la informació que us cal per fer el programa. No es permet usarapunts, ni cap mena de suport magnètic. L’únic programa que ha d’estar activat en el vostre ordinador ésel Maple i aquesta pàgina. Us hem inclos al final de l’<strong>examen</strong> la pràctica de zeros de funcions per si voleuconsultar-la i fins i tot agafar algun tros d’ella. Si detectem que esteu fent ús de qualsevol element de laxarxa aliè al Maple (navegadors, discos, mail, etc.) sereu expulsats de l’<strong>examen</strong>. Igualment us recordemque esteu en un <strong>examen</strong> individual, així que s’exigeix silenci i que cadascú es dediqui exclusivament a laseva pantalla.


Pràctica 2 32 Zeros de FuncionsEl Maple disposa de moltes eines per trobar zeros de funcions. Fem una descripció d’algunes d’elles.<strong>Exemple</strong> 2.1Si volem calcular els zeros d’un polinomi senzill ho podem fer amb:> p:=x^2+3*x-1;> solve(p=0);Veiem com el Maple ens dóna la solució algebraica del problema.<strong>Exemple</strong> 2.2De fet, coneix la fórmula general, així que podrà resoldre qualsevol equació de segon grau:> p:=a*x^2+b*x+c;> solve(p=0,x);Aquí ha calgut especificar que volíem resoldre el problema respecte a la variable x doncs de no posar–ho,es queixaria d’excès de variables.<strong>Exemple</strong> 2.3També coneix la fórmula general de la fórmula de tercer grau i de quart:> p:=a*x^3+b*x^2+c*x+d;> solve(p=0,x);I ja surt un petit monstre. Eviteu de provar la de quart grau en general doncs sortirà molt gran.Provem alguns exemples concrets:> p:=x^3-5*x^2+3*x+1;> solve(p=0);Veiem que obtenim unes expressions algebraiques i que si volem saber el seu valor cal passar–les anumèric amb:> evalf(%);Això pot ser quasi imprescindible en solucions algebraicament complicades com> p:=x^3-2*x^2+3*x+1;> solve(p=0);> evalf(%);on de pas veiem que el Maple també ens dóna les solucions complexes del polinomi.Per polinomis de grau 4, el Maple té parametritzat de no escriure l’expressió algebraica, però el podemforçar a fer–ho amb> _EnvExplicit:=true;D’on:> p:=(x-10)*(x-2)*(x-3)*(x-4)-1;> solve(p=0);> evalf(%);Veiem aquí com el Maple pot donar una solució algebraicament correcte, però en quan li demanem elseu valor numèric apareixen uns errors que ens fan pensar que sigui nombres complexes. Hem de saberreconèixer aquest valors com a reals fent si cal un parell de comprovacions:> plot(p,x=0..12,y=);<strong>Exemple</strong> 2.4Però el Maple deixa de donar resultats algebraics per la majoria de polinomis de grau igual o superior a5:> p:=x^5+2*x^4+x^3-5*x^2+3*x+1;> solve(p=0);


4 Curs pràctic de Mapledoncs ja és conegut en matemàtiques que no existeixen fórmules que donin les solucions algebraiquesa aquests problemes.De totes maneres, podem trobar les solucions numèriques a aquest problema doncs el propi Maple hadonat la solució usant un altre funció interna pròpia com és “RootOf”:> evalf(%);<strong>Exemple</strong> 2.5Si només ens interessen les solucions reals podem usar una variació de la funció:> p:=x^5+2*x^4+x^3-5*x^2+3*x+1;> fsolve(p=0);Ho podem confirmar amb un altre exemple:> p:=(x-1)*(x-2)*(x-3)*(x-4)*(x-5);> fsolve(p=0);<strong>Exemple</strong> 2.6La funció “solve” no es limita a resoldre polinomis. També pot tractar amb funcions generals encara queamb algunes limitacions.> p:=x-exp(-x);> solve(p=0);> evalf(%);Ens dóna la solució en termes de la funció de LambertW però això ens diu poca cosa fins que nodemanen el seu valor numèric.Un altre exemple:> p:=x-cos(x);> fsolve(p=0);> evalf(%);O també:> p:=x-4*sin(x);> fsolve(p=0);> evalf(%);Pero compte doncs quan treballem amb funcions no polinomials, el Maple es limita a donar–nos unaúnica solució, possiblement la més trivial, i en pot oblidar d’altres. Per tant, en aquests casos és convenientfer primer una gràfica o un estudi de la funció per saber quantes solucions poden haver–hi> plot(x-cos(x),x=-3..3);En aquest cas veiem que en l’interval (−3, 3) només hi ha una solució i un senzill raonament ens permetassegurar que no n’hi poden haver–hi més doncs la funció cos(x) no pot capgirar el valor de x fora d’aquestinterval. Sense un raonament similar, mai podrem estar segurs de què no hi hagin més solucions.En el cas del sinus que ens donava una solució trivial tenim que> plot(x-4*sin(x),x=-3..3);la gràfica ens diu clarament que existeixen solucions no trivials. La funció “fsolve” la pot trobar si liindiquem l’interval on l’ha de buscar> fsolve(p=0,x=2..3);Si busquem una situació una mica més complicada com> p:=x-8*sin(x);> plot(p,x=0..10);en què tenim dues arrels molt properes, podem donar un interval que les inclogui a les dues obtenintnomés una de les solucions.> fsolve(p=0,x=6..8);Determinem si es tracta de la primera o segona arrel de l’interval calculant el pendent:> evalf(subs(x=%,diff(p,x)));


Pràctica 2 5I un cop ja veiem que es tracta de la segona, podem proposar un interval que ja no la contingui> fsolve(p=0,x=6..7.95);i ens doni l’arrel que falta.De totes maneres, aquest procès portat a l’extrem de dubtar entre si tenim dues arrels molt juntes, ouna de doble, o cap arrel real a prop de l’extrem, ens obligarà de fer un estudi algebraic o numèric perdeterminar–ho.De totes maneres, tot i que ja veiem que el maple solet pot trobar les arrels de pràcticament qualsevolfunció, no està de més que sapiguem programar un mètode de Newton per si ens cal en un moment concret.<strong>Exemple</strong> 2.7Proposem–nos un exercici concret i preparem totes les dades:> p:=x->x-8*sin(x);> x0:=3;> n:=10;> eps:=0.00001;I ara fem un mètode de Newton> z:=array(1..n+1);> z[1]:=x0;> for i from 1 to n do> z[i+1]:=evalf(z[i]-p(z[i])/subs(y=z[i],diff(p(y),y)));> dif:=abs(z[i+1]-z[i]);> print(z[i+1],dif,p(z[i+1]));> if (dif end do;i un cop comprovat que funciona, ho fiquem tot dins un procedure> newton:=proc(p,x0,n,eps)> local i,dif,z;> z:=array[1..n+1];> z[1]:=x0;> for i from 1 to n do> z[i+1]:=evalf(z[i]-p(z[i])/subs(y=z[i],diff(p(y),y)));> dif:=abs(z[i+1]-z[i]);> print(z[i+1],dif,p(z[i+1]));> if (dif end do;> end> proc;<strong>Exemple</strong> 2.8Juguem ara una mica amb aquest procedure> p:=x->x/10-sin(2*x);> plot(p(x),x=0..12);> newton(p,2,10,eps);> newton(p,3,10,eps);> newton(p,4,10,eps);> newton(p,4,20,eps);Fem un dibuix de la gràfica i del mètode de Newton per entendre–ho millor:> z:=4;pp:=subs(x=z,diff(p(x),x));> plot({p(x),pp*x+p(z)-pp*z},x=0..12);I anem prenent com a z els diferents valors que obtenim del mètode de Newton, canviant si cal l’intervalde visió.Provem ara amb d’altres punts inicials> newton(p,6,10,eps);> newton(p,8,10,eps);> newton(p,8.1,10,eps);> newton(p,8.4,10,eps);> newton(p,9,10,eps);


6 Curs pràctic de MapleVeiem un altre problema típic:> p:=x->x^4-7*x^3+18*x^2-20*x+8;> plot(p(x),x=0..3);> newton(p,0,10,eps);> newton(p,3,30,eps);> newton(p,4,30,eps);I un altre:> p:=x->arctan(x);> plot(p(x),x=-4..4);> newton(p,1,10,eps);> newton(p,1.35,10,eps);> newton(p,1.39,30,eps);> newton(p,1.4,30,eps);Exercici 2.1Determineu per a quin valor de x es produeix la bifurcació entre que el problema anterior convergeixi ono.Exercici 2.2Trobeu el zero de arctan(10x + cos(x)).Exercici 2.3Determineu tots els zeros de la funció x/12 − cos(x) + 4.Exercici 2.4Determineu totes les arrels positives de l’equació x = tan(x) amb 4 decimals de precissió.<strong>Exemple</strong> 2.9Maple sap trobar directament les successions de Sturm d’un polinomi i el nombre d’arrels entre dospunts.> p:=(x-1)*(x-2)*(x-3)*(x-4)*(x-5)+1/10;> sturmseq(p,x);> sturm(p,x,1,5);I en cas que hi hagi arrels múltiples, ja s’encarrega de donar la successió definitiva> p:=(x-1)*(x-2)*(x-3)^2*(x-4)*(x-5)^3;> sturmseq(p,x);I també podem trobar el màxim comú divisor entre dos polinomis usant> gcd(p,diff(p,x));També podem resoldre sistemes d’equacions, però potser millor primer aprenem a dibuixar gràfiquesde funcions en dues variables.<strong>Exemple</strong> 2.10Per dibuixar amb una sola instrucció la gràfica d’un cercle com x 2 + y 2 = 1 cal fer el que s’anomena un“implicit plot”. Aquesta instrucció no està en el paquet bàsic sinó que cal carregar–ne un de nou:> with(plots);I ara ja podem dibuixar> implicitplot(x^2+y^2=1,x=-1..1,y=-1..1);També podem dibuixar dues funcions al mateix temps, per exemple dues el·lipses que s’intersecten> implicitplot({x^2+2*y^2=1,2*x^2+y^2=1},x=-1..1,y=-1..1);La qualitat del dibuix pot no ser del tot satisfactòria per funcions més complicades, i sempre pot passarque no veiem tot el que pugui ser interessant depenent de l’escala que fem servir:


Pràctica 2 7> implicitplot({x^3+3*x^2*y+3*x*y^2+3*y^3+5*x^2-2*x*y+2*y^2+x-y-2=0,> -x^3+2*x^2*y-2*x*y^2-2*y^3+4*x^2+2*x*y+4*y^2+3*x-2*y=0},x=-1..1,y=-1..1);> implicitplot({x^3+3*x^2*y+3*x*y^2+3*y^3+5*x^2-2*x*y+2*y^2+x-y-2=0,> -x^3+2*x^2*y-2*x*y^2-2*y^3+4*x^2+2*x*y+4*y^2+3*x-2*y=0},x=-0.1..0.1,y=-0.1..0.1);> implicitplot({x^3+3*x^2*y+3*x*y^2+3*y^3+5*x^2-2*x*y+2*y^2+x-y-2=0,> -x^3+2*x^2*y-2*x*y^2-2*y^3+4*x^2+2*x*y+4*y^2+3*x-2*y=0},x=-10..10,y=-10..10);> implicitplot({x^3+3*x^2*y+3*x*y^2+3*y^3+5*x^2-2*x*y+2*y^2+x-y-2=0,> -x^3+2*x^2*y-2*x*y^2-2*y^3+4*x^2+2*x*y+4*y^2+3*x-2*y=0},x=-100..100,y=-100..100);De fet, sense un estudi profund del sistema, mai podrem estar segurs de si el dibuix que estem veientens amaga quelcom interessant o no.Ara que ja sabem el que busquem quan resolem un sistema de dues equacions amb dues incògnites,busquem–les.<strong>Exemple</strong> 2.11Resolem el primer sistema amb les dues el·lipses:> fsolve({x^2+2*y^2=1,2*x^2+y^2=1});Veiem que només ens dóna una solució. Podem buscar la resta fixant un punt inicial des d’on volemque comenci a iterar:> fsolve({x^2+2*y^2=1,2*x^2+y^2=1},{x=-1,y=-1});> fsolve({x^2+2*y^2=1,2*x^2+y^2=1},{x=-1,y=1});> fsolve({x^2+2*y^2=1,2*x^2+y^2=1},{x=1,y=-1});I fem–ho ara amb l’exemple complicat> fsolve({x^3+3*x^2*y+3*x*y^2+3*y^3+5*x^2-2*x*y+2*y^2+x-y-2=0,> -x^3+2*x^2*y-2*x*y^2-2*y^3+4*x^2+2*x*y+4*y^2+3*x-2*y=0},{x=-1,y=1});> fsolve({x^3+3*x^2*y+3*x*y^2+3*y^3+5*x^2-2*x*y+2*y^2+x-y-2=0,> -x^3+2*x^2*y-2*x*y^2-2*y^3+4*x^2+2*x*y+4*y^2+3*x-2*y=0},{x=1,y=1});> fsolve({x^3+3*x^2*y+3*x*y^2+3*y^3+5*x^2-2*x*y+2*y^2+x-y-2=0,> -x^3+2*x^2*y-2*x*y^2-2*y^3+4*x^2+2*x*y+4*y^2+3*x-2*y=0},{x=1,y=2});

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!