Mike Mc Dermott

Mr. Michael McDermott

70 Reputation

3 Badges

16 years, 287 days
Self Employed
Circuit Analysis Engineer
Kokomo, Indiana, United States

Social Networks and Content at Maplesoft.com

MaplePrimes Activity


These are replies submitted by Mike Mc Dermott

It is my recollection that I used optimize before with what seemed to be improvement in efficiency using the cost function, but no noticable improvement in calculation speed as measured by the time[real] function. 

I will have to try again with a real-world problem.

@Carl Love 

 

with(codegen, optimize, makeproc, cost, prep2trans);
f2 := [r1 = a + b + c, r2 = a + b];
optimize(f2);
 = 
                   r1 = a + b + c, r2 = a + b

optimize(f2, tryhard);
 = 
                   r1 = a + b + c, r2 = a + b

 

@Carl Love 
That is the information I was looking for. Is is possible for maple to add more information in the error messages, like which top-level procedure produced the error?

l thought PD was a command based on the error message. 
As far as I know, i am not performing recursive calculations. That's why the error messaged confused me.

@acer 

Thanks for the answer. it's probably just as easy to create a Table from other commands. I think it would be a good feature to add to allow an optional arguement to the Tabulate command to set column widths.

I don't mean with the gui, with a command.

@acer Matrix(r,c,init)


 

restart; with(Syrup)

[About, Draw, GetParameters, Library, Print, Solve, ToModelica, ToSpice]

(1)

NULL

test

Error, missing operator or `;`

I can get a solution by hard-coding a value '10' in 2 places for i1

sol := Solve("ec:CodeEditRegion0")

{v[1] = 12, v[2] = RootOf(10*ifelse(Vclamp < _Z, (RClamp*ileak-Vclamp+_Z)/RClamp, ileak)-12+_Z)}

(2)

allvalues(eval[recurse](v[2], `union`(sol, {RClamp = .1, Vclamp = 10, ileak = 10^(-6), v1 = 12})))

10.01980188, 11.99999000+0.4909875000e-35*I

(3)

If all values numeric, then the real solution is what we are looking for, so we know that Syrup can solve the problem numerically.
Syrup can't solve using symbolic option.

solSymbolic := solve("ec:CodeEditRegion0", symbolic)

Error, invalid input: solve expects its 1st argument, eqs, to be of type {`and`, `not`, `or`, algebraic, relation(algebraic), {list, set}({`and`, `not`, `or`, algebraic, relation(algebraic)})}, but received ec:CodeEditRegion0

 

````

NULL
My question is if there is a way to somehow put placeholders in the netlist, and assign values to the placeholders before submitting to Solve.
A work-around would be do do this with sort of manually by a procedure that would replace the placeholders in the netlist with numeric values before the Solve command. This procedure would be inside the optimization loop to get the extreme result values based on the ranges of the parameters.
 


 

Download SyrupConditional.mw

The 2nd link is more complete.

Page 1 of 1