臣服txt下载:微分和偏微分的计算

来源:百度文库 编辑:九乡新闻网 时间:2024/05/05 15:35:36

微分和偏微分的计算

(2007-09-29 18:08:26)转载 标签:

我记录

我的校园

计算a的n次方

算法

问题

校园

科学

个人见解

文化

计算机

计算机语言

c

分类: c++ #include
#include
using namespace std;
typedef double T1;
class weifen
{
public:
 weifen()
 {
 
 }
 T1 f(T1 x=0,T1 y=0,T1 z=0)  /*要计算的函数*/
 {
  return x*x*y*z*z+y*y*y+z*z;
 }
 T1 workout(T1 x=0,int n=1,T1 de=1e-6)/*计算函数f(x)的微分,n表示次数*/
 {
  if(n==0)return f(x);
  else return (workout(x+de,n-1,de)-workout(x,n-1,de))/de;
 }
 /*计算f(x,y,z)的偏微分,由于技术原因,暂时只能计算二次偏微分,d为计算偏微分的次序,例如计算"x,y"便导,*d="xy"*/
 T1 pworkout(const char* d,T1 x=0.0,T1 y=0.0,T1 z=0.0,int begain=0,int n=0,T1 de=1e-6)
 {
  if(begain>strlen(d))begain=0;
  if(n>0&&(n+begain)<=strlen(d))n=begain+n;
  else n=strlen(d);
  if(begain==n)return f(x,y,z);
  else
  {
   T1 rs;
   switch(d[begain++])
   {
   case 'x':rs=(pworkout(d,x+de,y,z,begain,n,de)-pworkout(d,x,y,z,begain,n,de))/de;break;
   case 'y':rs=(pworkout(d,x,y+de,z,begain,n,de)-pworkout(d,x,y,z,begain,n,de))/de;break;
   case 'z':rs=(pworkout(d,x,y,z+de,begain,n,de)-pworkout(d,x,y,z,begain,n,de))/de;break;
   default:rs=0;
   };
   return rs;
  }
 }
};