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);
endperò 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;