Scot Gould

Prof. Scot Gould

292 Reputation

12 Badges

7 years, 75 days
Dr. Scot Gould is a professor of physics in the W.M. Keck Science Department of Claremont McKenna, Pitzer, Scripps colleges - members of The Claremont Colleges in California. He was involved in the early development of the atomic force microscope. His research has included numerous applications of scanning problem microscopes, particularly those which involved natural and synthetic fibers such as spider silk. He has more than 60 papers and his publications have been sited more than four thousand times. He has more recently been involved in developing and sustaining non-traditional interdisciplinary undergraduate science educational programs that involve biology, chemistry, physics, mathematical and computer science. He teaches the use of Maple to assist students to model and visual biochemical systems from a physical approach.

MaplePrimes Activity


These are answers submitted by Scot Gould

While I understand your reasoning, as it has been mine, from the help of ?sum:

      The sum command (sum) is for symbolic summation.

The italicized term is their emphasis. Hence, it sounds like even for "short" sums of discrete terms, don’t expect logical outputs from sum even if the command doesn’t reject the input. (If you are coming from MATLAB, remembering to switch to add can be maddening.)

Dr. Lopez correctly states, the output that you label as answer5[1] are a list of two equations: x = 553,  y = 455.  Since the goal is to calculate the value of the arctan, one wants to use "just the values". Hence a technique that I use frequently is to extract the right-hand-side (RHS) of the equations, i.e., the values, and use that output, for the calculations: 

restart;
answer5 := { x= 553.6, y = 455.0 }, {x = 553.6, y = -455.0 };

{x = 553.6, y = 455.0}, {x = 553.6, y = -455.0}

(1)

theta1 := arctan( rhs(answer5[1][2]) / rhs(answer5[1][1]) );

.6879485439

(2)

 

And for future angles, use the fact that arctan can identify the quadrant using 2 parameters: y, x. So for the other angle:

theta2 := arctan( rhs(answer5[2][2]), rhs(answer5[2][1]) );

-.6879485438

(3)

 


 

Download arctan.mw

Since you appear to want to use the Statistics package, which is a good choice for plotting one data set against another, this approach might be more useful. It uses 2 commands: ScatterPlot and Fit.  I've added some options to make it more interesting, but are not required.
 

restart; with(Statistics); X := Vector([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 8, 12, 12, 22, 30, 40, 44, 51, 65, 70, 97, 111, 131, 135, 174, 184, 210, 214, 232, 238, 254, 276, 285, 305, 318, 323, 343, 373, 407, 442, 493, 542, 627, 665, 782, 873, 981, 1095, 1182, 1273, 1337, 1532, 1728, 1932, 2170, 2388, 2558, 2802, 2950, 3145, 3526, 3912, 4151, 4399, 4641, 4787, 4971, 5162, 5445, 5621, 5959, 6175, 6401, 6677, 7016, 7261, 7526, 7839, 8068, 8344, 8733, 8915, 9302, 9855, 10162, 10819, 11166, 11516, 11844, 12233, 12486, 12801, 13464, 13873, 14554, 15181, 15682, 16085, 16658, 17148, 17735]); Y := Vector([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 8, 12, 12, 22, 30, 40, 44, 51, 65, 70, 97, 111, 131, 135, 174, 184, 210, 214, 232, 238, 254, 276, 285, 305, 318, 323, 343, 373, 407, 442, 493, 542, 627, 665, 782, 873, 981, 1095, 1182, 1273, 1337, 1532, 1728, 1932, 2170, 2388, 2558, 2802, 2950, 3145, 3526, 3912, 4151, 4399, 4641, 4787, 4971, 5162, 5445, 5621, 5959, 6175, 6401, 6677, 7016, 7261, 7526, 7839, 8068, 8344, 8733, 8915, 9302, 9855, 10162, 10819, 11166, 11516, 11844, 12233, 12486, 12801, 13464, 13873, 14554, 15181, 15682, 16085, 16658, 17148, 17735])

 

The following is the more common way using the "Statistics" package - ScatterPlot

ScatterPlot(X, Y, labels = ["X", "Y"], tickmarks = [5, 5], symbolsize = 20, symbol = solidbox)

 

This looks like a straight line. Are the two "vectors" truely identical?

LinearAlgebra:-Equal(X, Y)

true

(1)

Yes, hence the confusion as to why you might want to plot the two against each other.

 

As others have pointed out, you have a sequence of 110 points. Here is the way I prefer to extract this information: numelems

N := numelems(Y)

110

(2)

Let us create a new X variable to plot against the Y made up of a sequence of numbers from 1 to 110:

newX := Vector([seq(1 .. N)])

 

Now we plot, and we can add a possible curve fitting line. I tried a few examples, and this one looks possible given the information provided:

cfit := a3*x^3+a2*x^2+a1*x+a0; ScatterPlot(newX, Y, labels = ["X", "Y"], tickmarks = [6, 10], symbolsize = 15, symbol = circle, fit = [cfit, x], color = ["DarkGreen", "Magenta"], legend = "data")

a3*x^3+a2*x^2+a1*x+a0

 

 

To see the values of a basic curve that fits the data, use Fit in the Statistics package.

sfit := Fit(cfit, newX, Y, x)

HFloat(147.35821613199457)-HFloat(8.219842062292507)*x-HFloat(0.5340254006120428)*x^2+HFloat(0.018747154003949003)*x^3

(3)

May I suggest "Getting Started with Maple" 4th edition, by Doug Meade, et. al.. for other examples.

``


 

Download fitting_with_Statistics_package.mw

See if the command to evaluate an expression over a complex field,  evalc, does the operation that you asking for. 

