Mam tu taki kod, który ma zapisywać dane do pliku, ale od pewnych wartości pojawia się zamiast liczby -nan(ind). Ktoś wie co to znaczy i jak kto naprawić?
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
const double G = 6.67408e-11;
const float M1 = 5.97219e+24;
const float M2 = 7.347673e+22;
int sila(float* F, float* r1, float* r2)
{
int i;
float Ftmp = -G * M1 * M2 / pow(odleglosc(r1, r2), 3);
for (i = 0; i < 2; i++)
F[i] = Ftmp * (r1[i] - r2[i]);
return 0;
}
float odleglosc(float* r1, float* r2)
{
int i;
float r12 = 0;
for (i = 0; i < 2; i++)
r12 += pow(r1[i] - r2[i], 2);
return sqrt(r12);
}
main()
{
float t0 = 0;
float tN = 32400;
float rz[2] = { 0, 0 };
float rk[2] = { 405696, 0 };
float vz[2] = { 0, 0 };
float vk[2] = { 0, 0.968 };
float V[2];
V[0] = sqrt(pow(vz[0], 2) + pow(vz[1], 2));
V[1] = sqrt(pow(vk[0], 2) + pow(vk[1], 2));
float F[2];
float dt = 9;
sila(F, rz, rk);
FILE* wp = fopen("uklad_Ziemia_Ksiezyc_Eulera.txt", "w");
fprintf(wp, "#t xz yz xk yk Vz Vk\n");
fprintf(wp, "%f %e %e %e %e %e %e\n", t0, rz[0], rz[1], rk[0], rk[1], V[0], V[1]);
while (t0 < tN)
{
rz[0] += vz[0] * dt * 60 * 60;
rz[1] += vz[1] * dt * 60 * 60;
rk[0] += vk[0] * dt * 60 * 60;
rk[1] += vk[1] * dt * 60 * 60;
sila(F, rz, rk);
vz[0] += F[0] / M1 * dt * 60 * 60;
vz[1] += F[1] / M1 * dt * 60 * 60;
V[0] = sqrt(pow(vz[0], 2) + pow(vz[1], 2));
sila(F, rk, rz);
vk[0] += F[0] / M2 * dt * 60 * 60;
vk[1] += F[1] / M2 * dt * 60 * 60;
V[1] = sqrt(pow(vk[0], 2) + pow(vk[1], 2));
t0 += dt;
fprintf(wp, "%f %e %e %e %e %e %e\n", t0, rz[0], rz[1], rk[0], rk[1], V[0], V[1]);
}
fclose(wp);
system("PAUSE");
return 0;
}
```c