akjuan 发表于 2012-2-24 09:29:59

解方程的问题

前言:各位新老网友好。

工走后,好久没用matlab了,也好久没上simwe来了,业务生疏了,

今天小外甥女突然要我解个方程,我满口答应说,肯定没问题,

结果搞半天都没弄出来,哎,忆往昔,叹如今啊!

知道坛子里有很多高手,还得求救一下:


问题说明:

1、已知:
a=;

2、当f1=a.*x;             %%   未知数x为某9个变量

求解   f2=min(f1)-sum(x)-528;

% %约束条件,9个变量x(1:9)需要均为正整数


akjuan 发表于 2012-2-24 09:44:02

sorry,刚才约束条件没表述细致,9个变量x(1:9)需要均为大于2的正整数,不过这个应该关系不大,只要正整数弄出来,我想思路应该一样的

liuyalong008 发表于 2012-2-24 19:28:21

help linprog,fmincon

feiyuzhen 发表于 2012-2-24 20:41:50

f2的条件不明确,
如果是f2的绝对值的话,最小值为536.85,x = 9, x = 6, x = 5, x = 5, x = 5, x = 3, x = 3, x = 3, x = 3

akjuan 发表于 2012-2-26 13:12:19

谢谢liuyalong008的参与,但是你的回答显然没看清问题,也没有经过思考,就随意给出一个help....之类的!

感谢feiyuzhen的解答,不过那个不对,可能问题没描述清楚。
问题说明:

1、已知:
a=;

2、当f1=a.*x;             %%   未知数x为某9个变量

求解   f2=min(f1)-sum(x)-528;

% %约束条件,9个变量x(1:9)需要均为正整数
求解   f2=min(f1)-sum(x)-528;

下面我详细说一下问题,我弄了一下,感觉没有解,不知道各位是否有能求解出来的。

求解的未9个知数为x变量,也就是x1...x9

f2的条件语言描述: f2等于a.*x   中最小的那个数   减去所有x的和   再减去528。

其中a .*x 也就是这么一个数组;

sum(x) 是x1+...+x9

feiyuzhen 发表于 2012-2-26 13:29:32

9个未知量,求解可是需要9个方程的,
只有一个f2为约束条件的话,那就应该是优化问题,
或者求极大值或者求极小值,
我的回答求解的是f2的绝对值的极小值

hhwuai007 发表于 2012-2-26 14:49:01

这个简单,我给你编个程序,在打包成exe文件,dos环境下输入9个正整数,f2就出来了。

lin2009 发表于 2012-3-9 12:15:00

本帖最后由 lin2009 于 2012-3-9 12:15 编辑

应该是个简单的问题,应该不会理解错误。

楼主的问题重新表述:
设:S1 = 3.7632*x1 + 6.2400*x2 + 6.6640*x3 + 6.8160*x4 + 6.8600*x5 + 11.0500*x6 + 11.3750*x7 + 12.0700*x8 + 12.4250*x9;
求 f = min(S1) - (x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9) - 528 的值;
其中xi(i=1..9)为大于2的正整数。

问题分析:
关键在于求出 min(S1)的值;
取x的一组数值
设S2 = 3.7632*11+6.2400*11+6.6640*11+6.8160*11+6.8600*11+11.0500*11+11.3750*11+12.0700*11+12.4250*11;
显然,min(S1) <S2
对于xi(i=1..9) < 11的任意一组数值, S1〈 S2 (因为对应项均小于 系数*11),因此最小S1对应的x为: 3〈xi〈11。

有两种情况
1、当xi(i=1..9)可以取相同整数时,
xi(i=1..9)=3
f = 231.7896 - 3*9 - 528 = -323.2104
应该不是你外甥女想要的答案。

2、当xi(i=1..9)都不相同时,
注意到xi(i=1..9)的乘数是按从小到大排序的,要求S1的最小值,显然xi=12-i,(i=1..9)(从大到小顺序,可能有相应的理论)
min(S1) = 3.7632*11+6.2400*10+6.6640*9+6.8160*8+6.8600*7+11.0500*6+11.3750*5+12.0700*4+12.4250*3
      = 475.0492
f = 475.0492 - (11+3)/2*9 - 528
= -115.9508

也可以编个程序,用穷举法求解并验证。(OK)

shamohu 发表于 2012-3-11 14:21:03

1stOpt求解:
1:x值允许重复
IntParameter x(9)=;
Constant a=;
ConstStrf1=Sum(i=1:9,a,x)(a*x), f2=Sum(i=1:9,x)(x);
PassParameter f1-f2-528;
MinFunctionf1;
目标函数值(最小): 231.7896
x1: 3
x2: 3
x3: 3
x4: 3
x5: 3
x6: 3
x7: 3
x8: 3
x9: 3

传递参数(PassParameter):
f1-f2-528 = -323.2104

2:x值不重复
IntParameter x(9)=;
Constant a=;
ConstStrf1=Sum(i=1:9,a,x)(a*x), f2=Sum(i=1:9,x)(x);
PassParameter f1-f2-528;
MinFunctionf1;
                  For(i=1:8)(x-x>=1);
目标函数值(最小): 475.0492
x1: 11
x2: 10
x3: 9
x4: 8
x5: 7
x6: 6
x7: 5
x8: 4
x9: 3

传递参数(PassParameter):
f1-f2-528 = -115.9508

页: [1]
查看完整版本: 解方程的问题