sursumCorda

1284 Reputation

15 Badges

3 years, 82 days

MaplePrimes Activity


These are questions asked by sursumCorda

Delay differential equations in Chebfun lists 15 examples "taken from the literature". Many of them can be (numerically) solved in Maple without difficulty, yet when I attempt to solve the  in the above link, Maple's internal solver `dsolve/numeric` just halts with an error. 

plots:-odeplot(dsolve({D(u)(t) + u(t)**2 + 2*u(1/2*t) = 1/2*exp(t), u(0) = u(1/3)}, type = numeric, range = 0 .. 1/3), size = ["default", "golden"]);
Error, (in dsolve/numeric) delay equations are not supported for bvp solvers

Even if I guess an initial (or final) value artificially, the solution is still less reliable (For instance, what is the approximate endpoint value? 0.26344 or 0.2668?): 

restart;
dde := D(u)(t) + u(t)**2 + u(t/2)*2 = exp(t)/2:
x__0 := 2668/10000:
sol0 := dsolve([dde, u(0) = x__0], type = numeric, 'delaymax' = 1/6, range = 0 .. 1/3):
plots['odeplot'](sol0, [[t, u(t)], [t, x__0]], 'size' = ["default", "golden"]);

x__1 := 26344/100000:
sol1 := dsolve([dde, u(1/3) = x__1], type = numeric, 'delaymax' = 1/6, range = 0 .. 1/3):
plots['odeplot'](sol1, [[t, u(t)], [t, x__1]], size = ["default", "golden"]);

Compare:  (Note that the reference numerical solution implies that its minimum should be no less than 0.258 (Is this incorrect?).).

And actually, the only known constraint is simply u(0)=u(⅓) (so neither value is known beforehand). Can Maple process this boundary condition automatically (that is, without the need for manual preprocessing and in absence of any other prior information)?
I have read the help page How to | Numeric Delay Differential Equations and Numerical Solution of Difficult ODE Boundary Value Problems, but it appears that those techniques are more or less ineffective here. So, how do I solve such a "first order nonlinear 'BVP' with pantograph delay" in Maple?

For instance, “[1, 2, 3]”, “[``([1, 2]), uneval([3])]”, and “[[1, 2], [3, 'NULL']]” are fully rectangular. “[1, 2, [3]]”, “[`[]`(1, 2), [3]]”, and “[[1, 2], [3, NULL]]” are considered nonrectangular, but if we temporarily freeze the "ragged" parts or regard them as a depth-1 container, the corresponding expressions will seem rectangular. `type(…, list(Non(list)))` and `type(…, listlist(Non(list)))` check these, but they do not work for general cases.
To be specific, the desired output should be something like

IsRectangular([[[l, 2], [3, 4]], [[5, 6], [7, 8]]]);
 = 
                            true, 3

IsRectangular([[[O, l, 2], [3, 4]], [[5, 6], [7, 8]]]);
 = 
                            false, 2

IsRectangular([[[[l], 2], [3, 4]], [[5, 6], [7, 8]]], 3);
 = 
                            true, 3

IsRectangular([[O, [l, 2], [3, 4]], [[5, 6], [7, 8]]], 2);
 = 
                            false, 1

The results above can be obtained by some observations. However, if the input has deeper levels, evaluating this will be a punishing work: 

