dharr

Dr. David Harrington

8917 Reputation

22 Badges

21 years, 149 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

@Jean-Michel See my remarks for a possible explanation. I was not answering the question.

For future reference, please upload a worksheet usung the green up-arrow in the Mapleprimes editor.

Your have two parameters sigma1 and sigma2 which don't have values. I'm assuming you want to find these, because you specified two extra boundary conditions. Is that correct, or were these meant to be given values?

Finding parameter values by specifying extra boundary conditions is possible, but much more difficult, often requiring you to give approximate solutions. So you might want to start with specified sigma1 and sigma2, just to make sure you can get some consistent solution.

The error looks a bit like a bug, but when I increase Digits to 20, which bypasses the efficient hardware floating point routines, I find a "matrix is singular" error. This suggests the problem is with the problem setup, not with the solving method. The system is too complicated for me to understand what exactly you are doing. Some boundary conditions look too simple, e.g., setting many values to zero at both boundaries, or some boundary values just proportional to others. Have you set the scale of the problem or does doubling the values of  the c and F quantities lead to another valid solution?

(I am not suggesting you use Digits = 20 other than for debugging purposes.)

You have parameters 100 and 0.01, differing by 4 orders of magnitude, which will make accurate solution difficult. Are the equations non-demensionalized to minimize this issue? Or you could try parameters closer to 1 for an initial solution.

You say it is slow, so does that mean you have a working version that stopped working when you added something. If so, that would be useful information. 

It seems like a tough problem, so perhaps you need to get simpler versions working first (one concentration and potential over [0..1]), if you haven't already done so.

dsolvebvp.mw 

@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). 

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