[MatLab, Progetto Matlab Aiuto]

Antonio933
Salve ragazzi ho questo progetto da fare entro martedì volevo un aiuto da parte vostra come impostarlo cioè non ho capito ho questa funzione combinando con x<0 e x>0 cosa dovrei fare ragazzi ???? chi mi aiuta ?? Non voglio sapere i punti come si fanno perchè li so fare (credo) non riesco ad impostare la funzione cioè
la mia funref= .... e che significa che devo combinarla con x>0 e x>0 per poi fare gli altri punti...

Perchè ho sempre fatto questo tipo di esercizio che il prof mi dava la funzione di riferimento ed io svolgevo i punti ora con sto x<0 e x>0 non so proprio da dove iniziare...


Risposte
apatriarca
Il metodo più semplice è probabilmente quello di scrivere una funzione in un file separato che faccia uso di if o indicizzazione tramite le condizioni. Se proprio vuoi usare delle funzioni anonime allora devi usare qualche "trucco". Una soluzione potrebbe essere la seguente:
funref = @(x) (x >= 0).*(x.*x - 1) - (x > 0).*cos(2*x);

Il codice sfrutta la conversione automatica da valore booleani (logical) a valori reali (double). Avremo cioè che le due condizioni sono uguali a zero quando sono false e a uno quando sono vere. Possono quindi essere usate per attivare/disattivare parti della espressione in quel modo.

Antonio933
Ma scusa la mia funrif non deve essere funrif= @(x) (e^(-x)3.*x-pi/2)+2 .......

non posso contattarti in maniera diretta tramite skype o altro ?? Perchè se non riesco ad impostare la funzione non posso iniziare nulla :(

apatriarca
Ero convinto di averti risposto ma a quanto pare non l'ho fatto. Le componenti che mancano vanno semplicemente sommate all'espressione che ho scritto.. Non le avevo inserite in quanto l'esercizio ti lascia libero di scegliere quali di quelle funzioni usare e per quali valori moltiplicarle.. C'è qualcos'altro che non ti è chiaro?

Antonio933
Ah quindi dovrei fare una cosa di questo tipo

funrif= @(x) (e^(-x)3.*x-pi/2) più le altre funzioni iniziali che sommo ecc.. poi ci metto affianco (x >= 0).*(x.*x - 1) - (x > 0).*cos(2*x);
Dovrebbe essere così ?? non l'ho mai fatto scusa xD

Ah una cosa mi puoi scrivere la funzione iniziale sommando le 3 funzioni voglio vedere se l'ho scritta bene in matlab scusa ma sono all'inizio!

apatriarca
Devi scrivere qualcosa di simile al seguente codice in cui ho inserito tutte le funzioni.
f1 = @(x) exp(-x)*sin(3*x - 0.5*pi);
f2 = @(x) sin(2*x)/(1 + 3*x.^2);
f3 = @(x) (1 - exp(-x)).*cos(3*x);
f4 = @(x) (x >= 0).*(x.^2 - 1) - (x > 0).*cos(2*x);
funrif = @(x) 2*f1(x) - f2(x) + 3*f3(x) + f4(x);

Per comodità ho definito tutte le funzioni separatamente per poi sommarle all'interno di funrif.

Antonio933
Ah capito grazie mille domani mattina provo con i vari grafici ecc vedo che funzione mi esce xD

Grazie mille Moderatore gentilissimo nel caso continuiamo la discussione domani se qualcosa dovesse andare storto ??? non mi abbandoni confido in lei Ahahahaha


Ho provato ora a fare come mi hai detto tu mi da questo errore


apatriarca
Scusa, non ho provato il codice prima di postarlo. In questo momento sono sul cellulare e ho difficoltà a scrivere il codice, ma il problema è che alcuni * devono essere convertiti in .*

Antonio933
Ciao scusami nel codice delle funzioni mi hai scritto x>=0 e poi x>0 è un errore hai sbagliato giusto ??? è la prima x<=0 e la seconda x>0 Giusto ?



La mia funzione vedi va bene così oppure non è giusta ???


http://s16.imagestime.com/out.php/i1116 ... agine4.png


Ma è giusto trovare le ascisse a -15 ecc... ?? Non lo so vedo la funzione un pò strana tu che dici ???

Poi una cosa dovrei calcolare la derivata della mia funzione come dovrei fare ??

apatriarca
Si, ho sbagliato a scrivere. Le condizioni devono essere quelle scritte nel testo dell'esercizio.. Quindi x <= 0 e x > 0. Credo che la funzione sia giusta. Le costanti le puoi cambiare per ottenere forme diverse da quella da te ottenuta. Sarebbe per esempio meglio cercare di avere massimi/minimi/zeri.. più evidenti nel grafico. La derivata si ottiene per linearità. Devi cioè calcolare la derivata di ogni parte della funzione e quindi sommarle. Nel caso della funzione a pezzi la derivata sarà uguale a quella di ognuna delle sue parti separatamente ma il punto x=0 andrà studiato a parte.. Ma tutto questo non ha ovviamente nulla a che fare con Matlab..

Antonio933
Mi servirebbe la derivata per implementare la funzione di Newton




Mi servirebbe una mano per alcuni punti io ho un progetto già svolto e dovrei solo modificarlo se mi puoi dare una mano in maniera diretta te ne sarei veramente grato non so tramite skype.. Ti prego

apatriarca
Non ho tempo per mettermi a risolvere l'esercizio per te. Il calcolo della derivata non ha nulla a che fare con Matlab, ma è un semplice problema di analisi matematica. Se hai difficoltà puoi sempre usare qualcosa come Wolfram Alpha. L'unica potenzialmente complicata è la funzione definita a tratti. In questo caso hai che la derivata per \(x < 0\) è \(2\,x\) e quella per \(x > 0\) è \( 2\,\sin(2\,x). \) Per \(x = 0\) le due funzioni coincidono e sono uguali a zero.

ghisirds
Ciao a tutti,
prova a scrivere quello che dice Antonio.
Dovrebbe essere corretto.
Saluti a tutti.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.