cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Showing results for 
Search instead for 
Did you mean: 

Community Tip - Learn all about the Community Ranking System, a fun gamification element of the PTC Community. X

Range Plot with Logspace and Units

cadtelsim
7-Bedrock

Range Plot with Logspace and Units

Im trying to plot, lifetime as a funct. of doping, and abs. coefficient as a function of wavelength. I've looked up some videos and good instructions from this Solved: How to produce a log based range variable or plot ... - PTC Community but I have a problem getting the plot to show while defining the range correctly, ie, units for the start and stop, adding steps. I can pull it up with python but not with Mathcad and I can't find out why. thank you,

cadtelsim_0-1727551775380.png

 

Thank you,

 

ACCEPTED SOLUTION

Accepted Solutions
Werner_E
25-Diamond I
(To:cadtelsim)

It would be a good idea to make the function QE_emit work OK with a single scalar value of lambda (without any vectorization). Once you have tested that function, you can call it vectorized with vector argument(s).

 

What I noticed so far:

When you write a(lambda) Prime assumes a function a, which does not exist. If you meant a * lambda you would have to explicitly write is a multiplication. So you would write e.g.

Werner_E_0-1727609296772.png

but I still wonder as you defined x being zero, so this expression would always be constant 1

 

As you now multiply by a (which has unit 1/m), there is again a unit mismatch because now the exponent again is not dimensionless but has the unit meter.

You could make x dimensionless again, but you would run into problems with the sinh and cosh function. Their argument must be dimensionless, too, and as Ln is a length, xj must be a length, too.

Further unit mismatches in the expressions

Werner_E_1-1727609613350.png

and

Werner_E_2-1727609642099.png

where one summand is dimensionless while the other is  a length.

 

So you have to fix the unit mismatches in your formula first, then set up the function in a way that it works for a single argument lambda and the n you should be able to call it with vector arguments.

 

P.S.: Guess we again are far away from the thread topic "Range Plot with Logspace and Units "

View solution in original post

34 REPLIES 34
StuartBruff
23-Emerald III
(To:cadtelsim)

 

You have a unit incompatibility error.  Your X is unitless, CAuger is cm6/s and t0 is s.

 

2024 09 28 D.png

Werner_E
25-Diamond I
(To:cadtelsim)

Just answered your question in the old thread before I saw your new one here 😉

See Solved: Re: Circuit ODE set up and solution - symmetrical ... - PTC Community

Werner_E_0-1727565819025.png

 

I found that 100 points would suffice for a decent plot. The way you had used logspace would only create 70 points which may be a bit too coarse. Stuart increased to 1400 points 😉

 

BTW, while its not necessary to use vectorization because X^2 is an operation not defined for vectors and so Prime would apply automatic implicit vectorization, I would nonetheless suggest to use explicit vectorization on f(X). Just good habit IMHO and it avoids unexpected results if some day you define a function differently. You see the difference if you replace X^2 by X*X 🙂

StuartBruff
23-Emerald III
(To:Werner_E)

I thought I'd changed the x-axis scaling to logarithmic before posting, but clearly not.  However, when I corrected that deficiency (and extended the range ... I didn't know why the OP had chosen those values and assumed they had some reason to do so), the plot still looked different to what I expected.  I rewrote it to match what you'd written (in case I missed something obvious or some other weird interaction was happening), but I got the same plot.  So, in desperation, I deleted the plot and created a new one (with log axes), and hey, voilà, success.

 

Stuart

Werner_E
25-Diamond I
(To:StuartBruff)


@StuartBruff wrote:

I thought I'd changed the x-axis scaling to logarithmic before posting, but clearly not.  However, when I corrected that deficiency (and extended the range ... I didn't know why the OP had chosen those values and assumed they had some reason to do so), the plot still looked different to what I expected.  I rewrote it to match what you'd written (in case I missed something obvious or some other weird interaction was happening), but I got the same plot.  So, in desperation, I deleted the plot and created a new one (with log axes), and hey, voilà, success.

 

Stuart


What shall I say ... its Prime time 😉

I also noticed just now when the axis is scaled logarithmically, Prime does not allow to change the second value on the axis and thus controlling the step width.

I wanted to change the exponent to show every fourth to match the picture, but I only was able to set the top value on the y-axis to 10^-3 and the bottom one to 10^-30, but I was not allow to change the second value from 10^-27 to 10^-26. That's silly and an unnecessary restriction!

StuartBruff
23-Emerald III
(To:Werner_E)

Another one for the plotting improvement list.  I wonder how long that list is now?

Werner_E
25-Diamond I
(To:StuartBruff)


@StuartBruff wrote:

Another one for the plotting improvement list.  I wonder how long that list is now?


tried to print, ran out of paper ...

StuartBruff
23-Emerald III
(To:Werner_E)

Ah.  I wondered why there was an international shortage of paper.  Alles klar.  😈

Can I throw in a request too. Can the slide bar be a little wider, it's so hard to see and grab it with the mouse. 

StuartBruff
23-Emerald III
(To:cadtelsim)


@cadtelsim wrote:

