Def. di una funzione in due parti del suo dominio in matlab
ho un problema, nello scrivere la funzione che segue:
voglio una funzione che valga x^2 tra -1 e 0, x+sin(100*x) tra 0 e 1, e 0 altrove.
quello che ho scritto è:
però poi quando voglio fare il grafico, scrivendo:
x=-10:.1:10;
plot(x,fun(x))
vedo che la funzione vale sempre x+sin(100*x).
dove sbaglio?[/code]
voglio una funzione che valga x^2 tra -1 e 0, x+sin(100*x) tra 0 e 1, e 0 altrove.
quello che ho scritto è:
function [f] = fun(x); if (x <= -1) + (x >= 1) >0 f=0; elseif x < 0 f =x.^2; else f =x+sin(100*x); end
però poi quando voglio fare il grafico, scrivendo:
x=-10:.1:10;
plot(x,fun(x))
vedo che la funzione vale sempre x+sin(100*x).
dove sbaglio?[/code]
Risposte
Tutto il tuo codice è sbagliato intanto passi x come vettore ma non lo usi come tale quindi ho aggiunto un for poi le condizioni per gli intervalli sono sbagliate ecco il codice corretto
function f = fun(x); f=[]; for i=1:length(x) if ((x(i) >= -1) && (x(i) <=0 )) f =[f,x(i)^2]; elseif ((x(i) > 0)&&(x(i)<=1)) f =[f,x(i)+sin(100*x(i))]; else f=[f,0]; end; end;