Borrar filtros
Borrar filtros

Plotting a function with different range of values for arguments

1 visualización (últimos 30 días)
I am trying to plot a function with two different inputs, so its two plots in one graph actually. There are some constants which I have predefined. The function I want to plot is
$f(k,|T|^2)(=|T|^2/|R|^2)=|(e^{ik}-e^{-ik})/(1+(\delta-e^{ik})(e^{ik}-\nu)|^2$
The plots to be produced are for k=pi/2 and k=-pi/2, so I predefined these things in the code. However, when I try to plot the function for T, I get error saying that Undefined function or variable 'T'. The code I wrote is:
clear all
v0=-2.5;
epsilon=0.05;
v1 = v0*(1+epsilon);
v2 = v0*(1-epsilon);
g = 1;
k=pi/2
l=-k
w=-2*cos(k)
w1=-2*cos(l)
nu=v2-w+g.*T.^2;
delta=v1-w+g.*T.^2.*(1-2.*nu*cos(k)+nu.^2);
nu1=v1-w1+g.*T.^2;
delta1=v2-w1+g.*T.^2.*(1-2.*nu*cos(k)+nu.^2);
fplot(@(T) abs((exp(i*k)-exp(-i*k))/(1+(nu-exp(i*k)).*(exp(i*k)-delta)))^2,[0,5],'b')
hold on
fplot(@(T) abs((exp(i*l)-exp(-i*l))/(1+(nu1-exp(i*l)).*(exp(i*l)-delta1)))^2,[0,5],'b')
hold off
So whats going wrong here? Secondly, is it the correct way for plotting functions which have an injected argument?
UPDATE
Ok this has been fixed by an ugly way with the following code: (Is there a better neater way to to do it?)
clear all
v0=-2.5;
epsilon=0.05;
v1 = v0*(1+epsilon);
v2 = v0*(1-epsilon);
g = 1;
T=[0:0.01:5];
k=pi/2
l=-k
w=-2*cos(k)
w1=-2*cos(l)
nu=v2-w+g.*T.^2;
delta=v1-w+g.*T.^2.*(1-2.*nu*cos(k)+nu.^2);
nu1=v1-w1+g.*T.^2;
delta1=v2-w1+g.*T.^2.*(1-2.*nu*cos(k)+nu.^2);
ftn1=abs((exp(i*k)-exp(-i*k))./(1+(nu-exp(i*k)).*(exp(i*k)-delta))).^2;
ftn2=abs((exp(i*l)-exp(-i*l))./(1+(nu1-exp(i*l)).*(exp(i*l)-delta1))).^2;
plot(T,ftn1,T,ftn2)

Respuesta aceptada

Walter Roberson
Walter Roberson el 5 de Nov. de 2018
nu = @(T) v2-w+g.*T.^2;
delta = @(T) v1-w+g.*T.^2.*(1-2.*nu(T)*cos(k)+nu(T).^2);
nu1 = @(T) v1-w1+g.*T.^2;
delta1 = @(T) v2-w1+g.*T.^2.*(1-2.*nu(T)*cos(k)+nu(T).^2);
fplot(@(T) abs((exp(i*k)-exp(-i*k))/(1+(nu(T)-exp(i*k)).*(exp(i*k)-delta(T))))^2,[0,5],'b')
hold on
fplot(@(T) abs((exp(i*l)-exp(-i*l))/(1+(nu1(T)-exp(i*l)).*(exp(i*l)-delta1(T))))^2,[0,5],'b')
hold off

Más respuestas (0)

Categorías

Más información sobre MATLAB en Help Center y File Exchange.

Productos


Versión

R2014a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by