dharr

Dr. David Harrington

8917 Reputation

22 Badges

21 years, 142 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 retired professor of chemistry at the University of Victoria, BC, Canada. 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

@dharr Ahh, yes, I see how to generalize that:

General.mw

@Harry Garst Your procedure F expects 6 arguments but you gave it 9. Maple ignores those last 3, so taking the first 100 was just taking all combinations of the first 3 and all combinations for the next 3, and can be simplified as:

A4_B5_C4.mw

@Harry Garst For your original question, it seems that the relationship only works for d1 = 3 and taking all the combinations of 2 things out of d2. Trying with random matrices for efficiency  (rather than symbolic ones) for d1=4 and d2=6 there is no value for combinations out of d2 for which the relationship works. I played around a bit, but don't understand why it works in the d1=2; two combination case:

Adjoint353_4.mw

Since you discovered this, I guess you understand better why it works. Since it is not general, it likely doesn't have a name.

Your second example takes the inverse of a block matrix; I don't think this has a special name, but I didn't follow it in detail. Take a look into Schur complements, which may be related.

I understand the 100 possibilities to be 10 x 10, with 10 being the ways to choose 2 things out of 5. Is it 2 because it is d2 - d1? or is it 2 regardless of the size of the matrices.

I don't know of such a formula, but seems bear to  some resemblance to Cauchy-Binet.

Simplified code:

Adjoint353_3.mw

@salim-barzani I don't understand what you mean. I don't understand why the paper doesn't use Eq 2.5 to change Eq 2.8 to an algebraic equation in R and just solve it (for a chosen n). The paper is carelessly prepared and there are some sign issues especially with Eqs 2.2 and 2.5 and the phi equivalent to 2.5 (that @janhardo used, and is not what the paper says). I don't understand about eq 2.2 and the chirp, which just seems to come out of nowhere. Maybe you understand that and can fix the sign issue. Maybe you know how to go from 2.8 to 2.9. This seems like a poor paper to work from to learn this method; I certainly am not spending any more time on it without an explanation of these unresolved issues. Probably just get a different paper that uses the same method and work from that.

@salim-barzani I don't know how they got from 2.8 to 2.9 so I stopped there.

@janhardo I was stuck until I saw your answer, substituting R' instead of phi'. Vote up. Like many similar papers there are lots of typos and poor descriptions.

s1.mw

@salim-barzani The wikipedia page has something about the analogy with trig functions. Its doubly-periodic nature can be shown in a plot:

Doubly periodic nature of the Weierstrass function. For example a hexagonal lattice with unit cell vectors in the complex plane at 60degrees apart. The poles are at the lattice points

See DLMF - 23.5.8 for lattice with omega__1  real, periodicity along the real axis = 2*omega__1. The g-invariants are

restart

g__2 := 0; g__3 := GAMMA(1/3)^18/(4*Pi*`ω__1`)^6

0

(64/19683)*Pi^12/(GAMMA(2/3)^18*omega__1^6)

omega_1 = 1.

f := WeierstrassP(z, g__2, eval(g__3, `ω__1` = 1))

WeierstrassP(z, 0, (64/19683)*Pi^12/GAMMA(2/3)^18)

p := plots:-complexplot3d(f, z = -5-5*I .. 5+5*I, view = [default, default, 0 .. 4])

Looking down

plots:-display(p, orientation = [-90, 0], style = surfacecontour)

NULL

Download Weierstrass.mw

@salim-barzani I did Eq 47 at the bottom, as in table 2. odetest gives zero.

ode-17.mw

If I put in some random values for the parameters, I don't get zero, so it doesn't seem to be a solution.

T-pde.mw

Interesting bug. I reduced it down to a smaller example within a worksheet.

This version works correctly - the bitmask bm has 1000 1's so Anding with num1 (which has fewer bits) just returns num1

restart

n := 1000; num := 124345994492475404798327875362902901992795666778727657534420884655177904531686659133645511903099791240872149553399687857146297830364878763673608694434636759773303896159506085472672670558713210501921333058462227444188822916868591893071268581049687884472831284477016171744356197692209391893001975814590875407081409079843847570753624652978353229534727345944100084962186575445080168254068349693213343402194051212518373483099158508416844494586587575956364301894537801311066848168445514196432228108255100694654760323061911666708425773177386359200866161779630276830551354956041869854482996129392080604969770318232847290083683448702192322340; bm := integermul2exp(1, n)-1

10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069375

NULL

NULL

operation := proc (num, n) local q, k; q := num; for k to 2 do q := integerdivq2exp(q, n) end do; q end proc

NULL

num1 := 1083029963437854242395921050992

1083029963437854242395921050992

num1_And_result := Bits:-And(num1, bm)

1083029963437854242395921050992

NULL

Now we do exactly the same but running "operation"  (line uncommented) before defining num1. The value of num1_And_result is now much longer - the low order bits match those of num1 but there are extra high order bits

restart

