10
First of all, it helps a great deal to define f as follows:
ClearAll[f]
A = Exp[M];
f[x_, y_] := (weight*Exp[-pts*x]).A.(weight*Exp[-pts*y]);
Here, using SetDelayed (:=) is better than Set (=), because the latter creates a humongous symbolic expression that is very expensive to numericise. Defining A first ensures that Exp[M] is computed only once.
First@...
answered Mar 1 at 7:11
Henrik Schumacher
85.9k66 gold badges135135 silver badges247247 bronze badges
9
Perhaps this?:
Table[1/2 Gamma[(1 + n)/2], {n, 0, Length@# - 1}] . # &@
CoefficientList[poly1*poly2, x]
Low-order check:
poly1 = LaguerreL[4, x];
poly2 = LaguerreL[5, x];
Table[1/2 Gamma[(1 + n)/2], {n, 0, Length@# - 1}] . # &@
CoefficientList[poly1*poly2, x]
(* -(7981/240) + (38645 Sqrt[π])/2048 *)
Integrate[Exp[-x^2] poly1*poly2, {x, 0, ...
5
It all depends on "p and q are of roughly equal size". If they differ no more than say 10^6, the following works rather fast. E.g.:
fac[big_] := Module[{ne = NextPrime[Sqrt[big] - 1]},
While[Mod[big, ne] > 0, ne = NextPrime[ne]];
{ne,big/ne}
]
n = 80;
fac[NextPrime[10^n] NextPrime[10^n + 10^6] ]
(* {...
4
Interesting problem. The best I have been able to come up so far is this:
diffdata = Unitize[Subtract[braVecs, ketVecs]];
diffcounts = Total[diffdata];
F = q \[Function] Random`Private`PositionsOf[
Plus[
diffcounts,
SparseArray[Partition[q, 1] -> -1, ndim, 0].diffdata
],
0
];
For ndim = 50, the timings on my machine are as ...
3
I am using the IGraph/M package for this answer.
Approach 1:
Generate Prüfer sequences, convert to trees, filter duplicates based on canonical labelling.
In[17]:= Needs["IGraphM`"]
In[18]:= n = 7;
In[19]:= DeleteDuplicatesBy[
IGFromPrufer /@ Tuples[Range[n], n - 2],
CanonicalGraph
] // Length // AbsoluteTiming
Out[19]= {2.0961, 11}
...
3
Why not just use Solve straight?
f[tot_Integer] :=
Solve[a1 + a2 + a3 + a4 + b1 + b2 + b3 + b4 + c1 + c2 + c3 + c4 == tot
&& -4 < a1 <= a2 <= a3 <= a4 < 4
&& -7 < b1 <= b2 <= b3 <= b4 < 7
&& -4 < c1 <= c2 <= c3 <= c4 < 4,
{a1, a2, a3, a4, b1, b2, b3, b4, ...
2
Translating some of @gnasher729's suggestions to Mathematica gives indeed a superfast recipe:
$MaxExtraPrecision = 10^3;
f[x_Integer] := Module[{y, i, z, s},
y = Floor[Sqrt[x]];
Catch[
i = 0;
While[True,
z = (2 y + i)^2 - 4 x;
If[z >= 0 && IntegerQ[Sqrt[z]],
s = i/2 + y + {1, -1} Sqrt[z]/2;
If[IntegerQ[s[[1]]...
2
If x is around 10^150, let y = floor(sqrt(x)), and if y^2≠x then solve (y+k+1)(y-k)=x, (y+k+2)(y-k) = x, (y + k + 3)(y - k) = x etc. until you find a k that is an integer. This will cover a huge range, much larger than 10^6.
We know 0 <= d = x - y^2 <= 2y ≈ 2 x 10^75.
Take for example (y+k+2)(y-k) = y^2 + yk + 2y - ky - k^2 - 2k. We solve 2y - k^2 - 2k ...
2
We can use VertexComponent and FindPath to find all paths from a starting node as follows:
ClearAll[f]
f[g_, v_, l_] := Join @@ (FindPath[g, v, #, {l-1}, All] & /@ VertexComponent[g, v, l-1])
Example:
g = GridGraph[{10, 10}, VertexStyle -> White,
VertexLabels -> Placed["Name", Center], VertexSize -> Large];
Multicolumn[f[g, 36, ...
2
To simplify calculations, we introduce an x/y coordinate system x=1..10/y=1..10. The root: 36 reads then: {4,6}.
To change from x/y to linear coordinates, we define:
Clear[testwalked, step, tolin];
tolin[pos_] := (pos[[2]] + 10 (pos[[1]] - 1));
We further need a routine that checks if a move is acceptable:
testwalked[walked_List, dir_] := Module[{pos = Last@...
2
We can use the function System`DateListPlotDump`DateTicks to generate date ticks. Its argument pattern is:
System`DateListPlotDump`DateTicks[{mindate, maxdate}, ndivisons] (* or *)
System`DateListPlotDump`DateTicks[{mindate, maxdate}, ndivisons, labelformat]
Example:
data1 = TimeSeries[{1, 1, 2, 3, 5, 8, 11}, {"Jan 1, 2015"}];
data2 = TimeSeries[{...
2
I realized that building a partial prefix trie could actually have significant benefits if done right.
There are twos key realizations:
by the time you've computed the set of indices that agree over 4 of the dimensions, the number of remaining indices to compare drops by ~1/16th
since Complement[Range[ndim], q] is sorted, every prefix string will start with ...
1
I should indicate from the outset that this is not an answer to the question but an option to the OP for exploring different versions of his/her question. I should further indicate that the main function in the following code belongs to @kglr, who has developed it a few years ago. I could not find the link to share with you. Therefore, I give a small example....
Only top voted, non community-wiki answers of a minimum length are eligible
Related Tags
performance-tuning × 2388list-manipulation × 386
matrix × 196
numerical-integration × 128
plotting × 126
parallelization × 126
compile × 125
equation-solving × 101
programming × 100
differential-equations × 95
mathematical-optimization × 93
linear-algebra × 92
numerics × 77
graphs-and-networks × 72
memory × 72
functions × 71
image-processing × 65
code-review × 62
sparse-arrays × 59
graphics × 53
calculus-and-analysis × 52
function-construction × 51
table × 50
probability-or-statistics × 46
import × 43