| 查看: 716 | 回复: 3 | |||||
niexianling铜虫 (初入文坛)
|
[求助]
目标函数出现错误
|
| 请各位给我看一下目标函数lmsob是哪里的错误以及怎样修改,OBJVa.m的运行总是提示lmsob目标函数式编写不正确,请具体详述一下,急。 |
» 本帖附件资源列表
-
欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com - 附件 1 : OBJVa.m
- 附件 2 : lmsob.m
2013-05-27 17:00:52, 1.44 K
2013-05-27 17:02:05, 2.16 K
» 猜你喜欢
【复旦大学】二维材料方向招收2026年博士研究生1名
已经有0人回复
北京纳米能源与系统研究所 王中林院士/曹南颖研究员课题组2026级硕/博/博后招生
已经有10人回复
物理学I论文润色/翻译怎么收费?
已经有71人回复
荷兰Utrecht University超快太赫兹光谱王海教授课题招收2026 CSC博士生
已经有23人回复
反铁磁体中的磁性切换:两种不同的机制已成功可视化
已经有0人回复
求标准粉末衍射卡号 ICDD 01-076-1802
已经有0人回复
新西兰Robinson研究所招收全奖PhD
已经有0人回复
石墨烯转移--二氧化硅衬底石墨烯
已经有0人回复
笼目材料中量子自旋液体基态的证据
已经有0人回复
» 本主题相关价值贴推荐,对您同样有帮助:
帮忙给看看这个matlab优化函数 问题
已经有8人回复
matlab程序问题,总是出错,麻烦大家看看问题在那里?
已经有6人回复
一个区间搜索的c语言程序 出问题了
已经有8人回复
【求助】帮忙分析一下我的错误【已完结】
已经有6人回复
【求助】VS2005数值计算程序调试【急求!!!!加金币】
已经有9人回复
【求助】请教:隐式目标函数和约束条件非线性规划问题
已经有5人回复

月只蓝
主管区长 (职业作家)
-

