Ich versuche, ein paar Gleichungen zu integrieren, aber das Programm kompiliert nicht. Die Fehlermeldung, die angezeigt wird, sagt: "zu viele Argumente, um pow zu funktionieren"Zusammensetzung der "pow" -Funktionen in C
Ich werde den problematischen Teil des Codes zeigen und dann zwei spezifische Fragen stellen.
#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) ;
So ... das Problem ist in den dv's von 6 bis 11. Die Fragen sind folgende:
Ist es in Ordnung, die „pow“ -Funktion in diesem Fall zu verwenden, oder ist es gerade für konstante Basen definiert? Wenn die Antwort ja ist (was ich fast sicher bin), dann erscheint der folgende Zweifel: Wie kann ich eine pow-Funktion mit einer anderen zusammensetzen?
Aus Gründen der Klarheit ist das, was ich will, eine Zusammensetzung von „pow“ Funktionen zum Ausdruck bringen mit:
Beachten Sie, dass wurde leider mindestens einen Weg, um dieses Problem zu gehen: das schreiben ist die quadrierten Terme von der Basis in der Form A * A = A quadriert anstelle von pow. Angesichts der Tatsache, dass die Basis zu einer nicht-ganzzahligen Macht erhoben werden kann, ist meiner Meinung nach die allgemeine Falllösung immer noch sehr wichtig.
Wenn ich die Parens nicht auf meinem winzigen Tablettbildschirm zähle, wird der umschließende pow() -Aufruf mit 3 Args übergeben. –
Sollte '-1,5'' -1.5' sein? Sie können nicht 3 Argumente für die Funktion "pow" haben. – thelaws
Ja, es war tatsächlich ein Tippfehler. Thx für Ihre Zeit –