rlopez

1822 Reputation

11 Badges

12 years, 171 days

Dr. Robert J. Lopez, Emeritus Professor of Mathematics at the Rose-Hulman Institute of Technology in Terre Haute, Indiana, USA, is an award winning educator in mathematics and is the author of several books including Advanced Engineering Mathematics (Addison-Wesley 2001). For over two decades, Dr. Lopez has also been a visionary figure in the introduction of Maplesoft technology into undergraduate education. Dr. Lopez earned his Ph.D. in mathematics from Purdue University, his MS from the University of Missouri - Rolla, and his BA from Marist College. He has held academic appointments at Rose-Hulman (1985-2003), Memorial University of Newfoundland (1973-1985), and the University of Nebraska - Lincoln (1970-1973). His publication and research history includes manuscripts and papers in a variety of pure and applied mathematics topics. He has received numerous awards for outstanding scholarship and teaching.

MaplePrimes Activity


These are replies submitted by rlopez

@Marzio Giaveno 

Try assign~(seq(X[k]=X[0]+k*(X[N]-X[0])/N, k = 1 .. N-1));

This sets up a sequence of equations, and assign~ maps the assignment operator onto each of the equations in the sequence. That does not generate the first error shown in your post.

The list of points in P each contain a function f evaluated at a known X but an unknown Y. But what about the function f? The  sum of distances between adjacent points in SL is then the argument of the Minimize command, which acts numerically. If the unknown function f is in this argument, again errors will be thrown. At this point, either there's the coding error of forgetting to define f, or a logic error in thinking Minimize can do its job without knowing what the function f is.

I did not progress to the third error because the second one is insurmountable.

What are F, V, A, and B?

You define P1, P2, P3, P4 with upper case, but display p1, p2, p3, p4 with lower case. (Maple is case sensitive.)

RJL Maplesoft Kitonum's solution is elegant, but I had to look at (and think about) the output of the discriminant command to understand its role. Upon substitution of y=m*x into the equation of the circle, a quadratic in both m and x results. The discriminant of a quadratic will tell you how many solutions the quadratic has. What is wanted for tangency is that there is just one solution, a condition that results when the discriminant is zero. The solve command is applied to the discriminant, but it is just an expression. Maple assumes that when an expression is given to the solve command the intent was to set the expression to zero. The two values of m that result are the slopes of the two tangent lines that you are looking for.

I was curious to see just when Maple's solve command could handle the inequalities. The command asked about succeeds in every version from Maple 11 through Maple 2016.2. Hence, the OP might have needed to do a restart, etc., to get the command to work - unless a really old version of Maple was being used.

@brian bovril I was trying to clarify the point that there is some regression analysis available for nonlinear fits. Not as many items as for linear fits, but some. I overlooked the OP's specific pointer to "standard error of the coefficients". And no, this is not one of the items available for regression analysis in a nonlinear fit. Sorry. I should have been more careful in reading the OP's question. Thanks for calling the oversight to my attention.

@brian bovril The help page at ?Statistics,Regression,Solution will show that one can obtain regression analysis for both linear and nonlinear fits. For linear fits, there are more items in the analysis, but some of the items in the linear fit analysis appear in the list for nonlinear fits.

OK, during lunch I realized what I needed. I think the Lagrange Expansion theorem applies. My first recourse for a reference is "Perturbation Techniques in Mathematics, Physics, and Engineering" by Bellman. Could probably pull it out of Wiki, but I'm addicted to print. Will have a go at it after some afternoon errands.

Interesting comment. I can obtain that result by applying the asympt command to the equation that I ended up solving numerically. (Bring all terms to one side first.) This gives an asymptotic expansion in terms of r and s. Setting the sum of the first two terms to zero and solving for s gives the result in vv's comment. Solving for s becomes intractable if more terms are taken, so I'm left with the analytic question: How valid is it to expand first, then solve. I'll need to think more about this technique. Perhaps vv's result can be obtained in some other way?

@Markiyan Hirnyk 

OK, you have clarified for me what BSplineCurve returns.

I then went back to example2.mw where you obtain 44 for integral based on a cubic spline built from 200 data points taken from the graph of xydata. Graph that cubic spline and compare its graph to that of "expand(Interpolant(p1))". I would not trust that 44 obtained by integrating this expanded interpolant.

Graph the parametric curve obtained by BSplineCurve obtained in another_way.mw. Although this curve is close to the piecewise-linear curve given by xydata, it does not appear to be defined over the whole interval [0,8]. This might account for the lower value of 34 when integrating.

I think I stand by my 49.54 obtained by integrating under the piecewise-linear spline that approximates the modified data on [0,8.01].

@Markiyan Hirnyk 

Darkness: The BSplineCurve command returns two curves, c[1] and c[2]. This I do not understand. Their graphs are significantly different.

Some Light: By changing the last data point from [8,3] to [8.01,3], it is possible to get Maple's Spline command to work. Use this to create a degree-one spline for the data and graph it. The graph corresponds to the graph of xydata. The curves c[1] and c[2] sit underneath the graph of the piecewise linear spline. The area under the spline is 49.54, whereas the areas under the BSplineCurves are on the order of 27.

 

@Markiyan Hirnyk 

Markiyan, the BSplineCurve command returns a strange data structure, but op(1,c1) is a piecewise function that can be integrated.

The plot command needs either set or list braces around its two arguments because it is being asked to graph the data (xydata) and the spline.

Your approach of extracting the data points from the graph is very clever. Maple handled a spline with 200 nodes. Perhaps it could handle a spline with all 2000?

If the data is uniformly spaced, it would be simple to write the sum expressing, say, the trapezoid rule or Simpson's rule. Otherwise, you have to fit some continuous function to the data, whether piecewise linear, spline, etc. I would hesitate to build a spline with 2000 nodes. Perhaps break the integration into subintervals, with splines through the points corresponding to the subintervals.

No magic bullet here, so you will have to do some work to get the result you want.

@Kitonum  The elegant simplicity of this latest solution is beautiful. Thanks for pouring your insights into this forum.

@DJJerome1976 I am as delighted with Preben's solution using freeze/thaw as you are! It allows the names u and v to be manipulated as names, but the vectors to be manipulated as objects. I'll be adding this trick to my Red Book of Maple Magic.

By the way, in Kitonum's solution using Equate, the sequence of two Equate commands results in a sequence of lists. In the Context Menu, there is a Join option that would join the contents of the two lists into one list. The code behind this Join option is a map of op, which Kitonum accomplishes with op~, again demonstrating his mastery of Maple syntax.

Just as I was about to post an answer to this question, Kitonum's equivalent solution appeared. Our solutions agree on the need to restructure the calculation because Maple does not have the ability to solve vector equations. Such equations must be reduced to equations between components.

Kitonum uses the efficient =~ to equate components of vectors, a construct that has appeared in Maple since the appearance of the Equate command that was formulated to do the same. "Equate" replaced the "equate" command in the old "student" package.

Being old-school, I would prefer the explicit Equate command. Kitonum's coding abilities far exceed mine, and his usage of coding techniques like =~ reflect his facility with Maple syntax.

1 2 3 4 5 6 7 Last Page 1 of 11