dharr

Dr. David Harrington

1627 Reputation

13 Badges

16 years, 193 days
University of Victoria
Professor or university staff
Victoria, British Columbia, Canada

Social Networks and Content at Maplesoft.com

Maple Application Center
I am a professor of chemistry at the University of Victoria, BC, Canada, where my research areas are electrochemistry and surface science. I have been a user of Maple since about 1990.

MaplePrimes Activity


These are replies submitted by dharr

@Maple_lover1 From a statistics point of view, the maximum likelihood for normally-distrbuted errors leads to least squares minimization. From a calculation point of view, minimizing least squares is easy because the equations you solve (the normal equations) are linear. I seem to recall that a truncated Fourier series has a minimum least squares error. But without these rationales, and perhaps for your application, you can choose whatever you like.

@acer Agreed, but I have no idea what the OP really wants to do. The point of my post was that you could do something without learning MathML, and that leads to the above procedure. As usual, one can get a better result with some more work, but as an educator, I expect the OP to do some optimization, based on their specific requiremenents. My view of MathML is as for postscript, it is something that you could program, but really it is something for a computer to produce. 

@Ali Hassani 

subsup:=(base,sub,sup)->cat(`#msubsup(mi("`,base,`"),mi("`,sub,`"),mi("`,sup,`"))`);
subsup(x,5,7);

@Zeineb LinearSolve appears to be working now, but your new algorithm is diverging. I'm not able to see anything obviously wrong.

@Maple_lover1 You are setting all the coefficients zero to make the whole thing zero. So if the whole thing is zero, the numerator zero will be zero, and you can just work with that (provided the denominator doesn't go to zero).

As for the P values set to 1, I have no idea - I just noticed that that worked. Your problem doesn't say what to do about the sines, but somehow they disappear.

The d_1 is in the third equation in your post - perhaps it is a typo? or something else about the problem?

In terms of solve, there are 3 equations, so I always choose which 3 variables to solve for. In your set 1 answers, you had a[1]=a[1], meaning a[1] can be anything and the others can be in terms of a[1]. So for set 1, I left out a[1].

In your set 2 answers, there is a[2]=a[2], so I left out a[2], but it didn't work. 

In general solving 3 equations for 4 unknowns won't give anything, but if it does (as here) you don't get to choose what depends on what. Here there is some dependence between the variables that I didn't think about, but which has something to do with why set 2 didn't come out as I expected.

@robertocooper The initial or boundary conditions are determined by the physical problem, and the solution depends on them, so you need to know them for your case. Here I plot for U(0)=0, D(U)(0)=1.

PDE2.mw

 

@robertocooper The solution still has two unknown constants _C1 and _C2, whose values can only be found if you specify two boundary/initial conditons, e.g. U(0)=0, D(U)(0)=1. Then plots can be made, but since the PDE solution is complex what exactly do you want to plot?

This is hard to diagnose unless you upload a .mw file that illustrates the two results. Use the fat green up-arrow, choose the file and upload with "insert link".

@jat741 unapply turns a result you already have into a function, which you can then use for plots etc. In general you should not cut and paste from output to input or retype results.

PDEPlot.mw

@robertocooper I missed the point that the eqn for v was to be derived from the imaginary part, and have added an edited version transform4.mw to my answer above. In your second example, you divided by exp(I*mu), but that left you with a mix of old and new variables. I tidied it up a bit. (I usually leave off the =0 in eqns since dsolve, solve etc understand this as default, and then I do not have to worry whether various simplifications apply automatically to both sides of an eqn or not.)

For the subs, I'm not sure if you are asking a mathematical or Maple question. For the mathematical question, abs(z) is the magnitude of the complex quantity z=r*exp(I*theta), i.e., abs(z)=r. From the Maple point of view, using subs does a substitution without doing any simplification, i.e.,  just syntactic substitution. I didn't want any attempt to try to apply diff to abs. More usually I would used eval(expr,a=b) rather than subs(a=b,expr) since it is smarter about math things. But here eval messed with the PDE too much. 

newcode2.mw

Use I for sqrt(-1) in Maple (or use interface(imaginaryunit=i) to change the default). To force evaluation to real and imaginary parts use evalc. I assumed everything was positive, but you can use some other assumptions if that is not right, You can get simpler forms using simplify, but the abs() is problematic here, 

transform.mw

Providing an approximate solution with the approxsoln option often works here - it can be anything with approximately the right shape, but you have to know something about what you expect.

@dharr I realised that the Q value is intended to select the right phase; the Maple help and coolprop website are not very clear on this.

So this is a better way to do this (worksheets not displaying these days):

Thermo.mw
 

 

@Ronan I edited my original answer with an improved code. Your code agreed with the Matrix. This may be useful in my work, so thanks for introducing me to the Boole-Mobius transform.

@Carl Love  To get the same output as Ronan I needed to switch jm and h in the updates line to become:

(im, istep, h, jm):= Scale2~([im, istep, h, jm], [-1$3, 1])[]

Not sure if this affects speed because I know modular was updated after the version I have (2017)
 

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