54 for (i = 1; i < 9; i++) {
55 f_vec[i - 1] = x1 * exp(i * x2) - data_vec[i - 1];
89 for (i = 1; i < 9; i++) {
90 J[i - 1][0] = exp(i * x2);
91 J[i - 1][1] = i * x1 * exp(i * x2);
103 void ieee_mobile_comp_exponential_data_test(
void)
105 vector_t d_vec[] = { 8.3, 11.0, 14.7, 19.7, 26.7, 35.2, 44.4, 55.9 };
116 uint8_t max_it_num = 3;
117 uint8_t iter_num = 0;
123 puts(
"############### Test Gauss-Newton & LVM algorithms ###############");
124 puts(
"\nExponential Data:");
130 printf(
"start value = {%.6f, %.6f}\n", start_x_vec[0], start_x_vec[1]);
131 printf(
"Gauss-Newton = {%.6f, %.6f}\n", est_x_vec[0], est_x_vec[1]);
132 printf(
"iteration number = %d\n", iter_num);
138 beta0, beta1, max_it_num, est_x_vec,
142 printf(
"Levenberg-Marquardt = {%.6f, %.6f}\n", est_x_vec[0], est_x_vec[1]);
143 printf(
"iteration number = %d\n", iter_num);
174 for (i = 1; i < 13; i++) {
175 f_vec[i - 1] = x1 * sin(x2 * i + x3) + x4 - data_vec[i - 1];
207 for (i = 1; i < 13; i++) {
208 J[i - 1][0] = sin(i * x2 + x3);
209 J[i - 1][1] = i * x1 * cos(i * x2 + x3);
210 J[i - 1][2] = x1 * cos(i * x2 + x3);
215 void ieee_mobile_comp_sinusoidal_data_test(
void)
217 vector_t d_vec[] = { 61, 65, 72, 78, 85, 90, 92, 92, 88, 81, 72, 63 };
218 vector_t start_x_vec[] = { 17, 0.5, 10.5, 77 };
228 uint8_t max_it_num = 2;
229 uint8_t iter_num = 0;
236 puts(
"\nSinusoidal Data:");
242 printf(
"start value = {%.6f, %.6f, %.6f, %.6f}\n", start_x_vec[0],
243 start_x_vec[1], start_x_vec[2], start_x_vec[3]);
244 printf(
"Gauss-Newton = {%.6f, %.6f, %.6f, %.6f}\n", est_x_vec[0],
245 est_x_vec[1], est_x_vec[2], est_x_vec[3]);
246 printf(
"iteration number = %d\n", iter_num);
256 printf(
"Levenberg-Marquardt = {%.6f, %.6f, %.6f, %.6f}\n", est_x_vec[0],
257 est_x_vec[1], est_x_vec[2], est_x_vec[3]);
258 printf(
"iteration number = %d\n", iter_num);