Path: news.mathworks.com!not-for-mail
From: <HIDDEN>
Newsgroups: comp.soft-sys.matlab
Subject: Re: Solving simultaneously for two unknowns for fitting the data with a model
Date: Wed, 7 Nov 2012 23:19:14 +0000 (UTC)
Organization: The MathWorks, Inc.
Lines: 25
Message-ID: <k7eq9i$r1n$1@newscl01ah.mathworks.com>
References: <k79lb7$gtr$1@newscl01ah.mathworks.com> <k79udt$g69$1@newscl01ah.mathworks.com>
Reply-To: <HIDDEN>
NNTP-Posting-Host: www-02-blr.mathworks.com
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: newscl01ah.mathworks.com 1352330354 27703 172.30.248.47 (7 Nov 2012 23:19:14 GMT)
X-Complaints-To: news@mathworks.com
NNTP-Posting-Date: Wed, 7 Nov 2012 23:19:14 +0000 (UTC)
X-Newsreader: MATLAB Central Newsreader 2236182
Xref: news.mathworks.com comp.soft-sys.matlab:782277

Thank you for the reply, I think it is optimal in my case to solve for the p and k independently to using fminsearch! Thanks,

S

"Roger Stafford" wrote in message <k79udt$g69$1@newscl01ah.mathworks.com>...
> "Suyash" wrote in message <k79lb7$gtr$1@newscl01ah.mathworks.com>...
> > Suppose my model is an equation similar to a power function, Y = k.(Ix^p - Th^p) in which, k, p, and Th are constants. I know the values of Ix and corresponding Y. Both Ix and Y are an array. I want to fit my data (Ix ~ Y) with the equation I mentioned earlier (i.e.  Y = k.(Ix^p - Th^p) ). How do iterate simultaneously on the values of p and k to find the best least-squares fit? 
> - - - - - - - - -
>   You are given the vectors Ix and Y and the fixed scalar Th and wish to adjust the parameters k and p so as to minimize the quantity
> 
>  S = sum(k*(Ix.^p-Th^p)-Y).^2 .
> 
> Do I state your problem correctly?
> 
>   For any given value of p the value of k which minimizes S is
> 
>  k = sum(Y.*(Ix.^p-Th^p))/sum((Ix.^p-Th^p).^2)
> 
> as one can see by taking the partial derivative of S with respect to k.
> 
>   By substituting this expression for k one obtains S as a function of the single parameter p.  If you know of upper and lower bounds for p, you can then use matlab's 'fminbnd' to find a minimum.
> 
>   Alternatively you can use 'fminsearch' to find the minimum using either the single-variable problem with p using the above substitution for k, or the two-variable problem with both p and k as variables.  (The single-variable usage is probably more efficient in this case.)
> 
> Roger Stafford