各位好,请不吝赐教。
%题干(求5个未知数的非线性方程组)
% 已知p0=(bv0+((roe1-r)./(1+r)).*bv0+((roe2-r)./(1+r).^2).*bv1+((roe2-r)./(r.*(1+r).^2)).*bv1;
并假定P0、BVj、ROEj为已知5×1的列向量
p0=[5;4;7;8;9],bv0=[3;2;4;5;7], bv1=[2.5;3;3.5;5.2;6],roe1=[0.1;0.15;0.08;0.07;0.12], roe1=[0.12;0.10;0.10;0.05;0.15],
% 如何求解r(r为5×1的列向量)
%编写mycost2000try.m函数
function F = mycost2000try(r);
F=[5;4;7;8;9]-([3;2;4;5;7]+(([0.1;0.15;0.08;0.07;0.12]-r)./(1+r).^2).*[3;2;4;5;7]+(( [0.12;0.10;0.10;0.05;0.15]-r)./(r.*(1+r).^2)).* [2.5;3;3.5;5.2;6];
%在命令行输入如下命令:
one=ones(5);
r0=0.1*one(:,1); % 初始点
options = optimset('Display','off'); % Turn off Display
[r,fval] = fsolve(@mycost2000try,r0, options)
问题1:为什么无法求解?
问题2:本题只是我的一个简化的例子,实际例子p0,bv0等应该是(1000×1)的列向量,相应地求解的r也为1000×1的列向量,这时应如何编写和调用m函数,为什么在mycost2000try .m先定义如下函数:
F=(p0-(bv0+((roe1-r)./(1+r)).*bv0+((roe2-r)./(1+r).^2).*bv1+((roe2-r)./(r.*(1+r).^2)).*bv1);
然后在命令行中定义p0,bv0等是不可识别的?
请各位不吝赐教。