test__1 := [[[[[[[[-288],[-287],[-286]],[[-285],[-284],[-283]],[[-282],[-281],[-280]],[[-279],[-278],[-277]]]],[[[[-276],[-275],[-274]],[[-273],[-272],[-271]],[[-270],[-269],[-268]],[[-267],[-266],[-265]]]],[[[[-264],[-263],[-262]],[[-261],[-260],[-259]],[[-258],[-257],[-256]],[[-255],[-254],[-253]]]]],[[[[[-252],[-251],[-250]],[[-249],[-248],[-247]],[[-246],[-245],[-244]],[[-243],[-242],[-241]]]],[[[[-240],[-239],[-238]],[[-237],[-236],[-235]],[[-234],[-233],[-232]],[[-231],[-230],[-229]]]],[[[[-228],[-227],[-226]],[[-225],[-224],[-223]],[[-222],[-221],[-220]],[[-219],[-218],[-217]]]]]],[[[[[[-216],[-215],[-214]],[[-213],[-212],[-211]],[[-210],[-209],[-208]],[[-207],[-206],[-205]]]],[[[[-204],[-203],[-202]],[[-201],[-200],[-199]],[[-198],[-197],[-196]],[[-195],[-194],[-193]]]],[[[[-192],[-191],[-190]],[[-189],[-188],[-187]],[[-186],[-185],[-184]],[[-183],[-182],[-181]]]]],[[[[[-180],[-179],[-178]],[[-177],[-176],[-175]],[[-174],[-173],[-172]],[[-171],[-170],[-169]]]],[[[[-168],[-167],[-166]],[[-165],[-164],[-163]],[[-162],[-161],[-160]],[[-159],[-158],[-157]]]],[[[[-156],[-155],[-154]],[[-153],[-152],[-151]],[[-150],[-149],[-148]],[[-147],[-146],[-145]]]]]],[[[[[[-144],[-143],[-142]],[[-141],[-140],[-139]],[[-138],[-137],[-136]],[[-135],[-134],[-133]]]],[[[[-132],[-131],[-130]],[[-129],[-128],[-127]],[[-126],[-125],[-124]],[[-123],[-122],[-121]]]],[[[[-120],[-119],[-118]],[[-117],[-116],[-115]],[[-114],[-113],[-112]],[[-111],[-110],[-109]]]]],[[[[[-108],[-107],[-106]],[[-105],[-104],[-103]],[[-102],[-101],[-100]],[[-99],[-98],[-97]]]],[[[[-96],[-95],[-94]],[[-93],[-92],[-91]],[[-90],[-89],[-88]],[[-87],[-86],[-85]]]],[[[[-84],[-83],[-82]],[[-81],[-80],[-79]],[[-78],[-77],[-76]],[[-75],[-74],[-73]]]]]],[[[[[[-72],[-71],[-70]],[[-69],[-68],[-67]],[[-66],[-65],[-64]],[[-63],[-62],[-61]]]],[[[[-60],[-59],[-58]],[[-57],[-56],[-55]],[[-54],[-53],[-52]],[[-51],[-50],[-49]]]],[[[[-48],[-47],[-46]],[[-45],[-44],[-43]],[[-42],[-41],[-40]],[[-39],[-38],[-37]]]]],[[[[[-36],[-35],[-34]],[[-33],[-32],[-31]],[[-30],[-29],[-28]],[[-27],[-26],[-25]]]],[[[[-24],[-23],[-22]],[[-21],[-20],[-19]],[[-18],[-17],[-16]],[[-15],[-14],[-13]]]],[[[[-12],[-11],[-10]],[[-9],[-8],[-7]],[[-6],[-5],[-4]],[[-3],[-2],[-1],[-0]]]]]]],[[[[[[[0],[1],[2]],[[3],[4],[5]],[[6],[7],[8]],[[9],[10],[11]]]],[[[[12],[13],[14]],[[15],[16],[17]],[[18],[19],[20]],[[21],[22],[23]]]],[[[[24],[25],[26]],[[27],[28],[29]],[[30],[31],[32]],[[33],[34],[35]]]]],[[[[[36],[37],[38]],[[39],[40],[41]],[[42],[43],[44]],[[45],[46],[47]]]],[[[[48],[49],[50]],[[51],[52],[53]],[[54],[55],[56]],[[57],[58],[59]]]],[[[[60],[61],[62]],[[63],[64],[65]],[[66],[67],[68]],[[69],[70],[71]]]]]],[[[[[[72],[73],[74]],[[75],[76],[77]],[[78],[79],[80]],[[81],[82],[83]]]],[[[[84],[85],[86]],[[87],[88],[89]],[[90],[91],[92]],[[93],[94],[95]]]],[[[[96],[97],[98]],[[99],[100],[101]],[[102],[103],[104]],[[105],[106],[107]]]]],[[[[[108],[109],[110]],[[111],[112],[113]],[[114],[115],[116]],[[117],[118],[119]]]],[[[[120],[121],[122]],[[123],[124],[125]],[[126],[127],[128]],[[129],[130],[131]]]],[[[[132],[133],[134]],[[135],[136],[137]],[[138],[139],[140]],[[141],[142],[143]]]]]],[[[[[[144],[145],[146]],[[147],[148],[149]],[[150],[151],[152]],[[153],[154],[155]]]],[[[[156],[157],[158]],[[159],[160],[161]],[[162],[163],[164]],[[165],[166],[167]]]],[[[[168],[169],[170]],[[171],[172],[173]],[[174],[175],[176]],[[177],[178],[179]]]]],[[[[[180],[181],[182]],[[183],[184],[185]],[[186],[187],[188]],[[189],[190],[191]]]],[[[[192],[193],[194]],[[195],[196],[197]],[[198],[199],[200]],[[201],[202],[203]]]],[[[[204],[205],[206]],[[207],[208],[209]],[[210],[211],[212]],[[213],[214],[215]]]]]],[[[[[[216],[217],[218]],[[219],[220],[221]],[[222],[223],[224]],[[225],[226],[227]]]],[[[[228],[229],[230]],[[231],[232],[233]],[[234],[235],[236]],[[237],[238],[239]]]],[[[[240],[241],[242]],[[243],[244],[245]],[[246],[247],[248]],[[249],[250],[251]]]]],[[[[[252],[253],[254]],[[255],[256],[257]],[[258],[259],[260]],[[261],[262],[263]]]],[[[[264],[265],[266]],[[267],[268],[269]],[[270],[271],[272]],[[273],[274],[275]]]],[[[[276],[277],[278]],[[279],[280],[281]],[[282],[283],[284]],[[285],[286],[287]]]]]]]]:
test__2 := [[[[[[[[-288],[-287],[-286]],[[-285],[-284],[-283]],[[-282],[-281],[-280]],[[-279],[-278],[-277]]]],[[[[-276],[-275],[-274]],[[-273],[-272],[-271]],[[-270],[-269],[-268]],[[-267],[-266],[-265]]]],[[[[-264],[-263],[-262]],[[-261],[-260],[-259]],[[-258],[-257],[-256]],[[-255],[-254],[-253]]]]],[[[[[-252],[-251],[-250]],[[-249],[-248],[-247]],[[-246],[-245],[-244]],[[-243],[-242],[-241]]]],[[[[-240],[-239],[-238]],[[-237],[-236],[-235]],[[-234],[-233],[-232]],[[-231],[-230],[-229]]]],[[[[-228],[-227],[-226]],[[-225],[-224],[-223]],[[-222],[-221],[-220]],[[-219],[-218],[-217]]]]]],[[[[[[-216],[-215],[-214]],[[-213],[-212],[-211]],[[-210],[-209],[-208]],[[-207],[-206],[-205]]]],[[[[-204],[-203],[-202]],[[-201],[-200],[-199]],[[-198],[-197],[-196]],[[-195],[-194],[-193]]]],[[[[-192],[-191],[-190]],[[-189],[-188],[-187]],[[-186],[-185],[-184]],[[-183],[-182],[-181]]]]],[[[[[-180],[-179],[-178]],[[-177],[-176],[-175]],[[-174],[-173],[-172]],[[-171],[-170],[-169]]]],[[[[-168],[-167],[-166]],[[-165],[-164],[-163]],[[-162],[-161],[-160]],[[-159],[-158],[-157]]]],[[[[-156],[-155],[-154]],[[-153],[-152],[-151]],[[-150],[-149],[-148]],[[-147],[-146],[-145]]]]]],[[[[[[-144],[-143],[-142]],[[-141],[-140],[-139]],[[-138],[-137],[-136]],[[-135],[-134],[-133]]]],[[[[-132],[-131],[-130]],[[-129],[-128],[-127]],[[-126],[-125],[-124]],[[-123],[-122],[-121]]]],[[[[-120],[-119],[-118]],[[-117],[-116],[-115]],[[-114],[-113],[-112]],[[-111],[-110],[-109]]]]],[[[[[-108],[-107],[-106]],[[-105],[-104],[-103]],[[-102],[-101],[-100]],[[-99],[-98],[-97]]]],[[[[-96],[-95],[-94]],[[-93],[-92],[-91]],[[-90],[-89],[-88]],[[-87],[-86],[-85]]]],[[[[-84],[-83],[-82]],[[-81],[-80],[-79]],[[-78],[-77],[-76]],[[-75],[-74],[-73]]]]]],[[[[[[-72],[-71],[-70]],[[-69],[-68],[-67]],[[-66],[-65],[-64]],[[-63],[-62],[-61]]]],[[[[-60],[-59],[-58]],[[-57],[-56],[-55]],[[-54],[-53],[-52]],[[-51],[-50],[-49]]]],[[[[-48],[-47],[-46]],[[-45],[-44],[-43]],[[-42],[-41],[-40]],[[-39],[-38],[-37]]]]],[[[[[-36],[-35],[-34]],[[-33],[-32],[-31]],[[-30],[-29],[-28]],[[-27],[-26],[-25]]]],[[[[-24],[-23],[-22]],[[-21],[-20],[-19]],[[-18],[-17],[-16]],[[-15],[-14],[-13]]]],[[[[-12],[-11],[-10]],[[-9],[-8],[-7]],[[-6],[-5],[-4]],[[-3],[-2,0],[-0]]]]]]],[[[[[[[-1],[1],[2]],[[3],[4],[5]],[[6],[7],[8]],[[9],[10],[11]]]],[[[[12],[13],[14]],[[15],[16],[17]],[[18],[19],[20]],[[21],[22],[23]]]],[[[[24],[25],[26]],[[27],[28],[29]],[[30],[31],[32]],[[33],[34],[35]]]]],[[[[[36],[37],[38]],[[39],[40],[41]],[[42],[43],[44]],[[45],[46],[47]]]],[[[[48],[49],[50]],[[51],[52],[53]],[[54],[55],[56]],[[57],[58],[59]]]],[[[[60],[61],[62]],[[63],[64],[65]],[[66],[67],[68]],[[69],[70],[71]]]]]],[[[[[[72],[73],[74]],[[75],[76],[77]],[[78],[79],[80]],[[81],[82],[83]]]],[[[[84],[85],[86]],[[87],[88],[89]],[[90],[91],[92]],[[93],[94],[95]]]],[[[[96],[97],[98]],[[99],[100],[101]],[[102],[103],[104]],[[105],[106],[107]]]]],[[[[[108],[109],[110]],[[111],[112],[113]],[[114],[115],[116]],[[117],[118],[119]]]],[[[[120],[121],[122]],[[123],[124],[125]],[[126],[127],[128]],[[129],[130],[131]]]],[[[[132],[133],[134]],[[135],[136],[137]],[[138],[139],[140]],[[141],[142],[143]]]]]],[[[[[[144],[145],[146]],[[147],[148],[149]],[[150],[151],[152]],[[153],[154],[155]]]],[[[[156],[157],[158]],[[159],[160],[161]],[[162],[163],[164]],[[165],[166],[167]]]],[[[[168],[169],[170]],[[171],[172],[173]],[[174],[175],[176]],[[177],[178],[179]]]]],[[[[[180],[181],[182]],[[183],[184],[185]],[[186],[187],[188]],[[189],[190],[191]]]],[[[[192],[193],[194]],[[195],[196],[197]],[[198],[199],[200]],[[201],[202],[203]]]],[[[[204],[205],[206]],[[207],[208],[209]],[[210],[211],[212]],[[213],[214],[215]]]]]],[[[[[[216],[217],[218]],[[219],[220],[221]],[[222],[223],[224]],[[225],[226],[227]]]],[[[[228],[229],[230]],[[231],[232],[233]],[[234],[235],[236]],[[237],[238],[239]]]],[[[[240],[241],[242]],[[243],[244],[245]],[[246],[247],[248]],[[249],[250],[251]]]]],[[[[[252],[253],[254]],[[255],[256],[257]],[[258],[259],[260]],[[261],[262],[263]]]],[[[[264],[265],[266]],[[267],[268],[269]],[[270],[271],[272]],[[273],[274],[275]]]],[[[[276],[277],[278]],[[279],[280],[281]],[[282],[283],[284]],[[285],[286],[287]]]]]]]]:
test__3 := [[[[[[[[-288],[-287],[-286]],[[-285],[-284],[-283]],[[-282],[-281],[-280]],[[-279],[-278],[-277]]]],[[[[-276],[-275],[-274]],[[-273],[-272],[-271]],[[-270],[-269],[-268]],[[-267],[-266],[-265]]]],[[[[-264],[-263],[-262]],[[-261],[-260],[-259]],[[-258],[-257],[-256]],[[-255],[-254],[-253]]]]],[[[[[-252],[-251],[-250]],[[-249],[-248],[-247]],[[-246],[-245],[-244]],[[-243],[-242],[-241]]]],[[[[-240],[-239],[-238]],[[-237],[-236],[-235]],[[-234],[-233],[-232]],[[-231],[-230],[-229]]]],[[[[-228],[-227],[-226]],[[-225],[-224],[-223]],[[-222],[-221],[-220]],[[-219],[-218],[-217]]]]]],[[[[[[-216],[-215],[-214]],[[-213],[-212],[-211]],[[-210],[-209],[-208]],[[-207],[-206],[-205]]]],[[[[-204],[-203],[-202]],[[-201],[-200],[-199]],[[-198],[-197],[-196]],[[-195],[-194],[-193]]]],[[[[-192],[-191],[-190]],[[-189],[-188],[-187]],[[-186],[-185],[-184]],[[-183],[-182],[-181]]]]],[[[[[-180],[-179],[-178]],[[-177],[-176],[-175]],[[-174],[-173],[-172]],[[-171],[-170],[-169]]]],[[[[-168],[-167],[-166]],[[-165],[-164],[-163]],[[-162],[-161],[-160]],[[-159],[-158],[-157]]]],[[[[-156],[-155],[-154]],[[-153],[-152],[-151]],[[-150],[-149],[-148]],[[-147],[-146],[-145]]]]]],[[[[[[-144],[-143],[-142]],[[-141],[-140],[-139]],[[-138],[-137],[-136]],[[-135],[-134],[-133]]]],[[[[-132],[-131],[-130]],[[-129],[-128],[-127]],[[-126],[-125],[-124]],[[-123],[-122],[-121]]]],[[[[-120],[-119],[-118]],[[-117],[-116],[-115]],[[-114],[-113],[-112]],[[-111],[-110],[-109]]]]],[[[[[-108],[-107],[-106]],[[-105],[-104],[-103]],[[-102],[-101],[-100]],[[-99],[-98],[-97]]]],[[[[-96],[-95],[-94]],[[-93],[-92],[-91]],[[-90],[-89],[-88]],[[-87],[-86],[-85]]]],[[[[-84],[-83],[-82]],[[-81],[-80],[-79]],[[-78],[-77],[-76]],[[-75],[-74],[-73]]]]]],[[[[[[-72],[-71],[-70]],[[-69],[-68],[-67]],[[-66],[-65],[-64]],[[-63],[-62],[-61]]]],[[[[-60],[-59],[-58]],[[-57],[-56],[-55]],[[-54],[-53],[-52]],[[-51],[-50],[-49]]]],[[[[-48],[-47],[-46]],[[-45],[-44],[-43]],[[-42],[-41],[-40]],[[-39],[-38],[-37]]]]],[[[[[-36],[-35],[-34]],[[-33],[-32],[-31]],[[-30],[-29],[-28]],[[-27],[-26],[-25]]]],[[[[-24],[-23],[-22]],[[-21],[-20],[-19]],[[-18],[-17],[-16]],[[-15],[-14],[-13]]]],[[[[-12],[-11],[-10]],[[-9],[-8],[-7]],[[-6],[-5],[-4]],[[-3],[-2,-0]]]]]]],[[[[[[-1],[[1],[2]],[[3],[4],[5]],[[6],[7],[8]],[[9],[10],[11]]]],[[[[12],[13],[14]],[[15],[16],[17]],[[18],[19],[20]],[[21],[22],[23]]]],[[[[24],[25],[26]],[[27],[28],[29]],[[30],[31],[32]],[[33],[34],[35]]]]],[[[[[36],[37],[38]],[[39],[40],[41]],[[42],[43],[44]],[[45],[46],[47]]]],[[[[48],[49],[50]],[[51],[52],[53]],[[54],[55],[56]],[[57],[58],[59]]]],[[[[60],[61],[62]],[[63],[64],[65]],[[66],[67],[68]],[[69],[70],[71]]]]]],[[[[[[72],[73],[74]],[[75],[76],[77]],[[78],[79],[80]],[[81],[82],[83]]]],[[[[84],[85],[86]],[[87],[88],[89]],[[90],[91],[92]],[[93],[94],[95]]]],[[[[96],[97],[98]],[[99],[100],[101]],[[102],[103],[104]],[[105],[106],[107]]]]],[[[[[108],[109],[110]],[[111],[112],[113]],[[114],[115],[116]],[[117],[118],[119]]]],[[[[120],[121],[122]],[[123],[124],[125]],[[126],[127],[128]],[[129],[130],[131]]]],[[[[132],[133],[134]],[[135],[136],[137]],[[138],[139],[140]],[[141],[142],[143]]]]]],[[[[[[144],[145],[146]],[[147],[148],[149]],[[150],[151],[152]],[[153],[154],[155]]]],[[[[156],[157],[158]],[[159],[160],[161]],[[162],[163],[164]],[[165],[166],[167]]]],[[[[168],[169],[170]],[[171],[172],[173]],[[174],[175],[176]],[[177],[178],[179]]]]],[[[[[180],[181],[182]],[[183],[184],[185]],[[186],[187],[188]],[[189],[190],[191]]]],[[[[192],[193],[194]],[[195],[196],[197]],[[198],[199],[200]],[[201],[202],[203]]]],[[[[204],[205],[206]],[[207],[208],[209]],[[210],[211],[212]],[[213],[214],[215]]]]]],[[[[[[216],[217],[218]],[[219],[220],[221]],[[222],[223],[224]],[[225],[226],[227]]]],[[[[228],[229],[230]],[[231],[232],[233]],[[234],[235],[236]],[[237],[238],[239]]]],[[[[240],[241],[242]],[[243],[244],[245]],[[246],[247],[248]],[[249],[250],[251]]]]],[[[[[252],[253],[254]],[[255],[256],[257]],[[258],[259],[260]],[[261],[262],[263]]]],[[[[264],[265],[266]],[[267],[268],[269]],[[270],[271],[272]],[[273],[274],[275]]]],[[[[276],[277],[278]],[[279],[280],[281]],[[282],[283],[284]],[[285],[286],[287]]]]]]]]:

