全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
1448 4
2009-08-08
悬赏 3 个论坛币 已解决
请问一下论坛里的Matlab牛人们:我想要max f(x, y) over x, 其中y=g(x)是来自于H(x, g(x))=0的解。麻烦的是,y=g(x)没有显示解,请问我如何做这个最大化的问题?

该问题具体的数学表达为:max f(x, g(x)) s.t. H(x, g(x))=0, 其中g(x)没有显示解。所以我的问题是如何写code来解这个最优化,调用
g(x)?

多谢先!

最佳答案

twomantou 查看完整内容

3# analysismath 先写一个m文件,定义你的g(x)函数,大概的写法就是 function y=g(x) y=fzero(H(x,g(x)), initial value) %当然你这里要考虑到底用那个solver end 然后再写一个m文件,定义你的f(x,g(x)).在这个m文件里引用你前面定义的g(x)函数。注意到最后你这个f函数事实上就是x的单变量函数。 最后,在你的主文件里面对f(x)进行最优化,找个合适的optimizer就好了。 需要注意的是,这东西运算量可不小,因为每次 ...
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2009-8-8 09:51:08
3# analysismath
先写一个m文件,定义你的g(x)函数,大概的写法就是

function y=g(x)
y=fzero(H(x,g(x)), initial value) %当然你这里要考虑到底用那个solver
end

然后再写一个m文件,定义你的f(x,g(x)).在这个m文件里引用你前面定义的g(x)函数。注意到最后你这个f函数事实上就是x的单变量函数。

最后,在你的主文件里面对f(x)进行最优化,找个合适的optimizer就好了。

需要注意的是,这东西运算量可不小,因为每次optimizer输入一个数值之后,fzero都要求一次解,所以做好心理准备
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-8-8 09:58:14
最偷懒的笨方法应该是对g(x)做一个interpolation?

精确的方法,不管g(x)有没有显性解,反正输入x,H(x,g(x))=0能够返回一个唯一的g(x)对不?那就直接写一个m文件把这个对应关系建立起来,那不就是个g(x)函数了么?尽管依然没有显性解,但是在matlab里面就可以调用了吧?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-8-8 10:01:07
2# twomantou

能否说的再细一点?

每次输入一个x,是可以返回一个数值解g(x),但是我现在要找最优的x啊,总不能用穷尽的列举不同的x一个一个试吧?麻烦您说具体一点,谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-8-8 16:32:31
2# twomantou

十分感谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群