<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
  <channel>
    <title>MaplePrimes - answers and comments on Question, Implementing Differential Operator applied to Matrix</title>
    <link>http://www.mapleprimes.com/questions/135732-Implementing-Differential-Operator-Applied</link>
    <language>en-us</language>
    <copyright>2026 Maplesoft, A Division of Waterloo Maple Inc.</copyright>
    <generator>Maplesoft Document System</generator>
    <lastBuildDate>Tue, 09 Jun 2026 09:28:09 GMT</lastBuildDate>
    <pubDate>Tue, 09 Jun 2026 09:28:09 GMT</pubDate>
    <itunes:subtitle />
    <itunes:summary />
    <description>The latest answers and comments added to the Question, Implementing Differential Operator applied to Matrix</description>
    <image>
      <url>http://www.mapleprimes.com/images/mapleprimeswhite.jpg</url>
      <title>MaplePrimes - answers and comments on Question, Implementing Differential Operator applied to Matrix</title>
      <link>http://www.mapleprimes.com/questions/135732-Implementing-Differential-Operator-Applied</link>
    </image>
    <item>
      <title>No immediate solution</title>
      <link>http://www.mapleprimes.com/questions/135732-Implementing-Differential-Operator-Applied?ref=Feed:MaplePrimes:Implementing Differential Operator applied to Matrix:Comments#answer135734</link>
      <itunes:summary>&lt;p&gt;I don't see any immediate solution, but the following at least works.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;C:=Matrix([[D[1],0,D[2]],[0,D[2],D[1]]]);&lt;br&gt;B:=;&lt;br&gt;freeze~(B);&lt;br&gt;C.%;&lt;br&gt;evalindets(%,`*`,apply@op);&lt;br&gt;thaw~(%);&lt;br&gt;%;&lt;/p&gt;
&lt;p&gt;#Putting this into a procedure:&lt;/p&gt;
&lt;p&gt;`&amp;amp;p`:=proc(d,v) local a,b;&lt;br&gt;&amp;nbsp;&amp;nbsp; a:=d.freeze~(v);&lt;br&gt;&amp;nbsp;&amp;nbsp; b:=thaw~(evalindets(a,`*`,apply@op));&lt;br&gt;&amp;nbsp;&amp;nbsp; eval(b)&lt;br&gt;end proc;&lt;br&gt;&amp;nbsp; &amp;nbsp;&lt;br&gt;C &amp;amp;p B;&lt;/p&gt;
&lt;p&gt;#####Later addition:&lt;br&gt;In the more general case where your differential operators in the matrix are polynomials in D[1] and D[2] you will have to freeze C too:&lt;br&gt;&lt;br&gt;Take as a simple example the matrix A below which has the linear differential operator T as one of its elements:&lt;/p&gt;
&lt;p&gt;T:=-3*D[1]+7*D[2]+(f-&amp;gt;6*f);&lt;br&gt;#Testing it on a function g:&lt;br&gt;T(g);&lt;br&gt;A:=Matrix([[T,0,D[2]],[0,D[2],D[1]]]);&lt;br&gt;#Now just modify the procedure above so that A will be frozen too:&lt;br&gt;`&amp;amp;p`:=proc(d,v) local a,b;&lt;br&gt;&amp;nbsp;&amp;nbsp; a:=freeze~(d).freeze~(v);&lt;br&gt;&amp;nbsp;&amp;nbsp; b:=thaw~(evalindets(a,`*`,apply@op));&lt;br&gt;&amp;nbsp;&amp;nbsp; eval(b)&lt;br&gt;end proc;&lt;br&gt;&amp;nbsp; &amp;nbsp;&lt;br&gt;A &amp;amp;p B;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;</itunes:summary>
      <description>&lt;p&gt;I don't see any immediate solution, but the following at least works.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;C:=Matrix([[D[1],0,D[2]],[0,D[2],D[1]]]);&lt;br&gt;B:=;&lt;br&gt;freeze~(B);&lt;br&gt;C.%;&lt;br&gt;evalindets(%,`*`,apply@op);&lt;br&gt;thaw~(%);&lt;br&gt;%;&lt;/p&gt;
&lt;p&gt;#Putting this into a procedure:&lt;/p&gt;
&lt;p&gt;`&amp;amp;p`:=proc(d,v) local a,b;&lt;br&gt;&amp;nbsp;&amp;nbsp; a:=d.freeze~(v);&lt;br&gt;&amp;nbsp;&amp;nbsp; b:=thaw~(evalindets(a,`*`,apply@op));&lt;br&gt;&amp;nbsp;&amp;nbsp; eval(b)&lt;br&gt;end proc;&lt;br&gt;&amp;nbsp; &amp;nbsp;&lt;br&gt;C &amp;amp;p B;&lt;/p&gt;
&lt;p&gt;#####Later addition:&lt;br&gt;In the more general case where your differential operators in the matrix are polynomials in D[1] and D[2] you will have to freeze C too:&lt;br&gt;&lt;br&gt;Take as a simple example the matrix A below which has the linear differential operator T as one of its elements:&lt;/p&gt;
&lt;p&gt;T:=-3*D[1]+7*D[2]+(f-&amp;gt;6*f);&lt;br&gt;#Testing it on a function g:&lt;br&gt;T(g);&lt;br&gt;A:=Matrix([[T,0,D[2]],[0,D[2],D[1]]]);&lt;br&gt;#Now just modify the procedure above so that A will be frozen too:&lt;br&gt;`&amp;amp;p`:=proc(d,v) local a,b;&lt;br&gt;&amp;nbsp;&amp;nbsp; a:=freeze~(d).freeze~(v);&lt;br&gt;&amp;nbsp;&amp;nbsp; b:=thaw~(evalindets(a,`*`,apply@op));&lt;br&gt;&amp;nbsp;&amp;nbsp; eval(b)&lt;br&gt;end proc;&lt;br&gt;&amp;nbsp; &amp;nbsp;&lt;br&gt;A &amp;amp;p B;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;</description>
      <guid>135734</guid>
      <pubDate>Mon, 09 Jul 2012 18:36:14 Z</pubDate>
      <itunes:author>Preben Alsholm</itunes:author>
      <author>Preben Alsholm</author>
    </item>
  </channel>
</rss>