Re: How to calculate the partial derivative?
- To: mathgroup at smc.vnet.net
- Subject: [mg128746] Re: How to calculate the partial derivative?
- From: Tang Laoya <tanglaoya1989 at gmail.com>
- Date: Fri, 23 Nov 2012 03:26:13 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-newout@smc.vnet.net
- Delivered-to: mathgroup-newsend@smc.vnet.net
- References: <k8jss7$5nl$1@smc.vnet.net> <k8ks07$858$1@smc.vnet.net>
Dear Dr. Hanlon,
Thank you very much for your kindly reply. Your method works for me, that's great.
Now I have another question:
I wish Mathematica give me an express which I can code by Fortran with smallest number of floating operations. For example, if I have:
bb1 = -Det[{{1, 1, 1}, {y2, y3, y4}, {z2, z3, z4}}];
the result by Mathematica is:
y3 z2 - y4 z2 - y2 z3 + y4 z3 + y2 z4 - y3 z4
I wish it output the result like this:
z2 (y3-y4) - z3 (y2-y4) + z4 (y2-y3)
What should I do?
Thanks,
Tang Laoya
On Thursday, November 22, 2012 5:43:45 PM UTC+8, Tang Laoya wrote:
> Dear all,
>
>
>
> Sorry for my unsuitable example. My final program is as follows, could anyone please help me to take a look at it?
>
>
>
>
>
> Thanks,
>
> Tang Laoya
>
>
>
>
>
> Clear["Global`*"];
>
> L1 = (a1 + b1 x + c1 y + d1 z)/6/V;
>
> L2 = (a2 + b2 x + c2 y + d2 z)/6/V;
>
> L3 = (a3 + b3 x + c3 y + d3 z)/6/V;
>
> L4 = (a4 + b4 x + c4 y + d4 z)/6/V;
>
>
>
> nod = 10;
>
> NN = Table[0, {nod}];
>
> NN[[1]] = L1 (2 L1 - 1);
>
> NN[[2]] = L2 (2 L2 - 1);
>
> NN[[3]] = L3 (2 L3 - 1);
>
> NN[[4]] = L4 (2 L4 - 1);
>
> NN[[5]] = 4 L1 L2;
>
> NN[[6]] = 4 L2 L3;
>
> NN[[7]] = 4 L3 L1;
>
> NN[[8]] = 4 L3 L4;
>
> NN[[9]] = 4 L4 L1;
>
> NN[[10]] = 4 L2 L4;
>
>
>
> NNT = Flatten[Table[NN[[i]], {i, 1, nod}]];
>
> Print["Dimensions of NNT:", Dimensions[NNT]];
>
>
>
> DNx = D[NNT, x]
>
> (* How to do to let the DNx have such express? For example, DNx[[1]] = b1/6/V*(2*L1-1) + L1*b1/3/V *)
>
>
>
> DNy = D[NNT, y]
>
> DNz = D[NNT, z]
>
> DNxx = Transpose[{DNx}].{DNx};
>
> DNyy = Transpose[{DNy}].{DNy};
>
> DNzz = Transpose[{DNz}].{DNz};
>
> Print["Dimensions of DNxx:", Dimensions[DNxx]];
>
>
>
> K = DNxx + DNyy + DNzz;
>
>
>
> (* I wish to replace all express "L1^aa*L2^bb*L3^cc*L4^dd" in matrix K by "aa!*bb!*cc!dd!/((aa+bb+cc+dd+3)!)*6*V", how to do? in the express, the aa, bb, cc or dd could be ZERO *)
>
>
>
> K = Expand[K];
>
> Print["Simplifying K"];
>
> K = Simplify[K]