数模论坛

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

用matlab如何实现函数嵌套??急!

[复制链接]
发表于 2004-4-12 19:30:33 | 显示全部楼层 |阅读模式
小弟在做0.618的程序,想封装起来,用二次函数的系数作为接口,返回最大值的坐标~
可是调用时出现问题!请看:
function [x0,y0]=my618(c) %输入一个二次函数的系数

function [y]=f(x)
  y=c(3)*x.^2+c(2)*x+c(1);
end

a=-100;b=100;e=0.01;p=0;
while(p==0)          %flag p==0执行循环,否则退出
t1=b-.618*(b-a);t2=a+.618*(b-a);
  if (f(t1)<=f(t2))
    if((t2-a)<e)
        p=1;        %flag p=1 退出循环
        x0=t1,y0=f(x0)
    else b=t2;t2=t1;t1=a+.618*(b-a);
    end
  elseif(b-t1<e)
        p=1;
        x0=t2,y0=f(x0)
    else a=t1;t1=t2;t2=b-.618*(b-a);
    end
  end
end

end

输入命令
my618((1,2,1))
??? my618((1,2,1))
            |
Error: ")" expected, "," found.
请 指点,该如何实现????[em12
发表于 2004-4-12 20:50:29 | 显示全部楼层

(1)  输入命令my618((1,2,1))-->my618( [1 2 1] )

(2)  在C和C++中都不允许函数内再定义函数,但可以调用自已或其他函数.就把
function [y]=f(x)
  y=c(3)*x.^2+c(2)*x+c(1);
end

-->

function [y]=f(x,c)
  y=c(3)*x.^2+c(2)*x+c(1);
成为独立的m文件,主文件中f(x)-->f(x,c)便可.

好象结果有误自己慢慢修改噢
 楼主| 发表于 2004-4-13 23:56:17 | 显示全部楼层
谢谢 搞定了~
您需要登录后才可以回帖 登录 | 注-册-帐-号

本版积分规则

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

GMT+8, 2024-5-16 01:48 , Processed in 0.050485 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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