Can I throw in a request too. Can the slide bar be a little wider, it's so hard to see and grab it with the mouse. 


What do you mean by wider? Vertical or horizontal?  You can stretch the slider across the page, but, surprisingly, not down it.

 

One workaround might be to use the arrow keys.  Click on the slide bar, then:

 

  • Use the left and right arrows to move in small increments (default is 1). 
  • Use the Page Down (left) and Page Up (right) keys to move in larger increments (default is 10).  Page Down Fn Down Arrow and Page Up = Fn Up Arrow on my laptop keyboard 
  • Use Home and End for the start and end of the slide bar's range of motion, respectively. Home = Fn Left Arrow and End - Fn Right Arrow.

 

You will probably have to submit a formal request on the Mathcad Ideas forum.  You need a fully-paid up maintenance licence to even see the Ideas forum, let alone post to it.  @Catalina might be able to suggest other means of getting your request considered?

 

Wider, as in increasing horizontally. It take a considerable amount of my day to scroll to the side bar, pass it and go to the next screen, slow down and come back hoping this time I can grab it, doing this about hundred times for each assignment. Also, when I'm screen sharing going over it with someone else, It becomes embarrassing too. If its a worksheet I'm referencing, I can set it on the rightmost screen, that way the mount curser can't pass the bar, it stops and then I can grab it easier, but the primary worksheet is always on one of middle screens so I can look at them straight for a long time. So the problem is stopping right when I can grab it, after that it can easily be moved with the mouse.

This screen shot is barely 2/3 of the screen, doesn't the side bar seem almost one dimensional? I think I have developed a PTSD towards it. First and second knuckles if right hand index finger hurts when I even talk about it. I've had a paid student version for at least three years and every year I pay for updated version. That doesn't count as a fully paid license? Thanks.

cadtelsim_0-1727931638216.png

 

StuartBruff
23-Emerald III
(To:cadtelsim)

A


@cadtelsim wrote:

Wider, as in increasing horizontally. It take a considerable amount of my day to scroll to the side bar, pass it and go to the next screen, slow down and come back hoping this time I can grab it, doing this about hundred times for each assignment. Also, when I'm screen sharing going over it with someone else, It becomes embarrassing too. If its a worksheet I'm referencing, I can set it on the rightmost screen, that way the mount curser can't pass the bar, it stops and then I can grab it easier, but the primary worksheet is always on one of middle screens so I can look at them straight for a long time. So the problem is stopping right when I can grab it, after that it can easily be moved with the mouse.

This screen shot is barely 2/3 of the screen, doesn't the side bar seem almost one dimensional? I think I have developed a PTSD towards it. First and second knuckles if right hand index finger hurts when I even talk about it. I've had a paid student version for at least three years and every year I pay for updated version. That doesn't count as a fully paid license? Thanks.

cadtelsim_0-1727931638216.png

 


 

Ah, it's the scroll bar you're talking about.  I's misunderstood and thought you were referring to the advanced Slider control.  🙂

 

Yes, I agree with you.  The window scroll bars can be tricky to find.  Can you use the standard Windows keyboard shortcuts to move the screen to where you want?

 

From : https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/scrollbar_role

 

Keyboard scrolling must also be supported. When focus is within the viewport controlled by a scrollbar, the Up Arrow and Down Arrow (or Left Arrow and Right Arrow for a horizontal scroll bar) should move the scroll bar thumb proportionally. Additionally, the Page Up, Page Down, Space, and Shift + Space keys must move the content and the scroll thumb the height (or width) of the viewport for each key press until the bottom or top (or left or right) of the content is in view.

 

I can't, however, find a keyboard shortcut that reliably moves to the top or bottom of a worksheet using my Dell laptop keyboard (no numeric keypad).

 

Then there's the official Microsoft page:

 

https://support.microsoft.com/en-gb/office/move-or-scroll-through-a-worksheet-06fc34b8-64bb-4d78-9b62-34656d700f82

 

Complaints about the scroll bar narrowness seem to have increased with the move from Windows 10 to Windows 11.   Some people find that going to Accessibility in Settings and setting the scroll bars to Always On widens them a little bit, but I didn't see any effect on my laptop (which has a 4K screen).

 

See https://github.com/microsoft/terminal/issues/12395 for a discussion about the matter in the MS Terminal GUI.  Apparently, all will be resolved when XAML gets fully implemented ...

 

https://github.com/microsoft/microsoft-ui-xaml/discussions

 

If you're brave (and I'm a natural-born coward) you could try the advice given here:

 

https://answers.microsoft.com/en-us/msteams/forum/all/can-the-scroll-bar-be-wider/0e7731c3-9748-4c3a-b71a-39b9c25f3722

 

