数模论坛

 找回密码
 注-册-帐-号
搜索
热搜: 活动 交友 discuz
查看: 5037|回复: 13

求助:请哥哥姐姐帮忙看一下这个MATLAB程序错在哪

[复制链接]
发表于 2004-8-12 03:01:18 | 显示全部楼层 |阅读模式
<>MATLAB白痴一个就是我,刚学到几页薄薄的资料,不知道下面这个程序错在哪,请帮帮忙,不要丢我砖头,我也知道问了个很没水准的问题,可是我无助,感激不尽[em34]</P>
<>它老说我这个错误</P>
<>Error: Missing variable or function.</P>
<P>g1=[0,0,0];g2=[0,0,0],d=[0,0,0];
a0=0,b0=1000000000,a1=0,b1=0,p=1/4,t=3,e=0.00001;
x2=[0,0,0];H2=[1,0,0;0,1,0;0,0,1];
    function [g]=qiu(x)
    while(n~=0)
    g2(1)=2*x2(1)-2;g2(2)=8*x2(2)+18;g2(3)=18*x2(3);
    n=1;
for i=1:1;3
  if(g2(i)~=e)
   break;
        end
    end
if(i&lt;3)
        d=(-1)*H2*g2;
    else
        n=0;
    end
    while(n==1)
n=2;
    wa='(x2(1)+a0*d(1))*(x2(1)+a0*d(1))+4*(x2(2)+a0*d(2))*(x2(2)+a0*d(2))+9*(x2(3)+a0*d(3))*(x2(3)+a0*d(3))-2*(x2(1)+a0*d(1))+18*(x2(2)+a0*d(2))';
    f0='x2(1)*x2(1)+4*x2(2)*x2(2)+9*x2(3)*x2(3)-2*x2(1)+18*x2(2)';
    wa1='2*x2(1)*d(1)+8*x2(2)*d(2)+18*x2(3)*d(3)-2*d(1)+18*d(2)';
   switch (n)
{
case 2:
  if (wa&lt;=f0+p*a0*wa1)
   n=3;
  else {
   a1=a0;b1=a0;n=4;
  }
case 3:
        if (wa&gt;=f0+(1-p)*a0*wa1)
   break;
  else
  {
   a1=a0;b1=b0;
   if(b1&lt;inf)
    n=4;
            else
                {
                    a1=t*a0;a0=a1;
                    n=1;break;
                }
  }
    case 4:
        a1=(a1+b1)/2;
        a0=a1;
        n=1;break;
}
end
if(n~=0)
    x1=x2;
    x2=x2+a0*d;
    g1=g2;
    g2(1)=2*x2(1)-2;g2(2)=8*x2(2)+18;g2(3)=18*x2(3);
    H1=H2;
    H2=H2+(x2-x1)*(x2-x1)'/((x2-x1)'*(g2-g1))-H2*(g2-g1)*(g2-g1)'*H2/((g2-g1)'*H2*(g2-g1));
end
end</P>
<P>
</P>
 楼主| 发表于 2004-8-12 03:02:22 | 显示全部楼层
<>非常急</P><>在线等</P>
发表于 2004-8-12 04:32:20 | 显示全部楼层
是不是你用了中文名字了?文件名不能用中文。
发表于 2004-8-12 04:42:57 | 显示全部楼层
while(n~=0)
    g2(1)=2*x2(1)-2;g2(2)=8*x2(2)+18;g2(3)=18*x2(3);
    n=1;
;这儿是死循环吧?
发表于 2004-8-12 04:46:56 | 显示全部楼层
<>if(g2(i)~=e)</P><>e为无穷不循环的小数。无法与别的数比较是否相等的。</P><>你可以判断这个数与e的差的绝对值是不是小于一个数(比如0。0000001)。</P>
发表于 2004-8-12 04:50:54 | 显示全部楼层
<>while(n==1)
n=2;
    wa='(x2(1)+a0*d(1))*(x2(1)+a0*d(1))+4*(x2(2)+a0*d(2))*(x2(2)+a0*d(2))+9*(x2(3)+a0*d(3))*(x2(3)+a0*d(3))-2*(x2(1)+a0*d(1))+18*(x2(2)+a0*d(2))';
    f0='x2(1)*x2(1)+4*x2(2)*x2(2)+9*x2(3)*x2(3)-2*x2(1)+18*x2(2)';
    wa1='2*x2(1)*d(1)+8*x2(2)*d(2)+18*x2(3)*d(3)-2*d(1)+18*d(2)';
   switch (n)
从while(n==1)开始</P><>end的个数不够。</P><>if 要用end结束的。</P>
 楼主| 发表于 2004-8-12 06:16:32 | 显示全部楼层
谢谢哥哥姐姐们耐着性子看完我的程序,并提出宝贵意见,不胜感激!![em04]
 楼主| 发表于 2004-8-12 06:33:21 | 显示全部楼层
可以了,谢谢GOLDEN大哥
发表于 2004-8-15 19:44:34 | 显示全部楼层
<>你检验一下 是否你的变量都定义了,</P>
发表于 2004-8-16 04:14:30 | 显示全部楼层
哈哈。
您需要登录后才可以回帖 登录 | 注-册-帐-号

本版积分规则

小黑屋|手机版|Archiver|数学建模网 ( 湘ICP备11011602号 )

GMT+8, 2024-11-27 19:45 , Processed in 0.060112 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表