MATLAB高手帮我解决一下,用MATLAB求得的函数值和理论值不相符合,是怎么回事? 30

M文件:functionfunFp(y1,y2,y3,y4,p)g1=exp(4.9003+0.0996*y1)-5.4566*y3-4.2813*y4-97.3785;... M文件:
function funFp(y1,y2,y3,y4,p)
g1=exp(4.9003+0.0996*y1)-5.4566*y3-4.2813*y4-97.3785;
g2=exp(4.9003+0.0996*y1)+1.627*exp(4.9003+0.0996*y2)-17.1655*y3-9.657*y4-268.225;
g3=exp(4.9003+0.0996*y1)-9.2675*y3-0.5436*y4-98.111;
g4=exp(4.9003+0.0996*y1)-4.9291*y3-4.3016*y4-92.3065;
t=exp(p*g1)+exp(p*g2)+exp(p*g3)+exp(p*g4);
f=(1/p)*log(t+eps);
[g1,g2,g3,g4,f]
%程序结束。
问题:f=(1/p)*log(t+eps) p>0在理论上的最大值应该是{max(g1,g2,g3,g4)+ln(4)/p},当P值很大时,趋于无穷大时,f≈max(g1,g2,g3,g4)。这是经过理论推导的。
但用MATLAB模拟时,固定y1,y2,y3,y4,不断增大p时,却出现了这样情况(举一特例):
①funFp(1,2,3,4,10)
[g1,g2,g3,g4,f]= [17.5248 56.7791 20.3104 24.0981 56.7791]
②funFp(1,2,3,4,100)
[g1,g2,g3,g4,f]= [17.5248 56.7791 20.3104 24.0981 Inf]
当p=100时,f=无穷大,和理论解不符合。这是怎么回事?请指点。
回答的好我还会追加悬赏的。谢谢!
展开
 我来答
jimmy7liang
2011-12-06 · TA获得超过2535个赞
知道小有建树答主
回答量:404
采纳率:0%
帮助的人:467万
展开全部
这个会出现inf是因为前面在算 t 的时候
t=exp(p*g1)+exp(p*g2)+exp(p*g3)+exp(p*g4);
funFp(1,2,3,4,100)
你可以算算 exp(p*g2),你这里p取100,g2取56 那就是 exp(5600)啦~ 这个数已经超出了Matlab的计算范围了,即已经是inf了,所以再往后算都是inf了~~~
追问
但是理论解并不是inf,f<(1/p)*log(3*exp(5600))=1/100*(ln3+5600)=56+ln(3)/100= 56.0110。对于这种情况,该怎么处理?谢谢!
追答
我知道理论并不是啊~~  但是Matlab算不到啊~~ 这是Matlab的问题~~~
就是Matlab算不到那个exp(p*g2)了,exp(5600)已经超出了它自身的计算范围了~~~
不是说计算机是万能的,那你超过了它的计算范围也没有办法啊~~
只要取的p不要太大,Matlab还是能算的~~
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
macs2008
2011-12-06 · TA获得超过1411个赞
知道小有建树答主
回答量:595
采纳率:0%
帮助的人:384万
展开全部
根据这道题的特点
可以
m=p*max(g1,g2,g3,g4);
t=exp(p*g1-m)+exp(p*g2-m)+exp(p*g3-m)+exp(p*g4-m);
f=m+(1/p)*log(t+eps);

每一步都在可计算范围之内。

用MATLAB求得的函数值和理论值不相符合 原因是你让它计算的规则就不是你要的结果。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式