But I'll leave playing with the Registry to the adventurous, those who know what they're doing, or those who exist at the wrong point of the Dunning-Kruger model.  (I've played with the Registry a lot, but doing so always makes me nervous)

 

Here's a screenshot of my Registry Editor with the scroll bar width changed from the default -255 to a wider -360 (15*n pixels wide).  Maybe a small effect on the width (after restarting).  However, if you're not an administrator on your PC, you might not be able to change Registry settings.

 

2024 10 03 A.png

 

 

 

Stuart

Only if Mathcad User Manual was this detailed and extensive....  I will work through this piece by piece and see. 

StuartBruff
23-Emerald III
(To:cadtelsim)

Good luck. To be fair, it's a Windows-11-wide problem that has affected many W10 applications.  You could suggest that PTC look into this matter and add further information to the documentation.   

 

Looking at the fix in the Windows Registry, I'm guessing that it's more of a problem for those with high visual density screens, eg, 2k & 4k laptops and small hi-res monitors ... and larger monitors outside of arm's reach (I've got a 60 cm 2K monitor about 2.5 metres away from where I usually work).

 

Stuart

LucMeekes
23-Emerald III
(To:cadtelsim)

This is a full screen width (1916 pixels wide, I only lost 4 pixels at the window borders of Prime.

LucMeekes_1-1727977731875.png

I have no problem using the scroll bars.

 

Now if you have a 4k display on a 15"screen, that may be a different story. In that case you could consider setting the display scale in windows to a value higher than 100%.

 

Success!
Luc

Thank you for clean plot, finally got that one plot.  I'll work more on a vs lambda that doesn't show, 

 

would you please see what I'm missing in the efficiency formula? I tried to simplify it but it still gave me an error. 

cadtelsim_2-1727574513007.png

 

 

Werner_E
25-Diamond I
(To:cadtelsim)

Select each axis express and then press "Logarithmic Scaling" for both axis on the "Plot" ribbon.

Then delete the last value (10^10 which you seem to have typed in manually) on the x-axis to let Prime choose the appropriate value automatically.

Werner_E_0-1727575810095.png

 

EDIT: I just noticed that you edited your posting and deleted your question about your plot not showing what you expect, which is why I formulated this answer

Werner_E
25-Diamond I
(To:Werner_E)

According the function QE_emit:

 

1) Its not a fault but its noticable that the argument lambda is not used in the expression. So the result would be the same for any input argument lambda - constant function.

 

2) the error stems from the expression e^(-a*xj) because the exponent must be unit-less. a is of dimension length^-1, so xj must be of dimension length. You have to add the unit meter even if the value is zero!

Werner_E_1-1727576410502.png

Not sure if the single scalar result is what you expected. Maybe you should vectorize the whole right hand side of the function definition, not sure though.

 

Thank you, how did you spot that the error was coming from the expression e^(-a*xj)? 

 

I need to calculate quantum efficiencies as a function of wavelength, so I need all the corresponding quantum efficiencies. Adding the unit to xj fixes that error but when I vectorize the whole right-hand side It still doesn't pass the lambda vector into the function.

 

How do I make the logGrid expression work for my version too? 

Werner_E
25-Diamond I
(To:cadtelsim)

It would be a good idea to make the function QE_emit work OK with a single scalar value of lambda (without any vectorization). Once you have tested that function, you can call it vectorized with vector argument(s).

 

What I noticed so far:

When you write a(lambda) Prime assumes a function a, which does not exist. If you meant a * lambda you would have to explicitly write is a multiplication. So you would write e.g.

Werner_E_0-1727609296772.png

but I still wonder as you defined x being zero, so this expression would always be constant 1

 

As you now multiply by a (which has unit 1/m), there is again a unit mismatch because now the exponent again is not dimensionless but has the unit meter.

You could make x dimensionless again, but you would run into problems with the sinh and cosh function. Their argument must be dimensionless, too, and as Ln is a length, xj must be a length, too.

Further unit mismatches in the expressions

Werner_E_1-1727609613350.png

and

Werner_E_2-1727609642099.png

where one summand is dimensionless while the other is  a length.

 

So you have to fix the unit mismatches in your formula first, then set up the function in a way that it works for a single argument lambda and the n you should be able to call it with vector arguments.

 

P.S.: Guess we again are far away from the thread topic "Range Plot with Logspace and Units "

Thank you for that, I'll make a new thread.

I just realized that was the problem. How do you annotate like that? Thank you,

Werner_E
25-Diamond I
(To:cadtelsim)


@cadtelsim wrote:

I just realized that was the problem. How do you annotate like that? Thank you,


The screenshot program I use  has editing facility.
But I guess you can do something similar using Windows' Snipping Tool, too. At least you can draw lines and use a highlighter.

Is this solution marked accepted? how can I make sure it is?

Werner_E
25-Diamond I
(To:cadtelsim)


@cadtelsim wrote:n

Is this solution marked accepted? how can I make sure it is?


Yes, it is.

When you mark a posting as "accepted solution" it is duplicated and appears additionally as second posting right after your initial posting.

Thank you, Just wanted to make sure, since I got the email. 

ttokoro
20-Turquoise
(To:cadtelsim)

image.pngimage.pngimage.png

ttokoro
20-Turquoise
(To:ttokoro)

image.pngimage.pngimage.png

I was looking at this matrix operation in your sheet, and I need to find a good video to learn it. Can you explain to me what is happening in this calculation?

ttokoro
20-Turquoise
(To:ttokoro)

image.pngimage.png

Announcements

Top Tags