Passa al tema normale
Discussioni su Analisi Numerica e Ricerca Operativa

Regole del forum

Consulta il nostro regolamento e la guida per scrivere le formule
Rispondi al messaggio

Creazione tabelle MATLAB

18/01/2017, 16:26

Ciao ragazzi,
vi scrivo perché sto facendo un esercizio di preparazione all'esame e recita così:

"Scrivere una funzione Matlab che data la funzione f(x)=ln(x), ed un punto x, calcoli le approssimazioni di f'(x) date da: $ D_h(x)= (f(x+h)-f(x))/h $ per $ h=10^(-i), i=1,2,...,16 $.
Il programma deve visualizzare in una tabella, per ogni valore di f, il corrispondente valore $ D_h(x) $ e l'errore assoluto $ e_h=|f'(x)-D_h(x)| $ .
a) Utilizzare tale script per approssimare la derivata di ln(x) in x=0.1,1,10,100. Quale è in ciascuno dei casi il valore di h ottimale?"

Premettendo che è veramente da poco che uso Matlab, ho provato a buttare giù uno script ed ho scritto questo:

function [ y ] = Dh( x )
for k=1:16
h=10^-(k);
end
y=(log(x+h)-log(x))/h;
end

Secondo voi può essere corretto? Come faccio a visualizzare in una tabella quello che mi si richiede?

Scusate il disturbo, spero sia comprensibile!

Re: Creazione tabelle MATLAB

18/01/2017, 20:51

No che non è corretto, hai provato a farlo girare?

Re: Creazione tabelle MATLAB

18/01/2017, 21:17

Ciao Raptorista, innanzitutto grazie per la risposta! Sì, ho provato dando dei valori a Dh scrivendo, ad esempio, Dh(3) e mi restituisce "0" per ogni numero che ci metto. Sto imparando pian piano ad usare Matlab e gli altri esercizi che ho provato a fare mi tornano, ma di questo non ci capisco niente! Io solitamente faccio così:
Scrivo lo script della funzione e poi la copio in un nuovo editor e faccio il grafico. Ho fatto questa cosa anche per questo script scrivendo questo in un nuovo editor:


x=linspace(-2,2,100000);
[ y ] = Dh( x );
plot(x,y)


Mi restituisce un grafico simile alla retta y=0 con valori infiniti intorno ad x=0.

Non capisco come sia possibile questa cosa e dove sbaglio, potresti darmi una mano? Scusa il disturbo, ti ringrazio!

Re: Creazione tabelle MATLAB

18/01/2017, 22:21

Questa non è una questione di conoscenza dello specifico linguaggio: in quelle due righe c'è un errore banale che si vede ad occhio!
Tra l'altro, dovresti già essertene accorto dal fatto che ricevi in output solo una funzione...

Re: Creazione tabelle MATLAB

18/01/2017, 23:15

Allora forse devo mettere in output anche h? Il mio problema è che non faccio informatica e non ho mai avuto a che fare con queste cose. Grazie ancora Raptorista!

Re: Creazione tabelle MATLAB

19/01/2017, 09:46

Controllore ha scritto:Allora forse devo mettere in output anche h?

Certo, io aggiungerei anche D in output, e magari un paio di parentesi ed una ragazza in bikini, che non fanno mai male.
Ti spiace fare uno sforzo di testa prima che di dita? XD

Che tipo di oggetto deve costruire la funzione Dh?

Re: Creazione tabelle MATLAB

19/01/2017, 10:12

:D :D :D :D La ragazza in bikini sarebbe il massimo :D :D :D :D
A parte le battute, ho provato a ragionare su quello che mi hai detto ed il mio ragionamento (per quanto possa essere sbagliato), è questo:
La mia funzione y dipende da due variabili, ovverosia x ed h. Per quanto riguarda la x, non dovrebbe esserci niente di sbagliato in quanto quando vado a far lavorare la funzione su un altro editor metto il dominio della x stessa. Pensandoci però in input ho messo solo x senza metterci anche h, e forse è questo il mio errore.

Ho provato a fare in questo modo che ho appena descritto, mettendo anche il dominio di h nello script in cui faccio girare la funzione, ma la situazione rimane analoga. Posto qui quello che ho fatto:

function [ y ] = Dh( x,h )
for k=1:16
h=10^-(k);
end
y=(log(x+h)-log(x))/h;
end


Nello script in cui faccio girare la funzione, invece:

x=linspace(-2,2,100000);
h=-100:0.01:100;
[ y ] = Dh( x,h );
plot(x,y)

La situazione rimane la solita, eppure ho provato a ragionarci! Sono pochi giorni che uso Matlab e non ho mai fatto niente di programmazione in quanto sto facendo il corso magistrale di Ingegneria Civile, non so usare questi programmi.

Adesso però mi viene un altro dubbio: se metto due variabili in ingresso (x ed h) e faccio plot(x,y), non ottengo il grafico corretto anche se lo script fosse giusto, vero?


Per rispondere a quanto mi hai chiesto, Dh deve costruire uno scalare ed io in input ho messo dei vettori. Forse il problema, ora che ci penso, potrebbe essere questo :roll:

Re: Creazione tabelle MATLAB

19/01/2017, 10:16

Tu continui a non ascoltarmi, ed io prima o poi mi stuferò di risponderti:
Raptorista ha scritto:Che tipo di oggetto deve costruire la funzione Dh?

Re: Creazione tabelle MATLAB

19/01/2017, 10:36

Capisco che tu possa stufarti, però non sto facendo lo stupido volontariamente. La funzione deve approssimare la derivata di ln(X) e per farlo ha bisogno di una serie di punti di h.

Re: Creazione tabelle MATLAB

19/01/2017, 10:43

Non sto dicendo che fai lo stupido volontariamente, né che tu effettivamente lo sia, ma solo che non ti stai concentrando abbastanza!

Raptorista ha scritto:Che tipo di oggetto deve costruire la funzione Dh?
1. Uno scalare
2. Un vettore
3. Una matrice


Togli h come parametro della funzione che è evidentemente inutile, il primo passo dev'essere di chiamare
Codice:
[ y ] = Dh( 1 )

ottenendo il risultato corretto.
Rispondi al messaggio


Skuola.net News è una testata giornalistica iscritta al Registro degli Operatori della Comunicazione.
Registrazione: n° 20792 del 23/12/2010.
©2000— Skuola Network s.r.l. Tutti i diritti riservati. — P.I. 10404470014.