n := 1000; num := 124345994492475404798327875362902901992795666778727657534420884655177904531686659133645511903099791240872149553399687857146297830364878763673608694434636759773303896159506085472672670558713210501921333058462227444188822916868591893071268581049687884472831284477016171744356197692209391893001975814590875407081409079843847570753624652978353229534727345944100084962186575445080168254068349693213343402194051212518373483099158508416844494586587575956364301894537801311066848168445514196432228108255100694654760323061911666708425773177386359200866161779630276830551354956041869854482996129392080604969770318232847290083683448702192322340; bm := integermul2exp(1, n)-1

10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069375

NULL

NULL

operation := proc (num, n) local q, k; q := num; for k to 2 do q := integerdivq2exp(q, n) end do; q end proc

NULL

operation(num, n)

1083029963437854242395921050992

num1 := 1083029963437854242395921050992

1083029963437854242395921050992

num1_And_result := Bits:-And(num1, bm)

1830994333800291384327304938937691735750004293893503924104067280873348896706437751150658315935255321166852220199930976133533210823991007641683152920140445237629081271967190811426086258505503763155530649996669558866130785263471490070113476827138676322045464116977583554908224267729573167448333358722416

NULL

But if we define num1 before running operation, it is OK.

restart

n := 1000; num := 124345994492475404798327875362902901992795666778727657534420884655177904531686659133645511903099791240872149553399687857146297830364878763673608694434636759773303896159506085472672670558713210501921333058462227444188822916868591893071268581049687884472831284477016171744356197692209391893001975814590875407081409079843847570753624652978353229534727345944100084962186575445080168254068349693213343402194051212518373483099158508416844494586587575956364301894537801311066848168445514196432228108255100694654760323061911666708425773177386359200866161779630276830551354956041869854482996129392080604969770318232847290083683448702192322340; bm := integermul2exp(1, n)-1

10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069375

NULL

NULL

operation := proc (num, n) local q, k; q := num; for k to 2 do q := integerdivq2exp(q, n) end do; q end proc

NULL

num1 := 1083029963437854242395921050992

1083029963437854242395921050992

operation(num, n)

1083029963437854242395921050992

num1_And_result := Bits:-And(num1, bm)

1083029963437854242395921050992

It is also OK if we alter the call to operation so the output is different - argument 1001 instead of n = 1000

restart

n := 1000; num := 124345994492475404798327875362902901992795666778727657534420884655177904531686659133645511903099791240872149553399687857146297830364878763673608694434636759773303896159506085472672670558713210501921333058462227444188822916868591893071268581049687884472831284477016171744356197692209391893001975814590875407081409079843847570753624652978353229534727345944100084962186575445080168254068349693213343402194051212518373483099158508416844494586587575956364301894537801311066848168445514196432228108255100694654760323061911666708425773177386359200866161779630276830551354956041869854482996129392080604969770318232847290083683448702192322340; bm := integermul2exp(1, n)-1

10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069375

NULL

NULL

operation := proc (num, n) local q, k; q := num; for k to 2 do q := integerdivq2exp(q, n) end do; q end proc

NULL

operation(num, 1001)

270757490859463560598980262748

num1 := 1083029963437854242395921050992

1083029963437854242395921050992

num1_And_result := Bits:-And(num1, bm)

1083029963437854242395921050992

NULL

Download Bits_bug2.mw

There are instructions for migrating to Maple Flow (not Maple) and downloading the Migration Assistant at https://www.maplesoft.com/products/mapleflow/migrating-to-maple-flow/

(I don't use Maple Flow and don't have any experience with this.)

@Alfred_F I like to distinguish polynomial systems from more complicated nonlinear systems, since Maple is very good at dealing with polynomials systems (including with inequalities). 

Your expand(dio1) didn't work because you entered the multiplcations in dio1 as "." (matrix multiplication) rather than "*". If you change those then expand(dio1) works as expected. Now for the harder bit...

@Blanc In the GroupTheory package you can set up the finite field with GeneralLinearGroup(1,53), but the elements are permutations, so not so easy to work with. But outside of the GroupTheory package you can find the primitive elements with the GF commands.

restart;

Set up the finite field.

F := GF(53, 1);

_m2143189235968

If we want to represent the elements by integers we need to use the ConvertIn, ConvertOut mechanism. For example

2*31 mod 53;

9

two := F:-ConvertIn(2);
thirty_one := F:-ConvertIn(31);

modp1(ConvertIn(2, T), 53)

modp1(ConvertIn(31, T), 53)

Shorthand way

use F in
two*thirty_one
end use;

modp1(ConvertIn(9, T), 53)

Longer way

F:-`*`(two, thirty_one);
F:-ConvertOut(%);

modp1(ConvertIn(9, T), 53)

9

We can find a primitive element at random and check its multiplicative order is 52

F:-PrimitiveElement();
F:-order(%);

modp1(ConvertIn(21, T), 53)

52

To find all the primitive elements - there are 24 of them

[seq(F:-ConvertIn(i), i = 1..52)]:
map(F:-ConvertOut, select(F:-isPrimitiveElement, %));
nops(%);

[2, 3, 5, 8, 12, 14, 18, 19, 20, 21, 22, 26, 27, 31, 32, 33, 34, 35, 39, 41, 45, 48, 50, 51]

24

 

Download Field.mw

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