我对编码很陌生,并且一直在构建一个插入三次样条的代码,但我被困在最后一个等式上执行以下错误:_“二进制^的无效操作数(有'double'和'double')| "
问题在于代码的最后一点,前两行带有“population =”。如果有人能指出我正确的方向,我将不胜感激。
#include <stdio.h>
main () {
int x;
int y;
double stats[10][2];
double gpp[8][9] = {0};
double gppr[10] = {0};
double year;
double population;
int xi = 0;
year=1950;
population=0;
x=0;
stats[0][0] = 1930; stats[1][0] = 1940; stats[2][0] = 1949;
stats[3][0] = 1955; stats[4][0] = 1960; stats[5][0] = 1970;
stats[6][0] = 1980; stats[7][0] = 1990; stats[8][0] = 2000;
stats[9][0] = 2005;
stats[0][1] = 21.058; stats[1][1] = 23.547; stats[2][1] = 20.167;
stats[3][1] = 21.502; stats[4][1] = 24.989; stats[5][1] = 30.852;
stats[6][1] = 37.407; stats[7][1] = 43.390; stats[8][1] = 45.985;
stats[9][1] = 47.041;
//Initiate g'' system of equation
for (x=0;x<8;x++) {
gpp[x][x] = ((stats[x+1][0]-stats[x][0])+(stats[x+2][0]-stats[x+1][0]))/3;
if (x<7) {
gpp[x][x+1] = (stats[x+2][0]-stats[x+1][0])/6;
}
if (x>0) {
gpp[x][x-1] = (stats[x+2][0]-stats[x+1][0])/6;
}
gpp[x][8] = ((stats[x+2][1]-stats[x+1][1])/(stats[x+2][0]-stats[x+1][0]))-((stats[x+1][1]-stats[x][1])/(stats[x+1][0]-stats[x][0]));
}
//Forward sweep
for (x=0;x<7;x++) {
gpp[x+1][x] = 0;
gpp[x+1][x+1] = gpp[x+1][x+1] - (gpp[x][x+1]/gpp[x][x])*gpp[x+1][x];
gpp[x+1][8] = gpp[x+1][8] - (gpp[x][x+1]/gpp[x][x])*gpp[x][8];
}
//Backward sweep
gppr[9] = 0;gppr[0] = 0;
gppr[8] = gpp[7][8]/gpp[7][7];
for (x=7;x > 0;x=x-1) {
gppr[x] = (gpp[x][8]-(gppr[x+1]*gpp[x][x+1]))/gpp[x][x];
}
//check where is xi
for (x=0;x<10;x++) {
if (stats[x][0] > year) {
xi = x;
break;
}
}
//Calculate population at x
population = (gppr[xi]/6)*((((stats[xi+1][0]-year)^3.0)/(stats[xi+1][0]-stats[xi][0]))-(stats[xi+1][0]-stats[xi][0])*((stats[xi+1][0]-year)))
+ (gppr[xi+1]/6)*((((year-stats[xi][0])^3.0)/(stats[xi+1][0]-stats[xi][0]))-(stats[xi+1][0]-stats[xi][0])*((year-stats[xi+1][0])))
+ (stats[xi][1])*((stats[xi+1][0]-year)/(stats[xi+1][0]-stats[xi][0]))
+ (stats[xi+1][1])*((year-stats[xi][0])/(stats[xi+1][0]-stats[xi][0]));
}
我期待更多地了解C!
雨果