57 f1_vec[0] = pow(x_arr[0], 3) + x_arr[1] - 1;
58 f1_vec[1] = pow(x_arr[1], 3) - x_arr[0] + 1;
82 J1[0][0] = 3 * pow(x_arr[0], 2);
85 J1[1][1] = 3 * pow(x_arr[1], 2);
113 f2_vec[0] = 3 * x_arr[0] - cos(x_arr[1] * x_arr[2]) - 0.5;
114 f2_vec[1] = pow(x_arr[0], 2) - 81 * pow((x_arr[1] + 0.1), 2)
115 + sin(x_arr[2]) + 1.06;
116 f2_vec[2] = exp(-x_arr[0] * x_arr[1]) + 20 * x_arr[2]
117 + (10 *
M_PI - 3) / 3;
142 J2[0][1] = x_arr[2] * sin(x_arr[1] * x_arr[2]);
143 J2[0][2] = x_arr[1] * sin(x_arr[1] * x_arr[2]);
144 J2[1][0] = 2 * x_arr[0];
145 J2[1][1] = -162 * x_arr[1] - 16.2;
146 J2[1][2] = cos(x_arr[2]);
147 J2[2][0] = -x_arr[1] * exp(-x_arr[0] * x_arr[1]);
148 J2[2][1] = -x_arr[0] * exp(-x_arr[0] * x_arr[1]);
178 f3_vec[0] = exp(-x_arr[0] * x_arr[1]) + log(x_arr[0]) - exp(-2);
180 z = csqrtl(x_arr[2]);
181 f3_vec[1] = exp(x_arr[0]) - creal(z) / x_arr[0] - exp(1) + 2;
184 f3_vec[1] = exp(x_arr[0]) - sqrt(x_arr[2]) / x_arr[0] - exp(1)
188 f3_vec[2] = x_arr[0] + x_arr[1] - x_arr[1] * x_arr[2] + 5;
214 J3[0][0] = 1 / x_arr[0] - x_arr[1] * exp(-x_arr[0] * x_arr[1]);
215 J3[0][1] = -x_arr[0] * exp(-x_arr[0] * x_arr[1]);
218 z = csqrtl(x_arr[2]);
219 J3[1][0] = exp(x_arr[0]) + creal(z) / pow(x_arr[0], 2);
222 J3[1][0] = exp(x_arr[0]) + sqrt(x_arr[2]) / pow(x_arr[0], 2);
226 z = csqrtl(x_arr[2]);
227 if ((x_arr[0] == 0) || (creal(z) == 0)) {
232 J3[1][2] = -1 / (2 * x_arr[0] * creal(z));
237 J3[1][2] = -1 / (2 * x_arr[0] * sqrt(x_arr[2]));
241 J3[2][1] = 1 - x_arr[2];
242 J3[2][2] = -x_arr[1];
247 puts(
"############ Test Solve Non-linear Algebra Module ############");
249 "\n******************************* f1 ******************************");
255 uint8_t f1_length = 2;
263 iter_num =
fsolve(f1_length, n, x0_arr1, algo, est_x1,
267 printf(
"iter_num = %u\nx1 = ", iter_num);
274 puts(
"\nDamped Newton");
279 iter_num =
fsolve(f1_length, n, x0_arr1, algo, est_x1,
281 printf(
"iter_num = %u\nx1 = ", iter_num);
289 "/\n******************************** f2 ******************************/");
292 vector_t x2_arr[3] = { 0.1, 0.2, 0.3 };
295 uint8_t f2_length = 3;
300 iter_num =
fsolve(f2_length, n, x0_arr2, algo, est_x2,
304 printf(
"iter_num = %u\nx2 = ", iter_num);
312 puts(
"\nDamped Newton");
317 iter_num =
fsolve(f2_length, n, x0_arr2, algo, est_x2,
319 printf(
"iter_num = %u\nx2 = ", iter_num);
327 "/\n******************************** f3 ******************************/");
330 vector_t x3_arr[3] = { 1e1, 2e2, 3e3 };
335 uint8_t f3_length = 3;
340 iter_num =
fsolve(f3_length, n, x0_arr3, algo, est_x3,
345 printf(
"iter_num = %u\nx2 = ", iter_num);
353 puts(
"\nDamped Newton");
357 iter_num =
fsolve(f3_length, n, x0_arr3, algo, est_x3,
360 printf(
"iter_num = %u\nx3 = ", iter_num);