Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

I have two arrays of length n. One of them is obtained by experiment, so every element of

the array is a number. The other array is parametric, each element is a combination of a

parameter and numbers. There are 8 parameters. In theory, arrays one and two must be the same.

I want to find the best possible set of 8 parameters which fit the parametric array to the

experimental one.

How can I do that in Mathematica? FindFit needs an array and a function. I do not know how

to fit the two arrays.


I tried to subtract the two arrays and use NMinimize to minimum the new array with respect

to the parameters. It didn't work. It returns:

NMinimize::bcons: The following constraints are not valid: {0.004 -4 (E^(-

(0.002/Subscript[<<2>>])) Subscript[a, 1]+E^(-(0.002/Subscript[<<2>>])) Subscript[a, 

2]+E^(-(0.002/Subscript[<<2>>])) Subscript[a, 3]+E^(-(0.002/Subscript[<<2>>])) 

Subscript[a, 4]),4-4 (E^(-(0.002/Subscript[<<2>>])) Subscript[a, 1]+E^(-

(0.002/Subscript[<<2>>])) Subscript[a, 2]+E^(-(0.002/Subscript[<<2>>])) Subscript[a, 

3]+E^(-(0.002/Subscript[<<2>>])) Subscript[a, 4]),<<48>>,<<1588>>}. Constraints should 

be equalities, inequalities, or domain specifications involving the variables. >>

Mathematica thinks that the first argument of NMinimize contains some constraints, which

is not the case. It thinks so perhaps because the first argument cannot be an array.

share|improve this question
    
Take a look at NMinimize. –  Kuba Mar 19 at 13:19
    
I tried that. It didn't work. –  yashar Mar 19 at 13:44
    
Please add the actual code and any data necessary to reproduce the problem. –  Yves Klett Mar 19 at 14:19

1 Answer 1

up vote 1 down vote accepted

For example:

experimArray = Range@20;
theoretArray = ListConvolve[{a, b, c, d, e}, Range@24]
sol = NMinimize[Norm[experimArray - theoretArray], {a, b, c, d, e}]

So:

theoretArray /. sol[[2]]
(*
{1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13., 14., 15., 16., 17., 18., 19., 20.}
*)
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.