9406 Reputation

12 years, 27 days

How to sum entries in matrix based on ke...

For learning, I was trying to implement this in Maple. Given this matrix

m:=<<"foobar"   | 77>,
<"faabar"   | 81>,
<"foobaa"  | 22>,
<"faabaa"  | 8>,
<"faabian"  |88>,
<"foobar"  | 27>,
<"fiijii"      | 52>>;

And list of keys

keys:={"foo","faa"}:

The idea to find the entries (in first column) which starts with the keys, and sum the corresponding numerical value in the second column. The result will be

r:= <<"foo"|126>,
<"faa"|177>>

I tried using select, but select, once something is found, does not allow one to do anything more, so it is not very useful. For example  select[flatten](x->x[1..3]="foo",m);  just returns the fields in first column.

I can extract rows I want like this

f:=x->seq(`if`(m[i,1][1..3]=x,m[i],NULL),i=1..7):
r:=map(f,keys);

Not very useful, but at least I got the parts I want, but still need to process these again.

I could write a loop to do the whole thing, but I am trying to avoid this.

What would be the correct Maple way to do this? I think there might be a command in some package that will do this in one or 2 lines only.

maple 2015 no longer auto-scroll as comp...

I run the same notebook in Maple 2015 that I used to run in Maple 18.02.

I noticed that it no longer auto-scroll when the print messages reached the bottom of the window as it did with Maple 18.02. This means, I can't see which line the computation is at at the moment, since I can't see the last line printed (it is not visible), without me having to manually use the vertical slider to scroll down trying to catch up with it. But it is hard to do this all the time.  It starts to scroll ok until the last printed message reached the bottom of the window, but then it stops.

This is very annoying, becuase I'd like to see the messages as it is running, so I know which equation is being solved when I look at the screen.  The messages are like this, with some print message I put in the loop

memory used=0.53MiB, alloc change=0 bytes, cpu time=16.00ms, real time=7.00ms, gc time=0ns
*** loop counter 100
etc..

Is there an option one has to configure to make the screen scoll with the output? I looked but do not see one now.

I do not remember having to do anything in Maple 18.02. It seems natural that it should scroll down as messages are being displayed. This is how all apps work.

I am using Maple 2015, windows 7, 64 bit OS and 64 bit Maple. Using Worksheet, was created in Maple 18.02. Other than this, everything else works ok so far.

interface(version);
Standard Worksheet Interface, Maple 2015.0, Windows 7, February 17 2015 Build ID 1022128

thank you

how to know which maple.ini was loaded w...

Is there a command in maple that shows which files were read during start up? I am confused as to which maple init file is being read on my PC.  From http://www.maplesoft.com/support/help/Maple/view.aspx?path=worksheet/reference/initialization

it says

"Under Windows, the initialization file is called maple.ini.
If <Maple>\lib\maple.ini exists, it is loaded first (where <Maple> is your Maple installation directory). With a  network installation of Maple, the commands in this initialization file will be executed by all users on the network.
To execute a user's personal set of commands, only the first initialization file in one of the following paths will be loaded.
1) The binary directory of your current working directory (for example, "c:\Program_Files\Maple\bin.win\maple.ini")
2) The <Maple>\Users directory (for example, "c:\Program_Files\Maple\Users\maple.ini")
3) The user's personal profile directory (multiuser only) (for example, "c:\Documents_and_Settings\userid\maple.ini")

Maple reads and executes the network initialization file before the personal initialization file."

How do I find out, from inside Maple, which file(s) were read? Or make maple shows a trace of the loading process to see what files ini files it is reading?

Maple 18.2 on windows. btw, the above help page seems old. I am on windows 7, and I do not have "c:\Program_Files\Maple\" folder. And do not have "c:\Documents_and_Settings" folder. So the above help is not very useful. May be it was written during windows 95 times?

how to select terms from one expression ...

I am trying separation of variables in Maple. I get an equation that has the form

And now I want to tell Maple to assign the terms with 1/R in them to one variable, say eq21, and the term with 1/Z to second variable, say eq22 The idea is that I can later more easily work with each separate ode.

I do not know to separate those apart. I could offcourse copy and paste by hand, but I want to automate this.

I tried match() and patmatch() but I am not seeing the way. Here is the code:

restart;
T:=  (r,z)-> Z(z)*R(r);
eq1:= diff(T(r,z),r\$2)+1/r*diff(T(r,z),r)+diff(T(r,z),z\$2);
eq2:=expand(eq1/(Z(z)*R(r)));

#need now way to break the above into 2 different variables.

ps. I know I can do this:

restart;
T:=  (r,z)-> Z(z)*R(r);
eq1:= diff(T(r,z),r\$2)+1/r*diff(T(r,z),r)+diff(T(r,z),z\$2);
eq2:=expand(eq1/(Z(z)*R(r)));
eq3:=collect(eq2,1/R(r));
eq21:=op(1,eq3);
eq22:=op(2,eq3);

But this for me is not the right way to do it. I think there should be more algebraic way.

checking if an expression is free of x...

I was trying to see if Maple contains equivalent to Mathematica FreeQ command to check inside a proc if an input expression contains an "x" or not.  I could not find such command in Maple. So now I call indets(), which is a nice function, that tells me all the symbols in the expression, then use member() to check.

Would this be correct way to do this? Here is an example

expr:=3+4*sqrt(2)-x+y*sin(3*t);
s:=indets(expr);
if member(x,s) then
print(`yes, x is there`);
fi;

I can't use patmatch() for this, as I do not know what the expression will look like yet, I just needed to know if it contains an "x" (in this case), a free symbol "x", and that is all.

I thought to ask if there is a better way to do this.

 First 157 158 159 160 161 162 163 Last Page 159 of 178
﻿