% Sessione REDUCE Reduce (Free CSL version), 14-Apr-11 ... 1: off fancy; % per poter salvare la sessione in una forma leggibile 2: plot(sin x); 3: % caricare la funzione "taylorp" dal file 3: % http://www.dm.unibo.it/~achilles/calc/programmi/taylor.txt 3: % che e' stato salvato sul desktop 3: in "C:\Users\achilles\Desktop\taylor.txt"; algebraic procedure taylorp(f,c,n,ax,bx,ay,by); % Returns and plots the n-th Taylor polynomial centered at c % of a function f in the interval [ax, bx] with values in % the interval [ay, by]. begin scalar p; p:=taylor(f,x,c,n); p:=taylortostandard p; plotreset; plot(f,p,x=(ax .. bx),y=(ay .. by)); return p; end; taylorp end; 4: % plottare la il grafico della funzione sen(x) nell'intervallo [-3*pi, 3*pi] 4: % assieme al suo polinomio di Taylor di grado 2 (effettivamente di grado 1) 4: % e di centro 0 4: taylorp(sin x, 0, 2, -3*pi, 3*pi, -1, 1); x 5: % plottare il polinomio di Taylor di grado 13 5: taylorp(sin x, 0, 13, -3*pi, 3*pi, -1, 1); 12 10 8 6 4 2 (x*(x - 156*x + 17160*x - 1235520*x + 51891840*x - 1037836800*x + 6227020800))/6227020800 6: % il denominatore del polinomio e' 13 fattoriale: 6: factorial 13; 6227020800 7: % il polinomio di Taylor di grado 27 coincide bene con la funzione sen(x) 7: % nell'intervallo [-3*pi, 3*pi] 7: t27 := taylorp(sin x, 0, 27, -3*pi, 3*pi, -1, 1); 26 24 22 20 18 t27 := (x*( - x + 702*x - 421200*x + 213127200*x - 89513424000*x 16 14 12 + 30613591008000*x - 8326896754176000*x + 1748648318376960000*x 10 8 - 272789137666805760000*x + 30006805143348633600000*x 6 4 - 2160489970321101619200000*x + 90740578753486268006400000*x 2 - 1814811575069725360128000000*x + 10888869450418352160768000000))/10888\ 869450418352160768000000 8: % c'e' lo switch "rounded" per ottenere risultati numerici 8: on rounded; 9: t27; 26 24 22 x*( - 9.1836898638e-29*x + 6.44695028438e-26*x - 3.86817017063e-23*x 20 18 16 + 1.95729410634e-20*x - 8.22063524662e-18*x + 2.81145725435e-15*x 14 12 - 7.64716373182e-13*x + 0.000000000160590438368*x 10 8 6 - 0.0000000250521083854*x + 0.0000027557319224*x - 0.000198412698413*x 4 2 + 0.00833333333333*x - 0.166666666667*x + 1) 10: off rounded; % Sessione Octave % Esercizio 2 del foglio % http://www.dm.unibo.it/~achilles/calc/calc08-10-30.pdf % salvare "bisection.m" e "newton.m" sul desktop % http://www.dm.unibo.it/~achilles/calc/Programmi_CS4a/bisection.m % http://www.dm.unibo.it/~achilles/calc/Programmi_CS4a/newton.m 1> help bisection `bisection' is a function from the file C:\Documents and Settings\rudiger.achilles\desktop\bisection.m BISECTION Trova uno zero di una funzione. ZERO=BISECTION(FUN,A,B,TOL,NMAX) approssima uno zero della funzione FUN nell'intervallo [A,B] con il metodo di bisezione. FUN accetta come input uno scalare reale x e restituisce uno scalare reale. Se la ricerca dello zero di FUN fallisce, il programma restituisce un messaggio d'errore. FUN puo' essere una inline function, una anonymous function od una function definita in un M-file. ZERO=BISECTION(FUN,A,B,TOL,NMAX,P1,P2,...) passa i parametri P1, P2,... alla funzione FUN(X,P1,P2,...). [ZERO,RES,NITER]= BISECTION(FUN,...) restituisce il valore del residuo RES in ZERO ed il numero di iterazioni effettuate per calcolare il valore ZERO. Additional help for built-in functions and operators is available in the on-line version of the manual. Use the command `doc ' to search the manual index. Help and information about Octave is also available on the WWW at http://www.octave.org and via the help@octave.org mailing list. 2> f = inline('3*x - 4') f = f(x) = 3*x - 4 3> [zero, res, iter]= bisection(f, 1, 2, 1e-12, 1000) zero = 1.3333 res = -9.0949e-013 iter = 39 4> help newton `newton' is a function from the file C:\Documents and Settings\rudiger.achilles\desktop\newton.m NEWTON Trova uno zero di una funzione. ZERO=NEWTON(FUN,DFUN,X0,TOL,NMAX) approssima lo zero ZERO della funzione definita nella function FUN, continua e derivabile, usando il metodo di Newton e partendo da X0. FUN e la sua derivata DFUN accettano in ingresso uno scalare x e restituiscono un valore scalare. Se la ricerca dello zero fallisce, il programma restituisce un messaggio d'errore. FUN e DFUN possono essere inline function, anonymous function o function definite in M-file. ZERO=NEWTON(FUN,DFUN,X0,TOL,NMAX,P1,P2,...) passa i parametri P1,P2,... alle funzioni FUN(X,P1,P2,...) e DFUN(X,P1,P2,...). [ZERO,RES,NITER]= NEWTON(FUN,...) restituisce il valore del residuo RES in ZERO ed il numero di iterazioni NITER necessario per calcolare ZERO. Additional help for built-in functions and operators is available in the on-line version of the manual. Use the command `doc ' to search the manual index. Help and information about Octave is also available on the WWW at http://www.octave.org and via the help@octave.org mailing list. 5> df=inline('3', ' ') df = f( ) = 3 6> [z, residuo, niter] = newton(f, df, 2, 1e-12, 1000) z = 1.3333 residuo = 0 niter = 2 % ci aspettevamo niter = 1; per capire guardate il codice di newton.m, % in particolare il criterio di arresto