Change Alg

This commit is contained in:
AZEN-SGG 2025-04-17 18:12:05 +03:00
parent 08ef9070a4
commit 09395276e0
5 changed files with 402 additions and 20 deletions

View file

@ -34,38 +34,51 @@ double t4_solve (
for (int i = 1; i < n; ++i)
printf ("f(x%d, x%d) = %lf\n", i-1, i, Y[i]);
for (int k = 0; k < n-1; ++k)
for (int k = 1; k < n-1; ++k)
{
double f_j = D[n-1];
printf ("------- K = %d -------\n", k);
for (int l = n*2-3; l >= k; --l)
for (int l = n*2-2; l > k*2; --l)
{
const int i = l >> 1;
const double x_i = X[i-k];
double f_i;
x_j = X[i+1];
double x_i, f_i, *f;
if (l & 1)
{
x_i = X[i-k];
f_i = D[i];
f = Y + i + 1;
} else
{
x_j = X[i];
x_i = X[i-k];
f_i = Y[i];
f = D + i;
}
if (fabs(x_j - x_i) < DBL_EPSILON)
return DBL_MAX;
if (l & 1)
{
f_i = D[i];
Y[i+1] = (f_j - f_i) / (x_j - x_i);
printf ("f(x%d, x%d, ..., x%d) = %lf\n", i-k, i-k, i+1, Y[i+1]);
} else
{
f_i = Y[i];
D[i+1] = (f_j - f_i) / (x_j - x_i);
printf ("f(x%d, ..., x%d, x%d) = %lf\n", i-k, i+1, i+1, D[i+1]);
}
*f = (f_j - f_i) / (x_j - x_i);
// printf ("f(x%d, x%d, ..., x%d) = %lf\n", i-k, i-k, i+1, Y[i+1]);
// printf ("f(x%d, ..., x%d, x%d) = %lf\n", i-k, i+1, i+1, D[i+1]);
f_j = f_i;
// printf ("I = %d, f(x%d, ... , x%d) = %lf\n", i, i-k+1, i+2, Y[i+1]);
}
printf("------- Y -------\n");
for (int i = 0; i < n; ++i)
printf("Y[%d] = %lf\n", i, Y[i]);
printf("------- D -------\n");
for (int i = 0; i < n; ++i)
printf("D[%d] = %lf\n", i, D[i]);
}
start_value = 1;
@ -81,11 +94,11 @@ double t4_solve (
for (int i = 0; i < n; ++i)
{
const double x_i = X[i];
const double diff = (x_0 - X[i]);
value += Y[i] * start_value;
start_value *= (x_0 - x_i);
start_value *= diff;
value += D[i] * start_value;
start_value *= (x_0 - x_i);
start_value *= diff;
}
return value;

View file

@ -0,0 +1,3 @@
1 1 2
2 4 4
3 9 6