AmirHosein Sadeghimanesh

225 Reputation

7 Badges

9 years, 286 days

Social Networks and Content at Maplesoft.com

Finished Ph.D. in Applied Algebraic Geometry in Biology and did postdoc in Mathematics of Chemical Reaction Networks, University of Copenhagen. Another postdoc in Nonlinear Dynamics in the Mathematical Models of Cell Biology at University of Szeged. Currently a research fellow at Coventry University. Main interests; Applied and Computational Algebraic Geometry, Computer Algebra, Mathematical Biology, Chemical Reaction Network Theory, Population Dynamics. I'm also a language lover!

MaplePrimes Activity


These are questions asked by AmirHosein Sadeghimanesh

Is there an equivalent of currentdir() which instead of returning current working directory, returns the directory of the file being read. So assume I have an ".mm" or ".mpl" file saved in some location and there is another file with a location fixed relative to this file, but not fixed in absolute location on the computer and not fixed relative with current working directory. One natural thing is to have a line in the first file that takes its current location (not current working location of the user!) and then use the fixed relative path info, and then gives the location of the second file to the user. Using currendir won't help here because current working directory is not necessarily the same as the location of the file you are reading, the first file. One may say the user is reading the first file so he knows already its location, right? Well, if the user is also the writer of the file, sure, not a problem, he can manually edit the lines of the file and put that location inside the file instead of using currentdir etc. However, if the user is not the writer and also does not know how to edit or whatever else reason, then the file should be able to inform Maple of its own location, so that's why something like currentdir() but not for the working directory, instead for currently being read file's directory is helpful. I checked FileTools package quickly and couldn't notice anything like what I want. Anyone have any clue on name of such command if exists or any other trick that does what I want (except expecting the user to do something ^_^ so all from the writer's side please ^_^).

Is there any reason why the intersectplot can't plot the following curve?

plots:-intersectplot( x^2 + b*x + c , b^2 - 4*c , b = -4..4, c = -4..4, x = -4..4, color = red );

But it can plot the next one!

plots:-intersectplot( x , b^2 - 4*c , b = -4..4, c = -4..4, x = -4..4, color = red );

The output in the two cases respectively are shown below.

I am a bit confused that why the color option in the following plot3d does not work.

plot3d( [ b, ( b^2 ) / 4, -b / 2 ], b = -4 .. 4, c = -4 .. 4, thickness = 5, color = red  ); 

The output is the following.

Let's say we have a procedure with an optional keyword option and a second procedure is calling this procedure and we want to give the user the option to set the kwarg of the first procedure in the second procedure as well. A simple example (just for the sake of the question, nothing meaningful in this example) is given below. Look at the kwarg "b" in test1. test2 is calling test1 and we want to have the option of setting "b" of test1 in test2 as well. But if I use "b = b" when calling test1, it doesn't work! I thought of using "`b` = b" and even "'b' = b", but they don't work either. One solution is to use a new name, say "c" and calling test1 by "b = c". But that is a bad choice. Because if you call test1 in so many other procedures, then you have to use so many names for one parameter, clearly this is not user friendly too, the user would prefer to remember a parameter by a fixed name. Is there any solution so that I can use the same name here?

test1 := proc( a :: posint, { b :: posint := 1 } ) :: posint:
	return( a + b ):
end proc:
test2 := proc( a :: posint, { b :: posint := 1 } ) :: posint:
	return( a * test1( a, b = b ) ):
end proc:
test3 := proc( a :: posint, { b :: posint := 1 } ) :: posint:
	return( a * test1( a, `b` = b ) ):
end proc:
test4 := proc( a :: posint, { c :: posint := 1 } ) :: posint:
	return( a * test1( a, b = c ) ):
end proc:

Declaring types of arguments of a procedure or checking type of something when working with lists or Arrays is easy. For example one can easily use A :: list( posint ) or type( B :: 'Array'( polynom ) ), but with MutableSet, the same approach ends with an error;

Error, module does not have a ModuleType member to accept structured type arguments.

I guess it is the same for other objects defined as a module with option object. Is there a recommended way to have type declaration for such objects or MutableSet in specific?

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