如何用C++编程实现初等函数的求导问题,我根本没有思路。 5
2个回答
展开全部
初等函数是由幂函数、指数函数、对数函数、三角函数、反三角函数与常数经过有限次的有理运算(加、减、乘、除、有理数次乘方、有理数次开方)及有限次函数复合所产生、并且在定义域上能用一个解析式表示的函数。
所以将函数的类型枚举为:
monomial_type, exp_type, ln_type, sin_type, cos_type, tan_type, arcsin_type, arccos_type,arctan_tpye(这里暂时只考虑以e为底的指数和对数函数)
利用+ - 将每个部分分开(这里暂时没有考虑通过× ÷构造的符合函数,如果要考虑需要完善数据结构),比如说f(x)=sin(ln(x))-2*x^2+3,解析成sin(ln(x)) 和 -2*x^2 和 3
数据结构类似:
{部分数量,第一部分参数,第二部分参数...}
然后每一个部分的数据结构类似{层数,{第一层系数,第一层函数类型,第一层幂次数},{第二层系数,第二层函数类型,第一层幂次数} ... }
那刚才的f(x)=sin(ln(x))-2*x^2+3为例子
sin(-0.5*ln(x)):
{2,{1,sin_type,0,1},{-0.5,ln_type,1},{1,monomial_type,2}}
-2*x^2:
{1,{-2,monomial_type,2}}
+3:
{1,{3,monomial_type,0}}
PS:常数可以归为幂次数为0的幂函数。
相当于f(x)=sin(ln(x))-2*x^2+3对应的数据结构:
{3, {2,{1,sin_type,0,1},{-0.5,ln_type,1},{1,monomial_type,2}}, {1,{-2,monomial_type,2}},{1,{3,monomial_type,0}}}
然后按照求导的规则从里到外对这些数据结构进行操作就可以了
类似下面用c struct描述的数据结构:
struct elem_function;
struct elem_func_part ;
struct elem_func_layer;
struct elem_function
{
unsigned int part_cnt;
elem_func_part parts[MAX_SIZE];
};
struct elem_func_part
{
unsigned int layer_cnt;
elem_func_layer layers[MAX_SIZE];
}
struct elem_func_layer
{
double coef;
func_type type;
double exp;
}
typedef unsigned int func_type;
#define monomial_type 0x0;
#define exp_type 0x1;
....
所以将函数的类型枚举为:
monomial_type, exp_type, ln_type, sin_type, cos_type, tan_type, arcsin_type, arccos_type,arctan_tpye(这里暂时只考虑以e为底的指数和对数函数)
利用+ - 将每个部分分开(这里暂时没有考虑通过× ÷构造的符合函数,如果要考虑需要完善数据结构),比如说f(x)=sin(ln(x))-2*x^2+3,解析成sin(ln(x)) 和 -2*x^2 和 3
数据结构类似:
{部分数量,第一部分参数,第二部分参数...}
然后每一个部分的数据结构类似{层数,{第一层系数,第一层函数类型,第一层幂次数},{第二层系数,第二层函数类型,第一层幂次数} ... }
那刚才的f(x)=sin(ln(x))-2*x^2+3为例子
sin(-0.5*ln(x)):
{2,{1,sin_type,0,1},{-0.5,ln_type,1},{1,monomial_type,2}}
-2*x^2:
{1,{-2,monomial_type,2}}
+3:
{1,{3,monomial_type,0}}
PS:常数可以归为幂次数为0的幂函数。
相当于f(x)=sin(ln(x))-2*x^2+3对应的数据结构:
{3, {2,{1,sin_type,0,1},{-0.5,ln_type,1},{1,monomial_type,2}}, {1,{-2,monomial_type,2}},{1,{3,monomial_type,0}}}
然后按照求导的规则从里到外对这些数据结构进行操作就可以了
类似下面用c struct描述的数据结构:
struct elem_function;
struct elem_func_part ;
struct elem_func_layer;
struct elem_function
{
unsigned int part_cnt;
elem_func_part parts[MAX_SIZE];
};
struct elem_func_part
{
unsigned int layer_cnt;
elem_func_layer layers[MAX_SIZE];
}
struct elem_func_layer
{
double coef;
func_type type;
double exp;
}
typedef unsigned int func_type;
#define monomial_type 0x0;
#define exp_type 0x1;
....
更多追问追答
追问
可是对于定义之后要怎么求导呢,这个过程怎么样去实现呢?对不起,我实在是不懂而且作业很急,才继续追问的,对不起
可是对于定义之后要怎么求导呢,这个过程怎么样去实现呢?对不起,我实在是不懂而且作业很急,才继续追问的,对不起
--
2022-12-05 广告
2022-12-05 广告
图形化编程简单理解为用积木块形式编程,scratch和python也是其中的一种,属于入门级编程,以其简单生动的画面获得无数学生的喜爱,深圳市创客火科技有限公司是一家做教育无人机的公司,旗下有编程无人机,积木无人机及室内外编队,每款飞机含有...
点击进入详情页
本回答由--提供
2013-07-19
展开全部
到网上找数学函数库
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询