Creazione tabelle MATLAB

Messaggioda Controllore » 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!
Controllore
Junior Member
Junior Member
 
Messaggio: 179 di 382
Iscritto il: 02/02/2011, 09:05

Re: Creazione tabelle MATLAB

Messaggioda Raptorista » 18/01/2017, 20:51

No che non è corretto, hai provato a farlo girare?
Un matematico ha scritto:... come mia nonna che vuole da anni il sistema per vincere al lotto e crede che io, in quanto matematico, sia fallito perché non glielo trovo


Immagine
Avatar utente
Raptorista
Moderatore
Moderatore
 
Messaggio: 4131 di 9616
Iscritto il: 28/09/2008, 19:58

Re: Creazione tabelle MATLAB

Messaggioda Controllore » 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!
Controllore
Junior Member
Junior Member
 
Messaggio: 180 di 382
Iscritto il: 02/02/2011, 09:05

Re: Creazione tabelle MATLAB

Messaggioda Raptorista » 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...
Un matematico ha scritto:... come mia nonna che vuole da anni il sistema per vincere al lotto e crede che io, in quanto matematico, sia fallito perché non glielo trovo


Immagine
Avatar utente
Raptorista
Moderatore
Moderatore
 
Messaggio: 4132 di 9616
Iscritto il: 28/09/2008, 19:58

Re: Creazione tabelle MATLAB

Messaggioda Controllore » 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!
Controllore
Junior Member
Junior Member
 
Messaggio: 181 di 382
Iscritto il: 02/02/2011, 09:05

Re: Creazione tabelle MATLAB

Messaggioda Raptorista » 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?
Un matematico ha scritto:... come mia nonna che vuole da anni il sistema per vincere al lotto e crede che io, in quanto matematico, sia fallito perché non glielo trovo


Immagine
Avatar utente
Raptorista
Moderatore
Moderatore
 
Messaggio: 4133 di 9616
Iscritto il: 28/09/2008, 19:58

Re: Creazione tabelle MATLAB

Messaggioda Controllore » 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:
Controllore
Junior Member
Junior Member
 
Messaggio: 182 di 382
Iscritto il: 02/02/2011, 09:05

Re: Creazione tabelle MATLAB

Messaggioda Raptorista » 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?
Un matematico ha scritto:... come mia nonna che vuole da anni il sistema per vincere al lotto e crede che io, in quanto matematico, sia fallito perché non glielo trovo


Immagine
Avatar utente
Raptorista
Moderatore
Moderatore
 
Messaggio: 4134 di 9616
Iscritto il: 28/09/2008, 19:58

Re: Creazione tabelle MATLAB

Messaggioda Controllore » 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.
Controllore
Junior Member
Junior Member
 
Messaggio: 183 di 382
Iscritto il: 02/02/2011, 09:05

Re: Creazione tabelle MATLAB

Messaggioda Raptorista » 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.
Un matematico ha scritto:... come mia nonna che vuole da anni il sistema per vincere al lotto e crede che io, in quanto matematico, sia fallito perché non glielo trovo


Immagine
Avatar utente
Raptorista
Moderatore
Moderatore
 
Messaggio: 4135 di 9616
Iscritto il: 28/09/2008, 19:58

Prossimo

Torna a Analisi Numerica e Ricerca Operativa

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite