gnakmc 发表于 2005-12-27 21:59

简单的程序,为什么会有这个错误?

<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)=';<br>y(1,2:3)=;<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 ==&gt; *<br>Function '*' is not defined for values of class 'function_handle'.</P>
<P>Error in ==&gt; D:\MATLAB6p5\work\daba.m<br>On line 7==&gt;   y(i+1,2:3)=y(i,2:3)-h*f(y(i,2:3));<br><br>为什么有这个错误啊?*未定义是什么意思??<br><br>哪个高人指点下啊,郁闷死了</P>
[此贴子已经被作者于2005-12-27 22:26:13编辑过]

sffei 发表于 2005-12-28 09:33

<P> 使用feval函数运行你的句柄函数   <br>y(i+1,2:3)=y(i,2:3)-h*feval(f,y(i,2:3));</P>
[此贴子已经被作者于2005-12-28 10:04:32编辑过]

huhust 发表于 2005-12-28 10:12

回复:(gnakmc)简单的程序,为什么会有这个错误?

我帮稍微改了一下,你看行不?<BR>function y = daba(f,a,b,h,k)<BR>n = (b-a)/h;<BR>y = zeros(n+1,3);<BR>y(:,1) = ';<BR>y(1,2:3) = ;<BR>for i = 1:n<BR>    y(i+1,2:3) = y(i,2:3)-h * feval(f,y(i,2:3));<BR>end<BR><BR>function f = H(x)<BR>f = [-x(1)^2-x(2) -x(1)+2*x(1)*x(2)];<BR><BR>daba(@H,0,1,0.1,1)
页: [1]
查看完整版本: 简单的程序,为什么会有这个错误?