を使って下の方程式を解こうとしてfminsearch
いますが、目的関数が間違っていると思います。
目的関数をどのように記述したり、コードの他の部分を変更したりする必要がありますか? これは基本的にフィッティング問題であり、最適化手順は方程式を与えられたデータに適合させる必要があります。
% Consider the following data:
Data = ...
[0.0000 5.8955
0.1000 3.5639
0.2000 2.5173
0.3000 1.9790
0.4000 1.8990
0.5000 1.3938
0.6000 1.1359
0.7000 1.0096
0.8000 1.0343
0.9000 0.8435
1.0000 0.6856
1.1000 0.6100
1.2000 0.5392
1.3000 0.3946
1.4000 0.3903
1.5000 0.5474
1.6000 0.3459
1.7000 0.1370
1.8000 0.2211
1.9000 0.1704
2.0000 0.2636];
% Let's plot these data points.
t = Data(:,1);
y = Data(:,2);
plot(t,y,'ro')
title('Data points')
hold on
% fit the function: y = c(1)*exp(-lam(1)*t) + c(2)*exp(-lam(2)*t)
%
% define the parameters in terms of one variable x:
% x(1) = c(1)
% x(2) = lam(1)
% x(3) = c(2)
% x(4) = lam(2)
%
% Then define the curve as a function of the parameters x and the data t:
F = @(x,t)(x(1)*exp(-x(2)*t) + x(3)*exp(-x(4)*t));
% We arbitrarily set our initial point x0 as follows: c(1) = 1,
% lam(1) = 1, c(2) = 1, lam(2) = 0:
x0 = [1 1 1 0];
% We run the solver and plot the resulting fit
options = optimset('TolFun',1e-5,'TolX',1e-5,'MaxFunEvals',10,'MaxIter',4000,'Display','iter');
[x,fval,exitflag,output] = fminsearch(F,x0,options)
plot(t,F(x,t))
hold off