Распишите

и

как у меня расписано. Я именно для этого расписал. У вас что получается?
Ну да, получается.
И я нашел одну досадную ошибку. Проблемы накопления ошибок это разумеется не решило. Но зато теперь я уверен. Спасибо!
-- добавлено через 4 минуты --График при тех же значениях
tap to roll dice-- добавлено через 3 минуты --Можно ли на программу взглянуть?
Код:
int main(int argc, const char * argv[]) {
// insert code here...
printf("Hello!\n");
double a, b, x0, y0, z0;
a = 5.0;
b = 4.0;
x0 = 7.0;
y0 = 1.0;
z0 = 1.0;
double r2, qa2, qb2, qx2, qy2;
r2 = x0*x0 + y0*y0 + z0*z0;
qa2 = a*a/r2;
qb2 = b*b/r2;
qx2 = 4.0*x0*x0/r2;
qy2 = 4.0*y0*y0/r2;
//double mn;
double F0, Omega;
double i2, j2, a_i, a_j;
double sum_n, sum_m;
char *name = "/Users/Data/tst";
FILE *fp;
fp = fopen(name, "w");
int N, m, n, i,j;
for(N=0;N<=40;N++){//S_N
sum_m = 0.0;
for(m=0;m<=N;m++){
sum_n=0.0;
for(n=0;n<=N-m;n++){
F0 = 1.0;// бином. коэф. C_{m+n}^n
for(i=1;i<=n;i++)F0 = F0*(m+i)/(double)i;
Omega = F0;// Omega[m,n]
a_j = F0;
for(j=1;j<=m;j++){
j2 = 2.0*j;
a_j = -a_j*qx2*(m+n+j)*(m-j+1)/((j2-1.0)*j2);
Omega = Omega + a_j;
}
a_i = F0;
for(i=1;i<=n;i++){
i2 = 2.0*i;
a_i = -a_i*qy2*(m+n+i)*(n-i+1)/((i2-1.0)*i2);
Omega = Omega + a_i;
}
a_j = F0;
for(j=1;j<=m;j++){
j2 = 2.0*j;
a_j = -a_j*qx2*(m+n+j)*(m-j+1.0)/((j2-1.0)*j2);
a_i = a_j;
for(i=1;i<=n;i++){
i2 = 2.0*i;
a_i = -a_i*qy2*(m+n+j+i)*(n-i+1.0)/((i2-1.0)*i2);
Omega = Omega + a_i;
}
}
sum_n = sum_n + pow(-1.0,n)*pow(qb2,n)*Omega/(2.0*n+1.0);
}
sum_m = sum_m + pow(-1.0,m)*pow(qa2,m)*sum_n/(2.0*m+1.0);
}
fprintf(fp, "%d %lf\n",N, sum_m);
}
fclose(fp);
return EXIT_SUCCESS;
}
-- добавлено через 2 минуты --Но с радиусом сходимости всё равно, думаю, что-то не то.