我已经编写了代码,通过创建一个名为“Der”的类来计算单个变量函数的导数。在class Der
中,我定义了两个私有变量double f
anddouble df
和一个print()
函数来打印f
and的值df
。在类中,我重载了运算符+, -, *, /, ^
来计算函数的和、差、乘等的导数。我不能展示整个代码,因为它很长,但我会展示一些片段来给出一个想法。
class Der{
private:
double f; // function value at x
double df; // derivative of function at x
public:
Der();
Der(double);
Der operator+(Der); // f + g
Der operator-(Der); // f - g
Der operator*(Der); // f * g
Der operator/(Der); // f / g
friend Der operator+(double, Der); //c+f
friend Der operator-(double, Der); //c-f
friend Der operator*(double, Der); //c*f
friend Der operator/(double, Der); //c/f
Der operator^(double); // f^c, Where c is constant
friend Der sin(Der);
friend Der cos(Der);
friend Der tan(Der);
friend Der log(Der);
friend Der exp(Der);
void print();
};
Der :: Der(){}
Der :: Der(double x){
this->f = x;
this->df = 1;
}
Der Der :: operator+(Der g){
Der h;
h.f = this->f + g.f;
h.df = this->df + g.df;
return h;
}
Der sin(Der g){
Der h;
h.f = sin(g.f);
h.df = cos(g.f)*g.df;
return h;
}
void Der :: print(){
cout<<"Derivative of function at a point : "<<df<<endl;
}
int main()
{
Der x(10), f;
f = x^2+x^3;
f.print();
}
现在我想用这个导数计算器来计算几个变量函数的偏导数,并最终计算出该函数的梯度。我有一些模糊的想法,但我无法在代码中实现它。我是 C++ 编程的初学者,所以如果你不使用太多高级概念会很有帮助。
任何形式的帮助将不胜感激。谢谢!
编辑:我已经添加了如何Der
使用。该程序应该接受自变量的输入,例如x(2), y(4), z(5)
和函数f(x,y,z)=x^2*y*z+log(x*y*z)
。然后,它将以数组的形式给出f
wrtx, y, z
在 point 处的偏导数。(2, 4, 5)
但是,我只需要一些关于如何编写偏导数计算器的想法。