I am getting error as this value must be a scalar in polyroots function
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
I am getting error as this value must be a scalar in polyroots function
Hi all,
I am getting error as 'This value must be a scalar
in polyroots function'.
Please can anyone help me.
I attached my mathcad code below.
Solved! Go to Solution.
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Which version and maintenance release of Mathcad are you using?
Maybe the problem is due to a bug in an older version which already is fixed?
Do you get the error already in the last line of your sheet when you just define the function r or when you try to evaluate it via r(10)=
I also experience no problem in evaluating your function r (Mathcad 15, M045).
When calculating your various coefficients a(i), b(i), etc. every call evaluates the solve blocks again and again. This could be speeded up significantly by creating a function which calls the solve blocks just once and then calculates and returns ALL of the necessary coefficients in a vector.
Doing so would be quite some work in rewriting the sheet but probably worth the time spent.
Her a small example - the function I1(i): Your version of this function calls the solve block for f three times while the version below calls it only once (and we don't need the function x1(i) and x2(i) you defined above anymore):
using this new function I1 and a similar one for I2 already cuts the time to calculate r to one third and the whole sheet could be speeded up much, much more, I guess.
Nevertheless you experience that strange error. So lets try some changes (I am just poking around in the dark):
What do you get when you evaluate B(10)=? Do you get
If yes, try to reformulate your function r
Do you get the result or do you still experience that error?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Hi vetri,
It seems to me that there are no problems. It only takes a long time to compute ..
Greetings
Franc
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Dear Franc,
Thank you for your reply.
But, for me I am getting the same error as 'This value must be a scalar'
Could you please attach your code.
Thanks.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
The polynomial is of the third degree, so we have three roots (all real or one real and two c.c.) for each i value. I have erroneously traced the root vector module. To trace the module of each root, varying i, it takes a long time.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
F.M. wrote:
The polynomial is of the third degree, so we have three roots (all real or one real and two c.c.) for each i value. I have erroneously traced the root vector module. To trace the module of each root, varying i, it takes a long time.
Try the version here
Solved: Re: I am getting error as this value must be a sca... - PTC Community
for a speed boost 😉
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Hi Vetri,
I'm getting no errors as well.
And yes, as Frank said: It takes a lot of time for computing.
Can you simplify or reduce your equations?
Greetings, Volker
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Which version and maintenance release of Mathcad are you using?
Maybe the problem is due to a bug in an older version which already is fixed?
Do you get the error already in the last line of your sheet when you just define the function r or when you try to evaluate it via r(10)=
I also experience no problem in evaluating your function r (Mathcad 15, M045).
When calculating your various coefficients a(i), b(i), etc. every call evaluates the solve blocks again and again. This could be speeded up significantly by creating a function which calls the solve blocks just once and then calculates and returns ALL of the necessary coefficients in a vector.
Doing so would be quite some work in rewriting the sheet but probably worth the time spent.
Her a small example - the function I1(i): Your version of this function calls the solve block for f three times while the version below calls it only once (and we don't need the function x1(i) and x2(i) you defined above anymore):
using this new function I1 and a similar one for I2 already cuts the time to calculate r to one third and the whole sheet could be speeded up much, much more, I guess.
Nevertheless you experience that strange error. So lets try some changes (I am just poking around in the dark):
What do you get when you evaluate B(10)=? Do you get
If yes, try to reformulate your function r
Do you get the result or do you still experience that error?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Here is a sheet where i have speeded up the second solve block which called the first one over an over again and was one main reason for the slow claculation.
The evaluation of r is now accelerated by a factor between 100 and 200 and there is still great potential for further improvements, once your problem with the polyroot function is solved.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Dear all,
Thank you very much for your valuable comments.
Werner Exinger, As you mentioned in your reply,
I tried for B(10) and I got the same result as you got,
But, when I try to reformulate 'r' as you mentioned in the second line,
I experience the same type of error.
I am using mathcad 15.
Thanks.
PS.
Could you please attach the code for this,
https://www.ptcusercommunity.com/servlet/JiveServlet/showImage/2-492393-117216/pastedImage_3.png
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
> Could you please attach the code for this,
Why? There is nothing special about it and easily typed in.
If I understand your answer right you already tried it without success.
Furthermore that code is included in my second answer (I used co instead of coeff out of laziness.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Dear Werner Exinger,
I opened several mathcad programs.
So, due to that I got that type of error.
I closed all the mathcad program and I restarted Mathcad
again, then I found that there is no such type of error.
Thanks again and all for your valuable comments.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Glad you found such an easy solution to your problem!
