MATLAB中文论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1299|回复: 19|关注: 0

[已解决] function函数问题

[复制链接]

新手

13 麦片

财富积分


050


1

主题

10

帖子

0

最佳答案
看书做线性规划问题的时候,发现书上有这样的函数
function [f,g]=mengte(x);
f=x(1)^2+x(2)^2+3*x(3)^2+4*x(4)^2+2*x(5)-8*x(1)-2*x(2)-3*x(3)-...
x(4)-2*x(5);
g=[sum(x)-400
x(1)+2*x(2)+2*x(3)+x(4)+6*x(5)-800
2*x(1)+x(2)+6*x(3)-200
x(3)+x(4)+5*x(5)-200];
这个函数在MATLAB里面显示是红的,应该是有错误,我查了百度,也没有见到这样写函数的,请问下大神们,这样的函数书写是对的吗,这又是什么意思呢?

论坛优秀回答者

中级

1493 麦片

财富积分


5001500


2

主题

3030

帖子

348

最佳答案
  • 关注者: 134
发表于 2017-7-17 20:20:48 | 显示全部楼层
如果你的书不是盗版错印,应该有几个逗号你没敲

论坛优秀回答者

权威

5995 麦片

财富积分



5

主题

7338

帖子

1373

最佳答案
  • 关注者: 295
发表于 2017-7-17 20:22:41 | 显示全部楼层
这个函数是对的,应该没什么问题。我试了,有结果 。

新手

13 麦片

财富积分


050


1

主题

10

帖子

0

最佳答案
 楼主| 发表于 2017-7-17 20:23:14 | 显示全部楼层
halleyhit 发表于 2017-7-17 20:20
如果你的书不是盗版错印,应该有几个逗号你没敲

没有了,我看书上跟网上的资料,同样的例题,同样的解答,不太理解,请问你一下,这个如何改呢

新手

10 麦片

财富积分


050


1

主题

11

帖子

0

最佳答案
发表于 2017-7-17 20:37:47 | 显示全部楼层
应该是没什么问题,楼主试一下就知道了

论坛优秀回答者

中级

1493 麦片

财富积分


5001500


2

主题

3030

帖子

348

最佳答案
  • 关注者: 134
发表于 2017-7-17 20:44:22 | 显示全部楼层
myloveccc 发表于 2017-7-17 20:23
没有了,我看书上跟网上的资料,同样的例题,同样的解答,不太理解,请问你一下,这个如何改呢 ...
  1. function [f,g]=mengte(x)
  2. f=x(1)^2+x(2)^2+3*x(3)^2+4*x(4)^2+2*x(5)-8*x(1)-2*x(2)-3*x(3)-x(4)-2*x(5);
  3. g=[sum(x)-400;x(1)+2*x(2)+2*x(3)+x(4)+6*x(5)-800;2*x(1)+x(2)+6*x(3)-200;x(3)+x(4)+5*x(5)-200];
复制代码

存成mengte.m应该就能调用了

新手

13 麦片

财富积分


050


1

主题

10

帖子

0

最佳答案
 楼主| 发表于 2017-7-17 20:44:28 | 显示全部楼层
jewyokel 发表于 2017-7-17 20:37
应该是没什么问题,楼主试一下就知道了

function [f,g]  这个用法是什么意思呢 ?网上包括书上只有function y 这样的,没有中括号的形式,能不能说一下,谢谢你了

MATLAB 基础讨论
版块优秀回答者

中级

540 麦片

财富积分


5001500


12

主题

1000

帖子

102

最佳答案
  • 关注者: 43
发表于 2017-7-17 21:00:06 | 显示全部楼层
myloveccc 发表于 2017-7-17 20:44
function [f,g]  这个用法是什么意思呢 ?网上包括书上只有function y 这样的,没有中括号的形式,能不能 ...

输入x 返回 f 和 g。 function y 是返回y 一种结果。也可以是不返回的。

论坛优秀回答者

入门

313 麦片

财富积分


50500


5

主题

722

帖子

65

最佳答案
  • 关注者: 9
发表于 2017-7-18 09:51:27 | 显示全部楼层
  1. function [f,g]=mengte(x);
  2. f=x(1)^2+x(2)^2+3*x(3)^2+4*x(4)^2+2*x(5)-8*x(1)-2*x(2)-3*x(3)-...
  3. x(4)-2*x(5);
  4. g=[sum(x)-400 ...
  5. x(1)+2*x(2)+2*x(3)+x(4)+6*x(5)-800 ...
  6. 2*x(1)+x(2)+6*x(3)-200 ...
  7. x(3)+x(4)+5*x(5)-200];
复制代码

换行的结尾要加...的,不然会报错

新手

13 麦片

财富积分


050


1

主题

10

帖子

0

最佳答案
 楼主| 发表于 2017-7-18 18:37:35 | 显示全部楼层
function [f,g]=mengte(x)
f=x(1)^2+x(2)^2+3*x(3)^2+4*x(4)^2+2*x(5)-8*x(1)-2*x(2)-3*x(3)-...
x(4)-2*x(5);
g=[sum(x)-400
x(1)+2*x(2)+2*x(3)+x(4)+6*x(5)-800
2*x(1)+x(2)+6*x(3)-200
x(3)+x(4)+5*x(5)-200];
end



rand('state',sum(clock));
p0=0;
tic
for i=1:10^6
x=randi([0,99],1,5);
[f,g]=mengte(x);
if all(g<=0)
    if p0<f
        x0=x;p0=f;
    end
end
end
x0,p0
toc
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

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