x_message(['Approssimazione di derivate con';... 'formule alle differenze finite.';' ';... ' ';' '; ... 'Ver 2.1 (2/2/2004)']) pi=atan (1)*4; //Calcolo valori derivate numeriche n=x_choose(['funzione 1';'funzione 2'; 'funzione 3'],['Scegli la funzione ']); select n, case 1 then function y=f(x),y=sin(x*pi), endfunction; case 2 then function y=f(x),y=x.*cos((x*pi)^2), endfunction, case 3 then function y=f(x),y=-x^5+x^3, endfunction, end n=x_choose(['formula 1';'formula 2';'formula 3';'formula 4'],['Scegli al formula alle differenze finite']); x=evstr(x_dialog('inserire valore di x ','0.0')); cont="Y"; while cont=="Y" dx=evstr(x_dialog('inserire valore di dx ','0.0')); select n, case 1 then dfn=(f(x)-f(x-dx))/(dx);, case 2 then dfn=(f(x-2*dx)-8*f(x-dx)+8*f(x+dx)-f(x+2*dx))/(12*dx);, case 3 then dfn=(f(x+dx)-f(x-dx))/(2*dx);, case 4 then dfn=(-3*f(x)+4*f(x+dx)-f(x+2*dx))/(2*dx);, end testo(1)=strcat( ['Risultato numerico:']); testo(3)=strcat( ['Valore calcolato della derivata:' string(dfn(1))]); x_message(testo); cont=x_dialog('Altra valutazione','Y'); end quit;