Is there a generalized test procedure (e.g., ListTools:-IsRectangular) that effectively works for any nested list of an arbitrary nesting level? 

The so-called look-and-say sequence is something like:

# Starting digit: 0 
0→one 0→
10→one 1, then one 0→
1110→three 1's, then one 0→
3110→one 3, two 1's, then one 0→
132110→…

Rosetta Code gives an example of how to generate such sequences in Maple; however, the code in that example is lengthy. More to the point, compared to the subsequent Mathematica analogue, it is rather inefficient (though more readable, but that's not the point). 
I slightly modify the original code, and now the modified version is significantly faster than the original one: 
 

restart;

interface(version)NULL

`Standard Worksheet Interface, Maple 2023.1, Windows 10, July 7 2023 Build ID 1723669`

(1)
LookAndSay := proc(m::posint, n::nonnegint := 1, ` $`)::'Vector'(nonnegint);

LookAndSay(5, 0)NULL

Vector[column](%id = 36893490791509382076)

(2)

CodeTools['Usage'](LookAndSay(50), iterations = 4)

memory used=3.99GiB, alloc change=1.92MiB, cpu time=48.73s, real time=25.03s, gc time=39.05s

 

gc()time[real](LookAndSay(50))NULL

25.030

(3)


 

Download LookAndSay.mw

For the sake of convenience, I paste the original Maple code from the page above into here:

generate_seq := proc(s)
	local times, output, i;
	times := 1;
	output := "";
	for i from 2 to StringTools:-Length(s) do
		if (s[i] <> s[i-1]) then
			output := cat(output, times, s[i-1]);
			times := 1; # re-assign
		else 
			times ++;
		end if;
	end do;
	cat(output, times, s[i - 1]);
end proc:

Look_and_Say :=proc(n)
	local value, i;
	value := "1";
	print(value);
	for i from 2 to n do
		value := generate_seq(value);
		print(value);
	end do;
end proc:

#Test:
Look_and_Say(10);

Below is a modified version by me: 

LookAndSay := proc(m::posint, n::nonnegint := 1, $)::'Vector'(nonnegint);
    uses StringTools;
    local delete::'equationlist' := Repeat~(Explode(ExpandCharacterClass(":digit:")), 2), aux::procedure[nonnegint](posint) := proc(_::posint)::nonnegint;
        options cache;
        description "https://rosettacode.org/wiki/Look-and-say_sequence#Maple";
        if _ = 1 then
            n
        else
            local char::'nonemptystring' := String(thisproc(_ - 1)), temp::list(string)(*, str*);
            try
                temp := RegSplit(sprintf("(?=[%s])(?<=(?!%s)[%s])", Unique(char), Join(select[2](foldr, eval(apply), delete, rcurry(OrMap, Unique(char)), curry(curry, Has)), "|"), Unique(char)), char)
            catch "cannot compile regular expression: repetition-operator operand invalid":
                local rule::'equationlist' := (str -> str = Insert(str, 1, " "))~(subs(delete =~ NULL, Generate(2, Support(char))));
                temp := StringSplit(Subs(rule, char), " ") # to be replaced
            end;
            parse(String(seq('length(str), str[1]', str in temp)))
        fi;
    end;
    forget(aux);
    Vector[column](m, aux, datatype = nonnegint)
end:

The form LookAndSay(m, n); produces the first m terms in a "look-and-say" sequence starting with n (which is by default 1). Unfortunately, even if "the modified version is significantly faster than the original one", it is still much slower (25s versus 2.5s) than the uncompiled Mathematica implementation (on the same modern computer):

So, is there a workaround to evaluate LookAndSay(50, 1): in about three seconds (instead of half a minute) in the first call (without looking up a pre-calculated table) (on the same computer) as well? 

For instance, given nine integer x1, x2, …, x9 satisfying x1, x2, …, x9 ≥ -5 and x13x23+…+x93=0, the goal is to maximize x1 + x2 + … + x9. However, according to Optimization/Options,  is not accepted by the Optimization:-Maximize command. A probable method is applying floor into the optimization variables; unfortunately, I can only get: Error, (in Optimization:-NLPSolve) no improved point could be found

(*restart;*)
vars := [x || (1 .. 9)]:
Optimization:-Maximize(`?()`(`+`, floor~(expr)), [add(floor~(expr) ^~ 3) = 0, expr[] >=~ -5], initialpoint = (unapply~(expr) =~ rand(-5 .. 10))()); # Alternatives to exhaustive search?
Error, (in Optimization:-NLPSolve) no improved point could be found

Is there any workaround to solve this problem? 

I think that the following worksheet is self-explaining: 
 

restartNULL

interface(version)

`Standard Worksheet Interface, Maple 2023.1, Windows 10, July 7 2023 Build ID 1723669`

(1)

evalf(LinearAlgebra:-MatrixFunction(`<|>`(`<,>`(1, 0, 0), `<,>`(1, 1, I), `<,>`(3, 0, 2)), 'x'/(exp('x')-1), 'x'))

Matrix(%id = 36893489913840207380)

(2)

(* Yet in many cases, the input may be inexact, for we need to speed up computations and decrease memory usage. *)

m := Matrix([[1, 1, 3], [0, 1, 0], [0, I, 2]], datatype = complex(sfloat)):
Digits := 10:
do
    print(CodeTools:-Usage(LinearAlgebra:-MatrixFunction(m, 'x'/(exp('x') - 1), 'x'), quiet), Digits++)
until Digits > 20:

Matrix(3, 3, {(1, 1) = .5819767069, (1, 2) = -.3333333333+.1931757357*I, (1, 3) = -.8068242642, (2, 1) = 0., (2, 2) = .5819767069, (2, 3) = 0., (3, 1) = 0., (3, 2) = -.2689414214*I, (3, 3) = .3130352855}), 10

 

Matrix(3, 3, {(1, 1) = .5819767069, (1, 2) = -.33333333332+.19317573586*I, (1, 3) = -.8068242642, (2, 1) = 0., (2, 2) = .5819767069, (2, 3) = 0., (3, 1) = 0., (3, 2) = -.2689414214*I, (3, 3) = .3130352855}), 11

 

Matrix(3, 3, {(1, 1) = .5819767069, (1, 2) = -.333333333321+.193175735853*I, (1, 3) = -.8068242642, (2, 1) = 0., (2, 2) = .5819767069, (2, 3) = 0., (3, 1) = 0., (3, 2) = -.2689414214*I, (3, 3) = .3130352855}), 12

 

Matrix(3, 3, {(1, 1) = .5819767069, (1, 2) = -.3333333333209+.1931757358526*I, (1, 3) = -.8068242642, (2, 1) = 0., (2, 2) = .5819767069, (2, 3) = 0., (3, 1) = 0., (3, 2) = -.2689414214*I, (3, 3) = .3130352855}), 13

 

Matrix(3, 3, {(1, 1) = .5819767069, (1, 2) = -.33333333332087+.19317573585263*I, (1, 3) = -.8068242642, (2, 1) = 0., (2, 2) = .5819767069, (2, 3) = 0., (3, 1) = 0., (3, 2) = -.2689414214*I, (3, 3) = .3130352855}), 14

 

Matrix(3, 3, {(1, 1) = .5819767069, (1, 2) = -.333333333320870+.193175735852624*I, (1, 3) = -.8068242642, (2, 1) = 0., (2, 2) = .5819767069, (2, 3) = 0., (3, 1) = 0., (3, 2) = -.2689414214*I, (3, 3) = .3130352855}), 15

 

Matrix(3, 3, {(1, 1) = .5819767068693265, (1, 2) = .9999999999999999-3.806824264*I, (1, 3) = -.8068242641099854, (2, 1) = 0., (2, 2) = .5819767068693265, (2, 3) = 0., (3, 1) = 0., (3, 2) = -.2689414214*I, (3, 3) = .3130352854993314}), 16

 

Matrix(3, 3, {(1, 1) = .58197670686932644, (1, 2) = .99999999999999997-3.806824264*I, (1, 3) = -.80682426410998598, (2, 1) = 0., (2, 2) = .58197670686932644, (2, 3) = 0., (3, 1) = 0., (3, 2) = -.2689414214*I, (3, 3) = .31303528549933112}), 17

 

Matrix(3, 3, {(1, 1) = .581976706869326423, (1, 2) = -.999999999999999997+2.19317573589001464*I, (1, 3) = -.806824264109985348, (2, 1) = 0., (2, 2) = .581976706869326423, (2, 3) = 0., (3, 1) = 0., (3, 2) = -.2689414214*I, (3, 3) = .313035285499331308}), 18

 

Matrix(3, 3, {(1, 1) = .5819767068693264245, (1, 2) = -.2500000000000000000-0.5682426411e-1*I, (1, 3) = -.8068242641099853627, (2, 1) = 0., (2, 2) = .5819767068693264245, (2, 3) = 0., (3, 1) = 0., (3, 2) = -.2689414214*I, (3, 3) = .3130352854993313037}), 19

 

Matrix(%id = 36893489913905117652), 20

(3)

# Is `linalg:-matfunc` better than `LinearAlgebra:-MatrixFunction`?!
Digits := 10:
linalg:-matfunc(m, 'x'/(exp('x') - 1), 'x');

Matrix(3, 3, {(1, 1) = .5819767070, (1, 2) = -.3386968877+.2092663986*I, (1, 3) = -.8068242645, (2, 1) = 0., (2, 2) = .5819767070, (2, 3) = 0., (3, 1) = 0., (3, 2) = -.2689414215*I, (3, 3) = .3130352855})

(4)

(*
Even for a 3×3 matrix, the number of digits has to be set to 20.
So … how can you certify that the following output is validated?
*)
_seed := 1234:

LinearAlgebra:-MatrixFunction(LinearAlgebra:-RandomMatrix(50, density = .5, generator = -2*Pi .. 2*Pi, datatype = complex[8]), 'x'/(exp('x')-1), 'x')

Warning, the use of _seed is deprecated.  Please consider using one of the alternatives listed on the _seed help page.

 

Matrix(%id = 36893490216779135924)

(5)


 

Download funm.mws

How do you confirm the validity of the last output? 

> op(3, eval(LinearAlgebra:-MatrixFunction));
 = 
  Copyright (c) 2002 Waterloo Maple Inc. All rights reserved.

And does this mean that LinearAlgebra['MatrixFunction'] is so out-dated that the return value is less effective in certain cases?

First 9 10 11 12 13 14 15 Last Page 11 of 24