Hi Isa,
Below is a complete MATLAB script that performs parameter estimation for a cubic root equation using experimental data. It uses the fminsearch function to minimize the sum of squared errors between the experimental data and the model predictions.
% Define the objective function
function error = objectiveFunction(params, X, Y)
a = params(1);
b = params(2);
c = params(3);
% Predicted values
Y_pred = a * nthroot(X - b, 3) + c;
% Sum of squared errors
error = sum((Y - Y_pred).^2);
end
% Main script
% Experimental data (replace with your actual data)
X = [1, 2, 3, 4, 5]; % Example input values
Y = [2.5, 3.1, 3.8, 4.6, 5.5]; % Example observed outputs
% Initial guess for parameters [a, b, c]
initialParams = [1, 0, 0];
% Perform optimization using fminsearch
options = optimset('Display', 'iter'); % Show iteration details
optimizedParams = fminsearch(@(params) objectiveFunction(params, X, Y), initialParams, options);
Iteration Func-count f(x) Procedure
0 1 34.6349
1 4 32.812 initial simplex
2 5 32.812 reflect
3 7 31.6138 expand
4 9 28.7511 expand
5 11 26.5558 expand
6 13 21.9337 expand
7 15 15.679 expand
8 17 9.54283 expand
9 19 2.41587 expand
10 21 1.45351 reflect
11 23 1.14722 reflect
12 25 1.14722 contract outside
13 27 1.14722 contract inside
14 29 0.927037 contract inside
15 31 0.927037 contract inside
16 33 0.886597 contract inside
17 35 0.886597 contract inside
18 37 0.87412 contract inside
19 39 0.866634 contract inside
20 41 0.866634 contract inside
21 43 0.861225 contract inside
22 45 0.860257 contract inside
23 47 0.85832 contract inside
24 49 0.85832 contract inside
25 51 0.857801 contract inside
26 53 0.857674 contract inside
27 55 0.857482 contract inside
28 57 0.857383 contract inside
29 59 0.857289 contract inside
30 61 0.857277 contract inside
31 63 0.857237 contract inside
32 65 0.857233 contract inside
33 67 0.857213 contract inside
34 69 0.857213 contract inside
35 71 0.857204 contract inside
36 73 0.857204 contract inside
37 75 0.857203 contract inside
38 77 0.857203 contract inside
39 79 0.857202 contract inside
40 81 0.857201 contract inside
41 83 0.857201 contract inside
42 85 0.857201 contract inside
43 87 0.857201 contract inside
44 89 0.8572 reflect
45 90 0.8572 reflect
46 92 0.8572 contract inside
47 94 0.8572 reflect
48 96 0.857199 expand
49 97 0.857199 reflect
50 99 0.857199 reflect
51 101 0.857198 reflect
52 102 0.857198 reflect
53 104 0.857196 expand
54 106 0.857195 expand
55 107 0.857195 reflect
56 109 0.85719 expand
57 110 0.85719 reflect
58 112 0.857186 expand
59 114 0.857177 expand
60 115 0.857177 reflect
61 117 0.857167 expand
62 118 0.857167 reflect
63 120 0.857142 expand
64 121 0.857142 reflect
65 123 0.857116 expand
66 125 0.857066 expand
67 126 0.857066 reflect
68 128 0.856976 expand
69 130 0.856889 expand
70 132 0.856772 expand
71 134 0.856514 expand
72 136 0.85621 expand
73 138 0.855703 expand
74 140 0.854966 expand
75 142 0.853806 expand
76 144 0.852064 expand
77 146 0.849809 expand
78 148 0.845648 expand
79 150 0.840966 expand
80 152 0.834387 expand
81 154 0.823047 expand
82 155 0.823047 reflect
83 157 0.810982 expand
84 159 0.805072 expand
85 161 0.797987 expand
86 163 0.797987 contract inside
87 165 0.79494 expand
88 167 0.79494 contract inside
89 169 0.783492 expand
90 171 0.783492 contract inside
91 173 0.778369 expand
92 175 0.759858 expand
93 176 0.759858 reflect
94 178 0.743513 expand
95 180 0.716019 expand
96 182 0.67517 expand
97 183 0.67517 reflect
98 185 0.618405 expand
99 187 0.595904 expand
100 189 0.491588 expand
101 191 0.491588 contract inside
102 192 0.491588 reflect
103 193 0.491588 reflect
104 195 0.437306 expand
105 196 0.437306 reflect
106 198 0.436449 reflect
107 200 0.436449 contract inside
108 202 0.434228 contract inside
109 204 0.427912 contract inside
110 206 0.427236 contract inside
111 208 0.427236 contract inside
112 210 0.427236 contract outside
113 212 0.426875 contract inside
114 214 0.426079 contract inside
115 215 0.426079 reflect
116 217 0.426079 contract inside
117 218 0.426079 reflect
118 219 0.426079 reflect
119 221 0.426032 contract inside
120 223 0.426027 contract inside
121 225 0.426013 contract outside
122 227 0.425992 contract inside
123 228 0.425992 reflect
124 229 0.425992 reflect
125 231 0.425987 contract inside
126 233 0.425987 contract inside
127 235 0.425985 contract outside
128 237 0.425984 contract inside
129 239 0.425983 contract inside
130 241 0.425983 contract outside
131 243 0.425983 contract inside
132 245 0.425983 contract inside
133 247 0.425983 reflect
134 249 0.425983 contract inside
135 251 0.425983 reflect
136 252 0.425983 reflect
137 254 0.425983 contract inside
138 256 0.425983 contract inside
139 258 0.425983 expand
140 260 0.425983 contract inside
141 262 0.425982 expand
142 264 0.425982 contract inside
143 266 0.425982 expand
144 268 0.425982 expand
145 269 0.425982 reflect
146 271 0.425981 expand
147 272 0.425981 reflect
148 274 0.425981 expand
149 276 0.42598 expand
150 278 0.425979 expand
151 280 0.425976 expand
152 282 0.425974 expand
153 284 0.42597 expand
154 286 0.42596 expand
155 287 0.42596 reflect
156 289 0.425946 expand
157 291 0.425928 expand
158 293 0.425908 expand
159 295 0.425872 expand
160 297 0.425807 expand
161 299 0.425747 expand
162 301 0.425665 expand
163 303 0.425448 expand
164 304 0.425448 reflect
165 306 0.425366 expand
166 308 0.425073 expand
167 310 0.424909 expand
168 312 0.424909 contract outside
169 314 0.424737 expand
170 316 0.424122 expand
171 317 0.424122 reflect
172 319 0.423983 expand
173 321 0.422271 expand
174 322 0.422271 reflect
175 323 0.422271 reflect
176 325 0.419439 expand
177 326 0.419439 reflect
178 328 0.418158 expand
179 330 0.416935 expand
180 332 0.410423 expand
181 333 0.410423 reflect
182 334 0.410423 reflect
183 336 0.402328 expand
184 337 0.402328 reflect
185 339 0.394195 expand
186 341 0.386898 expand
187 343 0.372116 expand
188 345 0.36647 expand
189 346 0.36647 reflect
190 348 0.350771 expand
191 350 0.350771 contract outside
192 352 0.350771 contract inside
193 354 0.349407 reflect
194 356 0.332236 expand
195 357 0.332236 reflect
196 359 0.323389 expand
197 361 0.310069 expand
198 363 0.278243 expand
199 364 0.278243 reflect
200 366 0.257232 expand
201 368 0.209255 expand
202 370 0.205459 reflect
203 372 0.205459 contract inside
204 373 0.205459 reflect
205 375 0.157042 expand
206 376 0.157042 reflect
207 377 0.157042 reflect
208 378 0.157042 reflect
209 380 0.156259 contract outside
210 382 0.14583 contract inside
211 384 0.144667 reflect
212 386 0.144392 reflect
213 388 0.141008 contract inside
214 390 0.137357 reflect
215 392 0.136178 reflect
216 393 0.136178 reflect
217 395 0.132736 reflect
218 397 0.132736 contract inside
219 399 0.132736 contract inside
220 401 0.130838 reflect
221 403 0.127491 expand
222 405 0.127491 contract inside
223 406 0.127491 reflect
224 408 0.127491 contract inside
225 410 0.121959 expand
226 411 0.121959 reflect
227 413 0.120787 expand
228 415 0.114089 expand
229 417 0.114089 contract inside
230 418 0.114089 reflect
231 420 0.10772 expand
232 422 0.10772 contract inside
233 423 0.10772 reflect
234 424 0.10772 reflect
235 426 0.1067 reflect
236 428 0.10641 contract outside
237 430 0.104693 reflect
238 431 0.104693 reflect
239 433 0.104246 reflect
240 434 0.104246 reflect
241 436 0.103472 reflect
242 438 0.103472 contract inside
243 440 0.10274 reflect
244 441 0.10274 reflect
245 442 0.10274 reflect
246 444 0.100604 expand
247 446 0.100604 contract inside
248 447 0.100604 reflect
249 449 0.0997758 expand
250 450 0.0997758 reflect
251 452 0.0961137 expand
252 453 0.0961137 reflect
253 454 0.0961137 reflect
254 456 0.0911475 expand
255 457 0.0911475 reflect
256 458 0.0911475 reflect
257 460 0.0911475 contract inside
258 462 0.0906349 reflect
259 464 0.0892931 reflect
260 465 0.0892931 reflect
261 467 0.0887065 reflect
262 469 0.0858854 expand
263 471 0.0858854 contract inside
264 472 0.0858854 reflect
265 474 0.0837238 expand
266 475 0.0837238 reflect
267 477 0.0837238 contract inside
268 479 0.0821131 reflect
269 480 0.0821131 reflect
270 481 0.0821131 reflect
271 483 0.0821131 contract inside
272 485 0.0798292 expand
273 486 0.0798292 reflect
274 487 0.0798292 reflect
275 489 0.0769528 expand
276 491 0.0769528 contract inside
277 492 0.0769528 reflect
278 493 0.0769528 reflect
279 495 0.0740687 expand
280 496 0.0740687 reflect
281 498 0.0740687 contract inside
282 500 0.0718254 expand
283 502 0.0718254 contract inside
284 503 0.0718254 reflect
285 505 0.0706921 expand
286 506 0.0706921 reflect
287 508 0.0706921 contract inside
288 510 0.0706921 contract outside
289 512 0.0701974 reflect
290 514 0.0694689 reflect
291 516 0.0694689 contract inside
292 518 0.0694689 contract inside
293 520 0.0694689 contract inside
294 522 0.0694689 contract outside
295 524 0.0689662 expand
296 526 0.0689662 contract inside
297 528 0.0688645 expand
298 529 0.0688645 reflect
299 530 0.0688645 reflect
300 532 0.0686329 reflect
301 534 0.0686329 contract inside
302 536 0.0685804 reflect
303 538 0.0684887 reflect
304 540 0.0683618 reflect
305 542 0.0683314 reflect
306 544 0.0683314 contract inside
307 546 0.0681331 expand
308 548 0.0678161 expand
309 549 0.0678161 reflect
310 551 0.0673082 expand
311 552 0.0673082 reflect
312 554 0.0670407 reflect
313 556 0.0663312 expand
314 558 0.0655098 expand
315 559 0.0655098 reflect
316 561 0.0647683 expand
317 563 0.0641757 reflect
318 565 0.0638014 expand
319 566 0.0638014 reflect
320 568 0.0638014 contract inside
321 570 0.0635514 contract inside
322 572 0.0635514 contract inside
323 574 0.0630582 reflect
324 576 0.0630582 contract inside
325 577 0.0630582 reflect
326 579 0.0625529 expand
327 580 0.0625529 reflect
328 582 0.0619015 expand
329 584 0.0610881 expand
330 585 0.0610881 reflect
331 587 0.0605771 reflect
332 589 0.0605022 reflect
333 591 0.0605022 contract inside
334 593 0.0602891 reflect
335 595 0.0602891 contract inside
336 597 0.0595331 expand
337 599 0.0595331 contract inside
338 600 0.0595331 reflect
Exiting: Maximum number of function evaluations has been exceeded
- increase MaxFunEvals option.
Current function value: 0.059533
% Display results
disp('Optimized Parameters:');
Optimized Parameters:
disp(optimizedParams);
14.5506 -13.5564 -33.1501
% Calculate predicted values with optimized parameters
Y_pred_optimized = optimizedParams(1) * nthroot(X - optimizedParams(2), 3) + optimizedParams(3);
% Plot the results
figure;
plot(X, Y, 'o', 'DisplayName', 'Experimental Data');
hold on;
plot(X, Y_pred_optimized, '-', 'DisplayName', 'Fitted Curve');
legend show;
xlabel('X');
ylabel('Y');
title('Parameter Estimation');
Hope this helps.