The Math Forum

Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Math Forum » Discussions » Software » comp.soft-sys.matlab

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: help me plot this code -- urgency
Replies: 2   Last Post: Jan 25, 2013 5:13 PM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
Roger Stafford

Posts: 5,929
Registered: 12/7/04
Re: help me plot this code -- urgency
Posted: Jan 25, 2013 5:13 PM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

"maia " <> wrote in message <kdsank$br5$>...
> hi
> i want plot p(K) in this program
> when i write the code it give me error
> i don't know why
> and i don't know what i should do
> i need it very soon in fact in 1 day
> ---------------------------------------------------------
> thank you very much
> and
> sorry in advance for my poor English
> -----------------------------------------------------------
> my code
> -----------------------------------------------------------
> close all
> clear
> clc
> syms k r n teta z
> n=0:1:5;
> d=.8;
> rs=1;
> re=1.3-d;
> sum=0;
> for n=1:4
> pin= besseli(n,k*r);
> pin1=besselk(n,k*re);
> pin2=((1-eps)*besseli(n,k*re).*besselk(n,k*rs).*diff(besselk(n,k*rs))).*(1./(eps*diff(besselk(n,k*rs)).*besseli(n,k*rs)-besselk(n,k*rs).*diff(besseli(n,k*rs))));
> pin3=2*pin2.*pin1.*pin.*cos(n.*teta);
> sum=sum+pin3;
> end
> teta=0:1:360;
> k=0:.1:10;
> r=0:(re/length(k)):re;
> [X Y Z]=ndgrid(teta,r,k);
> pk=cos(Z.*X).*sum;
> plot(pk);

- - - - - - - - - - -
I will list various things that worry me about your code:

1) You have listed k, r, n, and teta as symbolic, and you seem to expect that pin, pin1, pin2, pin3, and sum will all be able to operate in symbolic form. I am not sure that will work, especially since you have also used the same designations of these variables for numerical values.

4) In diff(besselk(n,k*rs)) and diff(besseli(n,k*rs)) you apparently expect the symbolic toolbox to know the derivatives of the two modified Bessel functions, but are you sure it does? If it doesn't, you need the formula for them which you can find in Wikipedia at

(Yesterday I thought the diff was meant to be numerical differencing based on the line "n=0:1:5;" which accounts for my remark about size discrepancy then.)

3) You have supposedly created a symbolic 'sum' which bears no relation to a 3D array and yet you seem to expect the line "pk=cos(Z.*X).*sum;" to treat it as such with the n, k, and teta in accordance with the ndgrid which you have formed. That cannot possibly work as it stands.

2) You have created three dimensional arrays X, Y, Z and from them pk which you placed in plot. I don't think plot knows how to deal with 3D arrays. Matlab has no good method for displaying a quantity as a function of three independent variables. It would need four dimensions to work with and our world is unfortunately only three-dimensional.

Roger Stafford

Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© The Math Forum at NCTM 1994-2018. All Rights Reserved.