Thank you Paul for posting this question. I feel your post is important because it identifies a problem with the Context Panel.

The reason your projectile doesn't land is because, in the Context Panel option for "2D-plot", the default range for the horizontal term is from -10 to +10.  I suspect that you changed the properties of the axes, "2-finger click>Axes>Properties", and thus were able to change the display to the limits: from 0 to 24. (And the same for the vertical as well.) Unfortunately, that didn't cause the program to calculate the values beyond t = 10.  Until Maplesoft updates/fixes/provides alternative to this property for the graph, I see no other option for this type of problem than for one to write the command that @tomleslie  states: "plot(ex11(t), t=0..30)" 

And if you want to know when the function is 0, there appears to be no easy shortcut in the Context Panel. Hence I suggest you try this command: "solve(ex11(t))". I rewrote the expression and used the solve sommand.  You are correct, the final t for it to "return to ground" is 24 time-units.

Example: Height of a Projectile

 

"ex11(t):=-16 t^(2)+384 t;"

proc (t) options operator, arrow, function_assign; -16*t^2+384*t end proc

(1.1)

"->"

 

This is the default image shown using the Context Panel...

 

Continuing with this problem:

 

-16*t^2+384*t"(->)"[[t = 0], [t = 24]]

 

plot(ex11(t), t = 0 .. 24)

 

 

``


 

Download projectile_2.mw

I unitentionally deleted my answer to note that I do tend to think more along the lines of @tomleslie
 

Using document mode

``

-3 <= 6*x-1

0 <= 6*x+2

(1)

6*x-1 < 3

6*x < 4

(2)

Here I will use <ctrl>-<L> (for Windows), or <command>-<L> (for Mac) to insert labels

solve(0 <= 6*x+2 and 6*x < 4, x)

RealRange(-1/3, Open(2/3))

(3)

Or we can do in one line:

 

solve(`and`(-3 <= 6*x-1, 6*x-1 < 3), x)

RealRange(-1/3, Open(2/3))

(4)

Or my personal preference, assign each equation to a variable, and then solve

eq1 := -3 <= 6*x-1

0 <= 6*x+2

(5)

eq2 := 6*x-1 < 3

6*x < 4

(6)

solve(eq1 and eq2, x)

RealRange(-1/3, Open(2/3))

(7)

``


 

Download simple_answer.mw

For some reason, the website is unable to upload my Maple sheet, so I will leave this comment in the form of a PDF that you should be able to download and read.

 

Roots.pdf

For the occasional time that I wish to write "code", i.e., 1-D math input, I prefer to insert a Code Edit Region (CER), and enter the code there. Then, when I wish to paste the code to a Word document, I copy and paste the image of the CER. This process doesn't exactly do what you are asking, but with the coloring and bolding, it does tend to generate a prettier pretty-print. 

 Code_Edit_Region_example.pdf

@mikerostructure  For what it is worth, I generated an eps file version of the plot. As @acer pointed out, it took Maple 2020 more than a minute to generate both the first plot and the second plot. 

To reproduce the image, I sent the file to an online EPS viewer and it worked fine. 

 https://epsviewer.org/onlineviewer.aspx

 

If what you want is Maple code to appear as "real math", have you considered using "2D Input" to input content?  But if you are committed to "Maple Input", does that mean some data that will be entered will not be in SI units?

------------------------------

Note - I would have uploaded the file and the content of the file, but this is what I received multiple times trying to upload this very simple file:

------------------------------
Maple Worksheet - Error

Failed to load the worksheet /maplenet/convert/mp_upload.mw .
 

Download mp_upload.mw

 

I use Feedly on Android and other OSes. And then just "add content" -> "MaplePrimes".  My only complaint about the RSS feed is that the spam  still gets through before someone deletes it. 3 of the last 5 posts have been for pain killing medication, wallpaper and mole removal products. 

Or did you not want to use an app like that?

A quick glance suggests a missing divide command in the "parameters = " expression on the last line.

See attached. Refraction_Demo_Doc_version.mw

Note, this document was constructed as part of my experiment with Maple Cloud. 

As someone who spends time trying to get students to use Maple to solve physics / engineering problems because I would rather have them work on those problems, and not math problems, I can understand your frustrations. There are many times I find Maple coding to be less than "math intuitive."

However, for this situation, let me say, what are you trying to do ? Are you trying to take the derivative of f(x) with respect to x and then set the x in the outcome to be equal to 3? This outcome would be 3.  Or, are you trying to take the derivative of f(x) after you have put in the value of 3 for x? Because that is how I initialy read it. (Think arcsin(sin(x)). Pass x to sine, do the calculations, then do the arcsin of the resulting calculation.) For this reading, the outcome is 0. 

Since I'm going to assume the former, then what one needs to know, when Maple sees g(x), x is a variable. However, when Maple see f'(x), it sees the " ' " as the derivative with respect to the variable x.  So for me, the most readable and understandable way to write these statements is:

" f(x):=3 x+2;"

proc (x) options operator, arrow, function_assign; 3*x+2 end proc

(1)

"g(x1):= f'(x1);"

proc (x1) options operator, arrow, function_assign; eval(diff(f(x), x), x = x1) end proc

(2)

g(3)

3

(3)

``


It performs the calculation of the derivative before it evaluates the outcome using x1 as the value for x. 

Download Derivative_example.mw

 

Based on my experience with updating numerous copies of Maple, to update within a shorter period of time, I recommend going directly to the Maplesoft website and downloading the update: https://www.maplesoft.com/support/downloads/m2018_2update.aspx

 

1 2 Page 1 of 2