@@ -177,22 +177,39 @@ def _get_scales_bounds(
177
177
ldins = [(dscales , scales ), (dbounds_low , bounds0 ), (dbounds_up , bounds1 )]
178
178
179
179
# ------------------
180
- # all linear
180
+ # all poly
181
181
# ------------------
182
182
183
- kfunc = 'linear '
183
+ kfunc = 'poly '
184
184
if dind .get (kfunc ) is not None :
185
185
186
186
a1max = (data_max - data_min ) / lambD
187
187
188
+ # -------
189
+ # a0
190
+
191
+ kvar = 'a0'
192
+ vind = dind ['jac' ][kfunc ].get (kvar )
193
+ if vind is not None :
194
+ ival , ivar = vind ['val' ], vind ['var' ]
195
+ scales [ival ] = max (np .abs (data_max ), np .abs (data_min ))
196
+ bounds0 [ival ] = - 10.
197
+ bounds1 [ival ] = 10.
198
+
199
+ for ii , (din , val ) in enumerate (ldins ):
200
+ _update_din_from_user (
201
+ din , kfunc , kvar , val ,
202
+ scales = None if ii == 0 else scales
203
+ )
204
+
188
205
# -------
189
206
# a1
190
207
191
208
kvar = 'a1'
192
209
vind = dind ['jac' ][kfunc ].get (kvar )
193
210
if vind is not None :
194
211
ival , ivar = vind ['val' ], vind ['var' ]
195
- scales [ival ] = a1max
212
+ scales [ival ] = max ( np . abs ( data_max ), np . abs ( data_min ))
196
213
bounds0 [ival ] = - 10.
197
214
bounds1 [ival ] = 10.
198
215
@@ -203,16 +220,13 @@ def _get_scales_bounds(
203
220
)
204
221
205
222
# -------
206
- # a0
223
+ # a2
207
224
208
- kvar = 'a0 '
225
+ kvar = 'a2 '
209
226
vind = dind ['jac' ][kfunc ].get (kvar )
210
227
if vind is not None :
211
228
ival , ivar = vind ['val' ], vind ['var' ]
212
- scales [ival ] = max (
213
- np .abs (data_min - a1max * lamb [0 ]),
214
- np .abs (data_max + a1max * lamb [0 ]),
215
- )
229
+ scales [ival ] = max (np .abs (data_max ), np .abs (data_min ))
216
230
bounds0 [ival ] = - 10.
217
231
bounds1 [ival ] = 10.
218
232
@@ -703,13 +717,28 @@ def _get_x0(
703
717
ldins = [(dx0 , x0 )]
704
718
705
719
# ------------------
706
- # all linear
720
+ # all poly
707
721
# ------------------
708
722
709
- kfunc = 'linear '
723
+ kfunc = 'poly '
710
724
if dind .get (kfunc ) is not None :
711
725
712
- a1max = ((data_max - data_min ) / lambD ) / 10
726
+ # a1max = ((data_max - data_min) / lambD) / 10
727
+
728
+ # -------
729
+ # a0
730
+
731
+ kvar = 'a0'
732
+ vind = dind ['jac' ][kfunc ].get (kvar )
733
+ if vind is not None :
734
+ ival , ivar = vind ['val' ], vind ['var' ]
735
+ x0 [ival ] = data_mean / scales [ival ]
736
+
737
+ for ii , (din , val ) in enumerate (ldins ):
738
+ _update_din_from_user (
739
+ din , kfunc , kvar , val ,
740
+ scales = scales ,
741
+ )
713
742
714
743
# -------
715
744
# a1
@@ -718,7 +747,7 @@ def _get_x0(
718
747
vind = dind ['jac' ][kfunc ].get (kvar )
719
748
if vind is not None :
720
749
ival , ivar = vind ['val' ], vind ['var' ]
721
- x0 [ival ] = a1max / scales [ival ]
750
+ x0 [ival ] = 0. / scales [ival ]
722
751
723
752
for ii , (din , val ) in enumerate (ldins ):
724
753
_update_din_from_user (
@@ -727,13 +756,13 @@ def _get_x0(
727
756
)
728
757
729
758
# -------
730
- # a0
759
+ # a2
731
760
732
- kvar = 'a0 '
761
+ kvar = 'a2 '
733
762
vind = dind ['jac' ][kfunc ].get (kvar )
734
763
if vind is not None :
735
764
ival , ivar = vind ['val' ], vind ['var' ]
736
- x0 [ival ] = np . abs ( data_min - a1max * lamb [ 0 ]) / scales [ival ]
765
+ x0 [ival ] = 0. / scales [ival ]
737
766
738
767
for ii , (din , val ) in enumerate (ldins ):
739
768
_update_din_from_user (
0 commit comments