“的组成”;“战俘”;C语言中的函数
我正试图整合几个方程式,但程序无法编译。出现的错误消息是:“函数pow的参数太多” 我将展示代码中有问题的部分,然后提出两个具体问题“的组成”;“战俘”;C语言中的函数,c,integration,pow,function-composition,C,Integration,Pow,Function Composition,我正试图整合几个方程式,但程序无法编译。出现的错误消息是:“函数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] ; d
#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) ;
#包括
#包括
结构标准杆{
双gamma1,gamma2;
}aa;
无效电子货币(整数n,双v[],双dv[],双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);
所以…问题是dv从6到11。问题如下:
在这种情况下使用“pow”函数可以吗,还是仅为常量基数定义?
如果答案是肯定的(我几乎可以肯定),那么就会出现以下疑问:
如何将pow函数与另一个函数组合
为了清楚起见,我想用“pow”函数的组合来表达以下内容:
请注意,至少有一种方法可以解决这个问题:那就是以A*A=A的平方形式写出基数的平方项,而不是使用pow。鉴于基数可以提升为非整数次幂,我的观点是,一般情况下的解决方案仍然非常重要。可以使用
pow
fu在这种情况下,这是一个错误
收到错误是因为外部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的幂次。除非我在我的微型平板电脑屏幕上计算的帕伦斯数错了,即封装的pow()调用正在传递3个参数。如果-1,5
是-1.5
?您不能为pow
函数提供3个参数。是的,确实是一个输入错误。为您的时间修复了它。谢谢!愚蠢的输入错误…请注意,您可以将pow(n,2)
简化为double sqr(n){return n*n;}
,然后得到pow(sqr(v[0]-v[3])+sqr(v[1]-v[4])+sqr(v[2]-v[5]),-1.5)
。还要注意pow(n,-1.5)
相当于1.0/(n*sqrt(n))
。哦,我明白了……事实上,如果你检查我上传的图像,它应该是3/2=1.5,这是一个打字错误。@Gato Mazzei不希望在帖子中使用指向场外URL的链接。请在此处发布相关数据。