C 中 "pow" 函数的组合

Composition of "pow" functions in C

我正在尝试对几个方程求积分,但程序无法编译。出现的错误消息说:"too many arguments to function pow"

我会展示代码中有问题的部分,然后提出两个具体问题。

 #include <stdio.h> 
 #include <math.h>


 struct Par{
   double gamma1, gamma2;
 } aa;



 void ecuaciones(int n, double v[], double dv[], double t){
 dv[0]=v[6]   ; 

 dv[1]=v[7]   ;

 dv[2]=v[8]   ;

 dv[3]=v[9]   ; 

 dv[4]=v[10]   ; 

 dv[5]=v[11]   ; 

 dv[6]= aa.gamma1*(v[3]-v[0])*pow( (pow(v[0]-v[3], 2)+pow( v[1]-v[4], 2)+pow( v[2]-v[5], 2)), -1,5)  ; 

 dv[7]= aa.gamma1*(v[4]-v[1])*pow( (pow(v[0]-v[3], 2)+pow( v[1]-v[4], 2)+pow( v[2]-v[5], 2)), -1,5)    ; 

 dv[8]= aa.gamma1*(v[5]-v[2])*pow( (pow(v[0]-v[3], 2)+pow( v[1]-v[4], 2)+pow( v[2]-v[5], 2)), -1,5)   ; 

 dv[9]=  -aa.gamma2*(v[3]-v[0])*pow( (pow(v[0]-v[3], 2)+pow( v[1]-v[4], 2)+pow( v[2]-v[5], 2)), -1,5)  ; 

 dv[10]=  -aa.gamma2*(v[4]-v[1])*pow( (pow(v[0]-v[3], 2)+pow( v[1]-v[4], 2)+pow( v[2]-v[5], 2)), -1,5)  ; 

 dv[11]=  -aa.gamma2*(v[5]-v[2])*pow( (pow(v[0]-v[3], 2)+pow( v[1]-v[4], 2)+pow( v[2]-v[5], 2)), -1,5) ; 

所以...问题出在 6 到 11 的 dv 中。问题如下:

在这种情况下可以使用 "pow" 函数吗?还是它只是为常量基定义的? 如果答案是肯定的(我几乎可以肯定是),那么就会出现以下疑问: 如何将一个 pow 函数与另一个函数组合在一起?

为了清楚起见,这就是我想用"pow"个函数的组合来表达的:

请注意,至少有一种方法可以解决此问题:即以 A*A= A 平方的形式从基数中写出平方项,而不是使用 pow。鉴于基数可以提高到非整数的幂,我的意见是,一般情况下的解决方案仍然很重要。

这种情况下使用pow功能就可以了

您收到一个错误,因为您的外部 pow 函数每个都有三个参数,而 pow 只接受两个参数。

pow( (pow(v[0]-v[3], 2)+pow( v[1]-v[4], 2)+pow( v[2]-v[5], 2)), -1,5)

简化为

pow(some_number, -1, 5)

所以这需要修复,以便 pow 只有底数和指数。

将所有 -1,5 更改为 -1.5。我假设您正在尝试计算 3/2 的幂。