Skip to content

Instantly share code, notes, and snippets.

@theawesomecoder61
Created March 3, 2020 06:18
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save theawesomecoder61/1314bbd935b5dfe8016f32d2048db963 to your computer and use it in GitHub Desktop.
Save theawesomecoder61/1314bbd935b5dfe8016f32d2048db963 to your computer and use it in GitHub Desktop.
HP Prime: Partial derivatives chain rule
// diffchain by pineapples721
// Instructions
// 1. Create a CAS program.
// 2. Conenct your calculator to your PC. Launch the Connectivity Kit.
// 3. Paste this in to the new CAS program.
//2fns, 2vars
#cas
diff22(zfn,xfn,yfn):=
begin
local dxds:=diff(xfn,s);
local dxdt:=diff(xfn,t);
local dyds:=diff(yfn,s);
local dydt:=diff(yfn,t);
local dzdx:=diff(zfn,x);
local dzdy:=diff(zfn,y);
local dzds:=0;
local dzdt:=0;
dzds:=(dzdx*dxds)+(dzdy*dyds);
dzdt:=(dzdx*dxdt)+(dzdy*dydt);
dzds:=subst(subst(dzds,x=xfn),y=yfn);
dzdt:=subst(subst(dzdt,x=xfn),y=yfn);
return {{"∂z/∂s",dzds},{"∂z/∂t",dzdt}};
end;
#end
//2fns, 3vars
#cas
diff23(zfn,xfn,yfn):=
begin
local dxdr:=diff(xfn,r);
local dxds:=diff(xfn,s);
local dxdt:=diff(xfn,t);
local dydr:=diff(yfn,r);
local dyds:=diff(yfn,s);
local dydt:=diff(yfn,t);
local dzdx:=diff(zfn,x);
local dzdy:=diff(zfn,y);
local dzdr:=0;
local dzds:=0;
local dzdt:=0;
dzdr:=(dzdx*dxdr)+(dzdy*dydr);
dzds:=(dzdx*dxds)+(dzdy*dyds);
dzdt:=(dzdx*dxdt)+(dzdy*dydt);
dzdr:=subst(subst(dzdr,x=xfn),y=yfn);
dzds:=subst(subst(dzds,x=xfn),y=yfn);
dzdt:=subst(subst(dzdt,x=xfn),y=yfn);
return {{"∂z/∂r",dzdr},{"∂z/∂s",dzds},{"∂z/∂t",dzdt}};
end;
#end
//3fns, 2vars
#cas
diff32(wfn,xfn,yfn,zfn):=
begin
local dxds:=diff(xfn,s);
local dxdt:=diff(xfn,t);
local dyds:=diff(yfn,s);
local dydt:=diff(yfn,t);
local dzds:=diff(zfn,s);
local dzdt:=diff(zfn,t);
local dwdx:=diff(wfn,x);
local dwdy:=diff(wfn,y);
local dwdz:=diff(wfn,z);
local dwds:=0;
local dwdt:=0;
dwds:=(dwdx*dxds)+(dwdy*dyds)+(dwdz*dzds);
dwdt:=(dwdx*dxdt)+(dwdy*dydt)+(dwdz*dzdt);
dwds:=subst(subst(subst(dwds,x=xfn),y=yfn),z=zfn);
dwdt:=subst(subst(subst(dwdt,x=xfn),y=yfn),z=zfn);
return {{"∂w/∂s",dwds},{"∂w/∂t",dwdt}};
end;
#end
//3fns, 3vars
#cas
diff33(wfn,xfn,yfn,zfn):=
begin
local dxdr:=diff(xfn,r);
local dxds:=diff(xfn,s);
local dxdt:=diff(xfn,t);
local dydr:=diff(yfn,r);
local dyds:=diff(yfn,s);
local dydt:=diff(yfn,t);
local dzdr:=diff(zfn,r);
local dzds:=diff(zfn,s);
local dzdt:=diff(zfn,t);
local dwdx:=diff(wfn,x);
local dwdy:=diff(wfn,y);
local dwdz:=diff(wfn,z);
local dwdr:=0;
local dwds:=0;
local dwdt:=0;
dwdr:=(dwdx*dxdr)+(dwdy*dydr)+(dwdz*dzdr);
dwds:=(dwdx*dxds)+(dwdy*dyds)+(dwdz*dzds);
dwdt:=(dwdx*dxdt)+(dwdy*dydt)+(dwdz*dzdt);
dwdr:=subst(subst(subst(dwdr,x=xfn),y=yfn),z=zfn);
dwds:=subst(subst(subst(dwds,x=xfn),y=yfn),z=zfn);
dwdt:=subst(subst(subst(dwdt,x=xfn),y=yfn),z=zfn);
return {{"∂w/∂r",dwdr},{"∂w/∂s",dwds},{"∂w/∂t",dwdt}};
end;
#end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment