MATLAB: Solve nonlinear equations + numerical integration

MATLABnlinfit

Hi, I just have no idea how to do this.. I have code
x = [1.4334 1.46 0.1; 1.435 1.46 0.1];
t = 0.1:0.1:0.6;
for i=1:length(x)
z(i) = trapz(t,normcdf(((log(x(i,1)./x(i,2))+t.*x(i,3).^2)),0,1));
end
But I do not know what x(:,3) is, above I have just used x(1,3)=x(2,3)=0.1 but that is just a guess! I do now what the above function z(i) should be equal to for each 'i', z(1)=0.0213 and z(2)=0.0222 and I want to solve to find a x(1,3)=x(2,3). I do not want to find a single numeric value x(1,3)=x(2,3) that will not solve the equations exactly but just the best x(1,3)=x(2,3) that fits both equations in terms of mean squared error. I do not want two values x(1,3) and x(2,3) that are different, I am not trying to solve each equation individual but a x(.,3) that solves them all best in terms of mse.
Heres my code
x = [1.4334 1.46 0.1; 1.435 1.46 0.1];
y = [0.0213, 0.0222]
t = 0.1:0.1:0.6;
xdata = x(:,1); ydata = y;
for i=1:length(x)
z(i) = trapz(t,normcdf(((log(x(i,1)./x(i,2))+t.*c.^2)),0,1));;
end
c = 0.1; %initial guess for x(:,3)
cfit = nlinfit(xdata,ydata,z,c)
which does not work. I just dont understand how to simultaneously solve a set of equations when there is numerical integration involved.
Any ideas?

Best Answer

You could pose it as an optimization problem. First set up a function that will be zero when z1,z2 are equal to their correct values. I'm going to define the vector y to contain your two decision variables (x(1,3) and x(2,3))
t = 0.1:0.1:0.6;
z = [0.0213; 0.0222]
x = [1.4334 1.46; 1.435 1.46]; %unknowns ommited
f = @(y) sum(([trapz(t,normcdf(((log(x(1,1)./x(1,2))+t.*y(1).^2)),0,1));
trapz(t,normcdf(((log(x(2,1)./x(2,2))+t.*y(2).^2)),0,1))] - z).^2);
And then use fminsearch to find it:
[y, fval] = fminsearch(f, [0.1; 0.1])
If fval == 0, then y contains a solution to your equations. Disclaimer: I don't have the stats toolbox on my computer, so I can't run this, but with a bit of luck (and a good enough initial guess), it will hopefully work.