Plotting a function with different range of values for arguments

3 次查看(过去 30 天)
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)

采纳的回答

Walter Roberson
Walter Roberson 2018-11-5
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

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 MATLAB 的更多信息

产品


版本

R2014a

Community Treasure Hunt

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

Start Hunting!

Translated by