m=0;
k0 = 1; la0 = 2*pi/k0; a = 0.3;
ec = 2.2^2; es = 1.7^2; ef = -4;
pc = ef/ec; ps = ef/es;
tol = 1e-12;
bsinf = sqrt(ef*es/(ef+es));
x = linspace(-3,3,601)*a;
plot(x/a, real(Hy), linewidth,2);
function [be,E] = pwga(la0,ef,ec,es, a, bsinf, m, tol);
ga = sqrt(be^2-ef); as = sqrt(be^2-es); ac = sqrt(be^2-ec);
psi = atanh(-pc*ac/ga)/2- atanh(-ps*as/ga)/2
Hy = cosh(ga*a - psi).*exp(as*(x+a)).*(x<-a) + ...
cosh(ga*a + psi).*exp(-ac*(x-a)).*(x>a) + ...
cosh(ga*x + psi).*(abs(x)<=a);
end
pl plot the following

8 Comments

You can save your function:
  • In a function file which contains only function definitions. The name of the file must match the name of the first function in the file.
  • In a script file which contains commands and function definitions. Functions must be at the end of the file. Script files cannot have the same name as a function in the file. Functions are supported in scripts in R2016b or later.
Files can include multiple local functions or nested functions. For readability, use the end keyword to indicate the end of each function in a file. The end keyword is required when:
  • Any function in the file contains a nested function.
  • The function is a local function within a function file, and any local function in the file uses the end keyword.
  • The function is a local function within a script file.
pl solve the problem plot
@shiv gaur You have copied a function and it is not used in the code. To solve the plot problem, you need to define the variable Hy. What is it? How is it? From where you want to calculate?
What is your question? Please provide more details.
question is simple from this program how to calculate the value of be and plot the x/a vs real(Hy)
if any error in this program pl edit pl help this problem
You've defined a function pwga but nowhere in your code do you call the pwga function. That function is where the only reference to be occurs, but pwga does not actually create a variable be. You will need to update the function so it actually creates a variable be then call that function.
pl help to update the function that creates a variable to call function
Try updating the function yourself (it's a good way to learn.) If you are not able to successfully do so post your updated function and we can offer more feedback.

Sign in to comment.

 Accepted Answer

Sorry, I had the impression that the question was where to write the function, based on the title, "where to write function".
If the question is how to plot real(Hy) vs x/a, then you're going to have to get Hy out of that function or plot from inside the function (both of which would require calling the function at some point). But also, there is an undefined variable be you'd have to define first. I'll just pick be = 1 to show how it might work:
m=0;
k0 = 1;
la0 = 2*pi/k0;
a = 0.3;
ec = 2.2^2;
es = 1.7^2;
ef = -4;
pc = ef/ec;
ps = ef/es;
tol = 1e-12;
bsinf = sqrt(ef*es/(ef+es));
x = linspace(-3,3,601)*a;
Hy = pwga(la0,ef,ec,es,pc,ps,a,bsinf,m,tol,x);
plot(x/a, real(Hy), 'linewidth',2);
function Hy = pwga(la0,ef,ec,es,pc,ps,a,bsinf,m,tol,x)
be = 1;
ga = sqrt(be^2-ef);
as = sqrt(be^2-es);
ac = sqrt(be^2-ec);
psi = atanh(-pc*ac/ga)/2- atanh(-ps*as/ga)/2;
Hy = cosh(ga*a - psi).*exp(as*(x+a)).*(x<-a) + ...
cosh(ga*a + psi).*exp(-ac*(x-a)).*(x>a) + ...
cosh(ga*x + psi).*(abs(x)<=a);
end
In this case the input argument names in the definition of the function are the same as the names of the variables the function is called with, but this need not be the case, and it's important to understand that if you want to understand how functions work. For example, you can try the following to see how it works:
first_a = 100;
first_b = 200;
second_a = 1000;
second_b = 2000;
add_two_numbers(first_a,first_b)
add_two_numbers(second_a,second_b)
function c = add_two_numbers(a,b)
c = a+b;
end

3 Comments

dear sir first calculate the value of be then plot
when be ask this question again then this will be duplicate so you are req to give some help
How would I know what the value of be is supposed to be?
You could maybe calculate be from a given value of Hy, but no Hy is given in your code; in fact Hy is what was calculated from be.
Perhaps some description on your part about what the various variables represent, or the field or domain of problem would help people have some context and maybe an expert in that field can assist you.
If you want to avoid your questions getting flagged as duplicates, then you should ask a clear question each time, so it's obvious to others how the question is different from other questions relating to the same piece of code.
I am req to do nothing.

Sign in to comment.

More Answers (0)

Products

Release

R2021b

Tags

Asked:

on 2 Feb 2022

Commented:

on 2 Feb 2022

Community Treasure Hunt

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

Start Hunting!