声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1598|回复: 11

[综合讨论] 当变量数值太大时如何化简使得matlab能够计算?

[复制链接]
发表于 2009-3-2 13:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
需要计算以下式子的函数值,log(exp(x)+exp(y)+exp(z)),因为x,y和z的数值都非常大,以至于matlab中exp(x)的计算结果显示为lnf,请问大家有没有什么办法可以对log(exp(x)+exp(y)+exp(z))进行化简,从而使得可以计算?
回复
分享到:

使用道具 举报

发表于 2009-3-2 14:13 | 显示全部楼层
用rocwoods兄的方法,参见http://forum.vibunion.com/forum/thread-77042-1-1.html
例如:
clear
clc
x0=1000;
y0=1200;
z0=1400;
x1=sym(x0);
y1=sym(y0);
z1=sym(z0);
a1=log(exp(x0)+exp(y0)+exp(z0));
a2=log(exp(x1)+exp(y1)+exp(z1));
disp([a1 vpa(a2)])
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[                               Inf, 1400.0000000000000000000000000000]
 楼主| 发表于 2009-3-2 14:32 | 显示全部楼层
因为还需要用最优化的命令来估计参数,我试了一下,这样好像不行,matlab提示输入的数据不能是字符型的
发表于 2009-3-2 14:42 | 显示全部楼层

回复 板凳 realyw 的帖子

a2=double(a2)转化为数据,再试试
 楼主| 发表于 2009-3-2 14:48 | 显示全部楼层
转化为数据后就是lnf了,呵呵
发表于 2009-3-2 15:01 | 显示全部楼层
看样子数据是特别大啊,不太清楚接下来的运算能否转化为符号运算。
 楼主| 发表于 2009-3-2 17:06 | 显示全部楼层
是啊,我都快急死了,怎么办啊?!!!
发表于 2009-3-2 19:06 | 显示全部楼层
可否告知x,y,z各为多少?
发表于 2009-3-2 19:33 | 显示全部楼层
试试mathematica
 楼主| 发表于 2009-3-2 20:28 | 显示全部楼层
x,y和z都是包含待定系数的变量,如x=a+1000b,y=c+1050d,z=e+1100f
其中,a,b,c,d,e,f是我需要估计的参数。
发表于 2009-3-2 23:00 | 显示全部楼层
无法知道并了解LZ原始问题的全貌, 工程直觉, 以为应该在某些地方应即可简化才是!
发表于 2009-3-3 09:02 | 显示全部楼层
同意ChaChing的观点。工程直觉上感觉应该在某些地方应即可简化。
如果直接做的话建议,找出x,y,z中最大值,譬如z,log(exp(x)+exp(y)+exp(z)) = log(exp(z) (1+exp(y-z) + exp(x-z)) ) = z+log(1+exp(y-z) + exp(x-z) )
(1+exp(y-z) + exp(x-z) ) 是1+p型的问题,p是很小的一个正数
利用log1p函数可以比较准确求log(1+p),p是很小的一个正数的问题。log1p是MATLAB7.0以后增加的函数,具体了解看其帮助文档。

[ 本帖最后由 rocwoods 于 2009-3-3 14:34 编辑 ]

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-22 19:46 , Processed in 0.077422 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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