<P>我学数值分析,老师给了道最优控制的问题<br><br>题目其实很简单,是个两点边值问题为:<br>X'=-X<SUP>2</SUP>-y x(0)=1.0<br>y'=-x+2yx Y(1)=0<br>用打靶法求解。<br><br>所谓打靶法,即在边值问题的初始点x=a处人为地在给一个边值条件,例如y'(a) ,然后解初值问题,算出在边值问题的终端点x=b处的值,不断调整人工边界条件,直到算出的x=b处的值与一直条件吻合。<br><br><br>编了个程序,有2部分,第一部分非常简单,就是函数<br>function F=H(x)<br>F=[-x(1)^2-x(2) -x(1)+2*x(1)*x(2)];<br>end<br><br>第2部分运行的时候老出错,哎,高手帮忙看看<br>function y=daba(f,a,b,h,k)<br>n=(b-a)/h;<br>y=zeros(n+1,3);<br>y(:,1)=[a:h:b]';<br>y(1,2:3)=[1,k];<br>for i=1:n<br> y(i+1,2:3)=y(i,2:3)-h*f(y(i,2:3));<br>end<br><br><br>运行:daba(@H,0,1,0.1,1)<br>??? Error using ==> *<br>Function '*' is not defined for values of class 'function_handle'.</P>
<P>Error in ==> D:\MATLAB6p5\work\daba.m<br>On line 7 ==> y(i+1,2:3)=y(i,2:3)-h*f(y(i,2:3));<br><br>为什么有这个错误啊?*未定义是什么意思??<br><br>哪个高人指点下啊,郁闷死了</P>