multiple variables fitting with lsqnonlin

1 view (last 30 days)
Yongchul Shin
Yongchul Shin on 27 Sep 2019
Commented: Adam Danz on 27 Sep 2019
my curve fitting with lsqnonlin has poor fit. what is wrong?
clear;
X0 = [0.1; 0.1; 0.1; 0.1];
no = 520;
no_data = 520;
H_total = 0;
time = load('time_BS19.m');
dqdt = load('Q_BS19.m');
temp = load('temp_BS19.m');
baseline = zeros(no,1);
alpha = zeros(no,1);
dadt = zeros(no,1);
gradient = ( dqdt(no,1) - dqdt(1,1) ) / ( time(no,1) - time(1,1) );
for i = 1 : no
baseline(i,1) = dqdt(1,1) + gradient * ( time(i,1) - time(1,1) );
end
for i = 2 : no
H_total = H_total + ( dqdt(i,1) - baseline(i,1) ) * ( time(i,1) - time(i-1,1) ) ;
end
for i = 2 : no
alpha(i,1) = alpha(i-1,1) + ( ( dqdt(i,1) - baseline(i,1) ) * ( time(i,1) - time(i-1,1) ) ) / H_total;
end
for i = 1 : no
dqdt(i,1) = dqdt(i,1) - baseline(i,1);
end
for i = 1 : no
dadt(i,1) = dqdt(i,1) / H_total;
end
for i = 1 : no_data
X(i,1) = alpha( (i-1)*1+1 ,1);
Y(i,1) = dadt( (i-1)*1+1 ,1);
end
X(1,1) = alpha(1,1)+0.00001;
X(no_data,1) = alpha(no,1)-0.00001;
Y(no_data,1) = dadt(no,1);
options = optimset ('Largescale','off');
x=lsqnonlin(@fitting_epoxy_isothermal,X0,[],[],options,X,Y);
xt=real(x);
x=xt;
Y_sim = ( x(1) + x(2) * (alpha).^ x(3)).* ( 1-alpha).^ (x(4));
alpha_sim(1,1) = 0;
for i = 2 : no
alpha_sim(i,1) = alpha_sim(i-1,1) + Y_sim(i,1) * ( time(i,1) - time(i-1,1) ) ;
end
sr=187.5; % shear rate (s^-1)
macosko_0=[3*10^(-9), 6000, 10^(9), 0.2, 0.6, 2, -0.1]; % B, Tb, tau*, n, alpha_g(>alpha), c1, c2
no_ext=702; % alpha > 0 이 되는 부분 앞으로 배열요소 확장(점도측정 시작지점)
temp_ext=load('temp_BS19_ext.m');
alpha_ext=zeros(no_ext,1);
time_ext=load('time_BS19_ext.m');
eta_ext=load('eta_BS19_ext.m');
temp_ext=temp_ext+273.15;
for i=1:(no_ext-no)
alpha_ext(i)=0;
end
for i=(no_ext-no+1):no_ext % 배열요소 확장
alpha_ext(i)=alpha(i-(no_ext-no));
end
options = optimset ('Largescale','off','Display','iter');
% options = optimset ('FunValCheck','on');
%[macosko] = lsqnonlin(@(macosko)fitting_macosko(macosko,temp_ext,alpha_ext,eta_ext),macosko_0);
macosko=lsqnonlin(@fitting_macosko,macosko_0,[],[],options,temp_ext,alpha_ext,eta_ext);
mt=real(macosko);
macosko=mt;
eta_sim=zeros(no_ext,1);
% eta_sim=macosko(1)*exp(macosko(2)./temp_ext)./(1+(macosko(1)*exp(macosko(2)./temp_ext)*sr/macosko(3))).^(1-macosko(4)).*(macosko(5)/(macosko(5)-alpha_ext)).^(macosko(6)+macosko(7).*alpha_ext);
for i=1:no_ext
eta_sim(i) = macosko(1)*exp(macosko(2)./temp_ext(i))./(1+((macosko(1)*exp(macosko(2)./temp_ext(i))*sr/macosko(3)).^(1-macosko(4)))).*(macosko(5)/(macosko(5)-alpha_ext(i))).^(macosko(6)+macosko(7).*alpha_ext(i));
end
plot3(temp_ext,alpha_ext,eta_ext,'bo')
hold on
plot3(temp_ext',alpha_ext,eta_sim,'r')
figure(5)
semilogy(temp_ext, eta_ext, 'bo', temp_ext, eta_sim, 'r')
xlabel('temp (K)');
ylabel('viscosity (Pa.s)');
% grid on;
my objective function is
function parameters = fitting_epoxy_isothermal(x,X,Y)
parameters = ( x(1) + x(2) * X.^ x(3) ).* ( 1-X ).^ (x(4)) - Y;
function parameter = fitting_macosko(macosko,temp_ext,alpha_ext,eta_ext) % alpha_rheo 의 앞 배열을 0으로 확장 필요
sr=187.5; % shear rate (s^(-1)) 기입
parameter = macosko(1)*exp(macosko(2)./temp_ext)./(1+((macosko(1)*exp(macosko(2)./temp_ext)*sr/macosko(3)).^(1-macosko(4)))).*(macosko(5)/(macosko(5)-alpha_ext)).^(macosko(6)+macosko(7).*alpha_ext)-eta_ext;
  5 Comments
Yongchul Shin
Yongchul Shin on 27 Sep 2019
alpha_ext
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
-8.51509950647203e-07
-2.38531056841000e-06
-4.41759470048706e-06
-6.98337323312600e-06
-1.00913988878887e-05
-1.36979080569657e-05
-1.78758400867063e-05
-2.26427004202346e-05
-2.81531204718128e-05
-3.45150504740379e-05
-4.16847268191004e-05
-4.95308586835703e-05
-5.80738690844258e-05
-6.71678793289670e-05
-7.66611755767868e-05
-8.65012414985131e-05
-9.59966120907494e-05
-0.000105360270244837
-0.000114621391699316
-0.000123704119533983
-0.000132342954528124
-0.000140724621408395
-0.000148951235259686
-0.000157133663888448
-0.000165318588476344
-0.000173491421154107
-0.000181596728018509
-0.000189596580609448
-0.000197493896500778
-0.000205396625925098
-0.000213225994388349
-0.000221107457566254
-0.000229078943918913
-0.000237105442560080
-0.000245271563131519
-0.000253469355400633
-0.000261727995105962
-0.000269919108997931
-0.000278141894587575
-0.000286650180800191
-0.000295619022067020
-0.000305007572354105
-0.000315014226683517
-0.000325994929065445
-0.000338133486652689
-0.000351622459319613
-0.000366514363395588
-0.000382724589238850
-0.000400031401236495
-0.000418294755843530
-0.000437473807026001
-0.000457533543897658
-0.000478500224623189
-0.000499842850761166
-0.000521651867101064
-0.000544006048136939
-0.000566890805999522
-0.000590384915182870
-0.000614473787817715
-0.000639236198398113
-0.000664823860764472
-0.000691315549410850
-0.000718658748007876
-0.000746631720942645
-0.000775056496210065
-0.000803991425287214
-0.000833351898532328
-0.000862974531809582
-0.000892809726363459
-0.000922431516411275
-0.000951594825749296
-0.000980083753912326
-0.00100687131490376
-0.00103165699861663
-0.00105312497924280
-0.00107142697062266
-0.00108949805205335
-0.00110986192491855
-0.00113260903400774
-0.00115647898741600
-0.00118151263117729
-0.00120771288286545
-0.00123401482802379
-0.00126061686167437
-0.00128764152191906
-0.00131518217112119
-0.00134262903634527
-0.00137014841930098
-0.00139771114424978
-0.00142524427184532
-0.00145224889695858
-0.00147894675520244
-0.00150535535202004
-0.00153143384137742
-0.00155682336169054
-0.00157891560193393
-0.00152925260919749
-0.00128424011987838
-0.00104564587142333
-0.000867695891482662
-0.000746573993455353
-0.000669264880378738
-0.000613107756128855
-0.000569548294165795
-0.000534507726241676
-0.000507064099018636
-0.000483030694016196
-0.000461797738298869
-0.000442837150999085
-0.000425002325592223
-0.000407035787747212
-0.000389494794070166
-0.000371372781581456
-0.000351995790720811
-0.000328662148099432
-0.000302547635980479
-0.000273909000863103
-0.000242798759076677
-0.000208866801758720
-0.000172323194226721
-0.000133293392156401
-9.17248792183881e-05
-4.75855621002884e-05
-8.90028671372121e-07
4.84375779885647e-05
0.000100548971719930
0.000171622099543115
0.000329519729301997
0.000610749462631594
0.000928962783749125
0.00121170466356453
0.00147253306777731
0.00171987394967780
0.00195950994064461
0.00219602163162851
0.00243025803662102
0.00266425853974607
0.00289874086417175
0.00313440522762302
0.00337096570786218
0.00360868780410995
0.00384777282896225
0.00408929444959736
0.00433317972666892
0.00457979335690868
0.00482943585042360
0.00508286869398958
0.00533960173519915
0.00559959996316605
0.00586298008084445
0.00612986754391007
0.00640029736324915
0.00667435123092961
0.00695213417961020
0.00723417137258462
0.00752037528263727
0.00781088011816542
0.00810576465366313
0.00840590999643431
0.00871118193808168
0.00902162715978689
0.00933749365532754
0.00965879309499905
0.00998600396091346
0.0103189745392304
0.0106578769668072
0.0110028892156490
0.0113543789000613
0.0117124335472599
0.0120770035584892
0.0124482581530326
0.0128271601302621
0.0132139166379213
0.0136084489015161
0.0140106548059616
0.0144229121739488
0.0148444653538496
0.0152754164607488
0.0157159172084868
0.0161674001258260
0.0166298418721755
0.0171033620680634
0.0175880278176882
0.0180852337213522
0.0185945771538635
0.0191160785382391
0.0196498633301548
0.0201967455327157
0.0207569556342564
0.0213310363035137
0.0219194951983382
0.0225229625146824
0.0231420392727601
0.0237788173730248
0.0244339270114288
0.0251079925487769
0.0258009585511659
0.0265132568195262
0.0272450740785844
0.0279974927482403
0.0287706703774822
0.0295652371622624
0.0303817036780054
0.0312210327240829
0.0320837377934934
0.0329706533123591
0.0338833285123964
0.0348234322458498
0.0357914050663712
0.0367879676147027
0.0378141118659545
0.0388705730487378
0.0399603562641223
0.0410834615121081
0.0422409274489870
0.0434336030887506
0.0446642893022987
0.0459325251129625
0.0472403761630305
0.0485894675411394
0.0499835457038751
0.0514218056926113
0.0529066632584992
0.0544401116879957
0.0560239190308564
0.0576578914434744
0.0593441872886354
0.0610844650903725
0.0628824441718348
0.0647391205927359
0.0666589961695326
0.0686443804536878
0.0708812862838366
0.0734053168137192
0.0760130179482014
0.0786377843937703
0.0812777751613241
0.0839543235508831
0.0866881881004186
0.0894914271426690
0.0923770063758415
0.0953494859678699
0.0984143130291396
0.101575251229922
0.104840323898316
0.108212647003198
0.111697040376574
0.115296608317025
0.119021471888250
0.122875065074676
0.126862315658542
0.130986733481194
0.135259297373045
0.139684739638887
0.144269551880543
0.149018014178859
0.153941796829249
0.159046326519083
0.164338372019702
0.169822426394841
0.175500473594720
0.181362856449883
0.187370421119209
0.193481504648064
0.199549294720114
0.205529706794425
0.211418918849249
0.217231781335503
0.223065274408093
0.228988457040143
0.235093407862485
0.241448573157735
0.248238168539033
0.255568306167449
0.263564062434103
0.272312439391322
0.282013699308443
0.292756682309321
0.304627719404296
0.317673812708155
0.331943043838012
0.347417878175005
0.364037746885924
0.381743890033351
0.400311566903312
0.419585154106435
0.439364389373382
0.459504269283610
0.479656639749121
0.499655607520579
0.519322179442039
0.538543970568646
0.557115350295172
0.574967288824230
0.592043418628961
0.608309283162150
0.623752424383440
0.638374009322372
0.652193760778200
0.665241875640313
0.677542102959882
0.689155040745854
0.700113920164426
0.710458303517059
0.720215207537641
0.729446834900738
0.738183849307556
0.746460007087587
0.754297510977858
0.761745638800763
0.768825601318222
0.775562489665378
0.781971737807920
0.788088998498342
0.793930260041365
0.799513086231590
0.804850080988067
0.809962951060268
0.814863104161963
0.819565128162421
0.824079438800303
0.828419185580967
0.832596059222847
0.836618062631024
0.840491048458649
0.844228519237518
0.847835490277087
0.851318949166735
0.854683774089948
0.857940033594094
0.861091371728917
0.864142450777437
0.867096488823613
0.869960190452164
0.872736960471775
0.875431747087704
0.878047943438342
0.880588216186193
0.883056063502307
0.885456308136265
0.887792891730343
0.890066890869294
0.892281838735055
0.894438829417821
0.896541784136853
0.898591607340043
0.900592351537477
0.902544585656055
0.904450576650662
0.906312661497954
0.908132421522962
0.909909990934082
0.911647423703307
0.913344961989268
0.915005252031449
0.916627934092995
0.918215113786955
0.919768581920163
0.921290064237551
0.922779988163691
0.924239476672758
0.925668705986212
0.927069490251478
0.928440946027190
0.929784048716641
0.931100551781717
0.932394142568957
0.933664005149656
0.934909977014953
0.936132248682419
0.937332419274283
0.938510507171261
0.939666800337892
0.940801618248514
0.941916918303424
0.943012457468721
0.944088508537561
0.945145331757530
0.946184614361589
0.947206086765914
0.948209997839554
0.949196587698838
0.950167277202232
0.951122139289083
0.952061515315532
0.952985632852339
0.953894658201214
0.954790026808494
0.955671371059871
0.956538889350370
0.957392756734420
0.958233489622595
0.959061015075547
0.959875493559839
0.960677208080134
0.961466972639538
0.962244629689063
0.963010392211600
0.963764499448204
0.964507558254239
0.965239478184913
0.965960437212233
0.966670435336198
0.967369805160228
0.968058549601896
0.968736843715634
0.969404845050429
0.970062982489639
0.970711194764213
0.971349473121428
0.971977872995189
0.972596811598556
0.973206283096381
0.973806412944340
0.974397265329059
0.974979032810410
0.975551610355737
0.976115210947929
0.976670240129754
0.977212902137625
0.977738021195528
0.978249562286328
0.978751548744372
0.979246445919565
0.979733361034308
0.980211946897313
0.980682404821176
0.981145703440415
0.981601761062964
0.982050601029412
0.982492156235562
0.982927211508779
0.983355378811743
0.983776491842741
0.984190538931481
0.984597692214818
0.984997977950917
0.985391425315518
0.985778183104886
0.986158799822906
0.986533255046561
0.986901650890936
0.987264036954786
0.987620859626912
0.987971897171700
0.988317094155247
0.988656506011456
0.988990106482163
0.989317866391629
0.989639852844052
0.989956106685467
0.990266718360663
0.990571638270885
0.990870945190627
0.991164621614444
0.991452976805167
0.991736045773682
0.992013837272709
0.992286292950772
0.992553634543483
0.992815716172151
0.993072578682808
0.993324265839063
0.993570754300325
0.993812073242333
0.994048310192301
0.994279505996265
0.994506013680660
0.994727637768038
0.994944416186859
0.995156416041322
0.995363835726449
0.995566672324666
0.995764969599582
0.995958707128178
0.996147954932227
0.996332529204577
0.996512380346473
0.996687452924010
0.996857662327547
0.997022763480880
0.997183080234708
0.997338883923398
0.997490305837775
0.997637357648133
0.997779875970336
0.997917825793499
0.998051201282473
0.998179839053123
0.998303820797517
0.998423248630740
0.998538192574564
0.998648640958693
0.998754468327453
0.998855674680842
0.998952327123060
0.999044472335289
0.999132016955164
0.999214899713636
0.999293155621589
0.999367102694575
0.999436746767741
0.999502090758662
0.999563181348517
0.999620389069188
0.999673661404344
0.999722992518839
0.999768294885455
0.999809822333120
0.999847463994025
0.999881167351843
0.999910932406572
0.999936572433486
0.999957953224189
0.999974981416316
0.999987735784361
0.999995971252122
0.999999999999999
0.999999999999999
Adam Danz
Adam Danz on 27 Sep 2019
Sorry, that's too much copy-pasting and variable naming for me. If the data are attached so I can load them using your code, I can take a look at it.

Sign in to comment.

Answers (1)

Yongchul Shin
Yongchul Shin on 27 Sep 2019
I apologize for the inconvenience. I want to check the fitting result of the last lsqnonlin.

Categories

Find more on Get Started with Curve Fitting Toolbox in Help Center and File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!