专家经验: +1059 - 计算强帖: 8
- 应助: 1712 (讲师)
- 贵宾: 8.888
- 金币: 68121.7
- 散金: 1938
- 红花: 443
- 沙发: 4
- 帖子: 4373
- 在线: 3291.4小时
- 虫号: 1122189
- 注册: 2010-10-14
- 专业: 宇宙学
- 管辖: 计算模拟区
【答案】应助回帖
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...
感谢参与,应助指数 +1
niexianling: 金币+100, ★★★很有帮助, 非常感谢您的指点,很专业 2013-05-28 21:11:15
感谢参与,应助指数 +1
niexianling: 金币+100, ★★★很有帮助, 非常感谢您的指点,很专业 2013-05-28 21:11:15
|
其实,MATLAB提示你关于目标函数的问题,只是你程序存在的几个问题中的一个,解释如下: 其一,目标函数的问题,你函数的命名有问题,以致于两个m文件逻辑关系混淆不清,其实m文件的命名有相当的自由,后面的程序中的命名就是一个例子。 其二,定积分的求解定义自变量的问题,int((1/(2*pi)^0.5)*exp((-1/2)*x_1^2),x_1,-inf,z_1)和int((1/(2*pi)^0.5)*exp((-1/2)*x_2^2),x_2,-inf,z_2)中的自变量x_1和x_2须用syms x_1 x_2来定义,不然会出现“??? Undefined function or variable 'x_1'”的错误提示。 其三,定积分的积分积分区间问题,t是一个51*1维的行向量,所以z_1和z_2也是51*1维的行向量,你想用int((1/(2*pi)^0.5)*exp((-1/2)*x_1^2),x_1,-inf,z_1)和int((1/(2*pi)^0.5)*exp((-1/2)*x_2^2),x_2,-inf,z_2)求两次定积分,每次输出51个结果,但是实际你help int 一下,就知道,int不能同时求多个积分区间的结果,至少用你这些的代码是不可以的,你这样的代码系统会提示你: ??? Error using ==> maplemex Error, (in int) wrong number (or type) of arguments: invalid options or option values passed to definite integration. 这51个定积分单独求出来,再组成一个向量就可以了,见后面的程序。 其四,在你的命名为lmsob的m文件,最后一行的end是完全没必要的,好吧,这问题不大,最大的问题在于,倒数第二行的“OBJVa=c1*(A10/0.15*exp(0.15^2/2*0.15^2-(t-c2)/0.15)*int((1/(2*pi)^0.5)*exp((-1/2)*x_1^2),x_1,-inf,z_1))-c3*(A20/0.16*exp(0.17^2/2*0.16^2-(t-c4)/0.16)*int((1/(2*pi)^0.5)*exp((-1/2)*x_2^2),x_2,-inf,z_2));”,这个式子有点常,其实是由基本的三项: 一个列向量 乘以 一个行向量 乘以 一个行向量;先讲一下,MATLAB中,一个行(列)向量 乘以一个行(列)向量会因维数不同,不能计算;一个行(列)向量 点乘(注意是点乘,“.*”)一个行(列)向量会得到一个新的行(列)向量,由于用到点乘,其实此时已经是数组之间的运算了,既然是数组之间的运算,一个一个行(列)向量 点乘 一个列(行)向量,也是不允许的,不能计算;一个行向量乘以一个列向量会得到一个数,而反过来,即一个列向量乘以一个行向量会得到一个矩阵;现在问题来了,你定义“OBJVa=……”中的第一项就是一个列向量,按照上面讲的MATLAB矩阵数组运算规律,这样的计算结果只能一个矩阵或者一个列向量,而你最终的是想获得20个数字的结果吧?如果最终是想获得20个纯数字的结果,参见后附的程序,如果想获得是20个1*51维的列向量或者20个51*51维的矩阵的话,按照上面运算规律修改程序即可。 %------------------------------第一个m文件---------------------------------------------------- function jisuanjieguo clear all;clc m=[0.481736644302983,2.94957203824238,1.09399774122023,3.75750613928427;1.06135672641442,2.91561309396085,1.33234054044775,3.89003886226546;1.21219908647450,3.15663543380302,0.881394167799156,3.73019860286579;1.38765080523568,3.23114464868989,1.27027161204492,4.03792623322128;0.359879059008655,3.05261473905062,2.01557021271726,3.96040054359488;0.502647855518203,3.29696111389266,1.39989825391603,3.96714112009155;0.312419499606609,3.10503492835515,2.18019902553465,3.71961900674725;0.105130356626851,2.99769305962854,2.41764853243688,4.00525331998188;0.544705219083041,3.04416613022435,2.24589323195766,3.90189256848580;0.128231451255275,2.94842190591994,1.13550109520063,3.74356865269532;0.763477472569916,2.98753737214792,0.545424442886775,3.96566006246573;1.06910543308776,2.86127649428987,0.126812771046420,3.78250244379277;1.49020841141549,3.14148153446344,1.75329214190687,3.86275707507808;0.0715845332951863,3.01569654054312,2.59471395951649,3.99104308227833;1.01382175380874,3.13320506401545,0.120408361347543,3.71376487137305;0.322224666332880,3.27335860572682,0.980276665474573,3.70803137591493;0.697928896073242,2.95730682116205,0.811642925398756,4.06080394821544;0.832650233602747,3.01431847984169,1.30039789571561,3.87632882721789;0.862088937844217,2.85931478435019,2.47468028467206,4.00851345874163;1.27468907746227,3.19224757408864,1.69120584393105,3.68661850606776;]; for i=1:20 OBJVa(i)=lmsob(m(i,1),m(i,2),m(i,3),m(i,4)) %计算目标函数值 end OBJVa %-------------------------------------------------------------------------------------------------- %-------------------------------第二个m文件------------------------------------------------ function y=lmsob(c1,c2,c3,c4) %A10,A20都是一个51*1的列向量 syms x_1 x_2 A10=[1.65812050716062;1.37842188749411;1.32709929007728;1.75367065593514;2.51304929550515;2.79491385756236;1.07714921956842;2.66428084508187;2.13827457310178;1.94620054796526;2.35415605309299;1.31204317847664;1.51660859151163;2.20195161465751;2.10310222972196;1.76459748362657;2.06208279629935;2.07424058256854;1.07203440245290;2.65833257485091;1.48405130710365;1.57706857848243;2.87883422699138;1.90606734046389;2.07623645980896;2.27163482373316;1.77192220104947;2.11019745913312;1.74570261018346;1.22099926156193;2.07149834266615;1.09073995829449;2.35149412200773;1.98998423917103;1.71569344638625;1.14593753460427;2.04827142429856;1.75568474816854;2.54626241305846;2.37133833985307;1.79452517173189;1.94568581421309;1.66056195248652;1.51374245529544;2.94772481165852;1.47245169009091;2.92065621586633;2.11476472478847;2.33311868995606;1.75906126686106;1.57921864637486]; %第1个组分在51个波长下的峰面积,51*1 A20=[4.55384241423182;4.89249075634115;4.85541503507305;5.19247597498081;5.45249297888724;4.28670916677997;5.93827455871261;4.07516990748543;5.78221317419875;4.36184853203795;5.62184092201618;5.22656041883435;4.55045860649714;4.61744333019453;5.08623878201647;5.77281803917650;4.61725879308014;4.98069032196413;5.94471324434871;5.51400301449397;4.39599644173578;5.98357804702743;5.20681939885120;4.41107033730235;4.77944226780546;5.75517971730936;5.74278513151668;5.61881126026832;5.54243601448795;4.39187816797730;5.74092819249945;5.09517257848863;5.38104415249068;4.50887012358101;5.34275530560960;5.79863621461785;5.01686763696078;5.97882849964250;4.85520498607941;4.48592494593789;5.69347349991529;4.81358361405434;4.99838477749102;5.33680256496134;5.28163362243688;5.61896565010412;5.24360419620764;5.91554962521572;4.98686106806965;5.96872459187650;4.30896308164311]; %第2个组分在51个波长下的峰面积 t=0:0.2:10; %1*51的行向量 z_1=(t-c2)/0.15-(0.15/0.15); %1*51的行向量 z_2=(t-c4)/0.17-(0.17/0.16); %1*51的行向量 for i=1:51 int_1(i)=int((1/(2*pi)^0.5)*exp((-1/2)*x_1^2),x_1,-inf,z_1(i)); int_2(i)=int((1/(2*pi)^0.5)*exp((-1/2)*x_2^2),x_2,-inf,z_2(i)); end y=c1* A10'/0.15 *(( exp(0.15^2/2*0.15^2-(t-c2)/0.15) .* int_1) )'-... c3* A20'/0.16 *(( exp(0.17^2/2*0.16^2-(t-c4)/0.16) .* int_2) )'; %---------------------------------------------------------------------------------------------- |

2楼2013-05-27 21:01:47
月只蓝
主管区长 (职业作家)
-

专家经验: +1059 - 计算强帖: 8
- 应助: 1712 (讲师)
- 贵宾: 8.888
- 金币: 68121.7
- 散金: 1938
- 红花: 443
- 沙发: 4
- 帖子: 4373
- 在线: 3291.4小时
- 虫号: 1122189
- 注册: 2010-10-14
- 专业: 宇宙学
- 管辖: 计算模拟区

3楼2013-05-27 21:14:47
月只蓝
主管区长 (职业作家)
-

专家经验: +1059 - 计算强帖: 8
- 应助: 1712 (讲师)
- 贵宾: 8.888
- 金币: 68121.7
- 散金: 1938
- 红花: 443
- 沙发: 4
- 帖子: 4373
- 在线: 3291.4小时
- 虫号: 1122189
- 注册: 2010-10-14
- 专业: 宇宙学
- 管辖: 计算模拟区

4楼2013-05-27 22:48:41







回复此楼