Hi Waldek,

This thread is almost one year old, any opinions on this?

- Qian

On 4/17/24 10:29 PM, Qian Yun wrote:
> https://github.com/oldk1331/fricas/
> commit/642ce7d42e4168313816ba2dd703bfa04efa4cf0
> 
> Here is a sketch implementation of this idea,
> now dummyvars are gone.  The new implementation
> is much shorter than the old one.  The nesting kernels
> of high order derivatives are gone as well.
> 
> - Qian
> 
> On 4/16/24 20:47, Qian Yun wrote:
>> (I have not tried to implement the following idea in FriCAS.)
>>
>> I have always liked the idea presented in SICM (sister book
>> of SICP) Structure and Interpretation of Classical Mechanics:
>>
>> https://mitp-content-server.mit.edu/books/content/sectbyfn/
>> books_pres_0/9579/sicm_edition_2.zip/chapter001.html
>>
>> No dummy var involved. Instead view "diff" as a higher order
>> operator: it acts on other operator and returns a new operator.
>>
>> So instead of the having new kernels (and new dummy var)
>> for each new argument,
>>
>> (1) -> f := operator 'f
>>
>>     (1)  f
>>
>> (2) -> argument first kernels D(f(x),x)
>>
>>     (2)  [f(%A), %A, x]
>>
>> (3) -> argument first kernels D(f(x^2),x)
>>
>>                       2
>>     (3)  [f(%B), %B, x ]
>>
>>
>>
>> (4) -> argument first kernels D(f(x^3),x)
>>
>>                       3
>>     (4)  [f(%C), %C, x ]
>>
>> The new plan should be generating a "new operator" "%diff(f)"
>> and its argument are x,x^2,x^3 respectively.
>>
>> This "new operator" "%diff(f)" can store the argument "f"
>> into its properties, I guess.  And add special "%equal" for it.
>>
>> - Qian
>>
>> On 4/16/24 09:43, Waldek Hebisch wrote:
>>> If you look at 'src/input/derham.input' you will notice comment
>>> saying that it is quite slow for large n.  I looked a bit
>>> at this and first observation is that slowness is due to
>>> kernel manipulations.  Profile shows that almost all time goes
>>> into kernel maniputation, mainly 'SCACHE;linearSearch'.
>>> This is called from 'FS-;diffdiff' which is responsible for
>>> differentiating formal derivatives.  Linear search is necessary
>>> due to the way we implement formal derivatives.  But it is
>>> actually worse: repeating the same calculation shows growing
>>> time.  Just to see scale, one of calculation in
>>> 'src/input/derham.input' is to calculate second exterior
>>> derivative of general form in n variables.  General form
>>> involves n formal function in n variables.  First exterior
>>> derivative needs to compute n^2 partial derivatives (n functions
>>> times n variables).  Second exterior derivative needs
>>> n(n-1)n partial derivatives.  So togeter about n^3 derivatives.
>>> For n=8 this is about 512.  Even squared (due to linear search)
>>> this does not look like very large number of operations.
>>> However, formal derivative of order 2 contains derivatives of
>>> order 1.  And it seems that due to use of dummies we create
>>> new kernels, so when we repeat calculation, then our cache keep
>>> growing.
>>>
>>> This suggest that we should re-think representation of formal
>>> derivatives and possibly also use of dummies.
>>>

-- 
You received this message because you are subscribed to the Google Groups 
"FriCAS - computer algebra system" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to fricas-devel+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/fricas-devel/5eb9d215-03ad-4541-b6fc-e57cf9a3548d%40gmail.com.

Reply via email to