登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
矩量法 MOM
>
跪求大侠指点怎么解决程序中的奇异问题!
发帖
回复
1
2
2768
阅读
10
回复
[
求助
]
跪求大侠指点怎么解决程序中的奇异问题!
离线
feiluo9
UID :13326
注册:
2008-06-01
登录:
2010-03-15
发帖:
34
等级:
仿真新人
0楼
发表于: 2009-04-22 16:15:16
不知道大家在matlab编程时可遇到过这样的问题:程序虽然能运行,但是经常会提示警告Devide by zero
FS6I?q#tQ
l1D"*J 2`
我的程序里有类似于c=sqrt(a-b)这样的式子,因为a,b很接近,计算出来c的结果就是0了。。。。.结果在下面的程序里,因为c在分母上,就出现了上面的警告。。。
=>Dw,+"
更郁闷的是:在几百次循环里,有的时候c是0,有的时候又不是。。
oU)HxV
3R[,,WAj$
经过很多次的检查,我始终找不到解决这个问 ..
8@BN6
m*\XH DB
未注册仅能浏览
部分内容
,查看
全部内容及附件
请先
登录
或
注册
共
条评分
离线
gwzhao
方恨少
UID :17098
注册:
2008-08-24
登录:
2019-01-09
发帖:
1374
等级:
荣誉管理员
1楼
发表于: 2009-04-22 16:50:04
在你程序中出现 * / a , a又是非常非常非常小的数值,这也是允许的么? 你下面的计算再带入这个数值还有意义吗?
M`umfw T
一般的处理方式是设定个最小值,比如DOUBLE_ABS_MIN = 1 E -32 ; 比这个数值小的话,就用它来代替。
\O?#gW\tR
K}O~tff
但我个人觉得,程序中出现这样的数值,那以后再使用这个值也没什么意义了啊,不解。
共
条评分
逆流而上
离线
feiluo9
UID :13326
注册:
2008-06-01
登录:
2010-03-15
发帖:
34
等级:
仿真新人
2楼
发表于: 2009-04-22 20:18:18
但是根据资料上的公式,却只能那样代入计算。。。哭死
共
条评分
离线
huadodo
UID :3119
注册:
2007-05-30
登录:
2020-06-24
发帖:
574
等级:
积极交流六级
3楼
发表于: 2009-04-23 14:09:35
当数学表达式有奇点的时候,是不能直接用程序写的,会出现除0错误,如果是用一个很小的值来替代这个0呢,往往也会出现很大的数值误差。
.0.Ha}{6b
正确的做法的应该是在数学上先把这个极点处理掉,比如说1/sqrt(x^2+y^2)这个表达式算面积分,你在一个包含X,Y坐标中原点的一个区域上直接做数值积分,在原点那里就会出现除0错误。正确的做法应该是先把这个积分表达式转换为极坐标下,成为1/p,然后再积分,由于在极坐标下积分原来的dx*dy变为p*dp*dtheta了,而这里多出来的p正好可以把前面的1/p的奇异性抵消掉。这个时候在编程序来算积分,就既不出现除0错误,也保证结果的精确性完全不损失。
69r<Z
但是在不同的问题中,如何具体处理掉奇点的方法是不同的,所以建议楼主去看点文章,有很多文章都讨论过不同类型的奇异点的处理方法
共
1
条评分
wudawolf
技术分
+1
有自己的观点(心得经验)+技术分,感谢回贴相助.
2009-04-23
离线
feiluo9
UID :13326
注册:
2008-06-01
登录:
2010-03-15
发帖:
34
等级:
仿真新人
4楼
发表于: 2009-04-23 15:08:00
谢谢3L,我会试试的
共
条评分
离线
厉害
将在我的首页和帖子页面用户信息处显示
UID :19595
注册:
2008-10-20
登录:
2012-05-06
发帖:
167
等级:
仿真二级
5楼
发表于: 2009-05-11 23:57:02
谢谢 3楼
共
条评分
离线
w1jg
UID :11988
注册:
2008-05-06
登录:
2013-04-19
发帖:
40
等级:
仿真新人
6楼
发表于: 2009-05-17 14:27:48
除零这类问题要从算法公式角度推导解决,不能硬算
共
条评分
离线
caocheng82
UID :10116
注册:
2008-03-28
登录:
2025-05-26
发帖:
697
等级:
积极交流六级
7楼
发表于: 2009-08-06 19:43:21
如果是奇异矩阵,那怎样求?
:#0uy1h
Ax=b中,
共
条评分
离线
cem-uestc
UID :9061
注册:
2008-03-07
登录:
2019-01-05
发帖:
2575
等级:
荣誉管理员
8楼
发表于: 2009-08-06 20:02:09
奇异值不处理,再怎么算也是错误的。
共
条评分
欢迎光临
http://www.mwtee.com/home.php?mod=space&uid=13535
离线
hessler
UID :38932
注册:
2009-08-07
登录:
2009-08-31
发帖:
39
等级:
仿真新人
9楼
发表于: 2009-08-08 00:13:29
1.楼主对于公式的理解不够;
.z&V!2zp
2.程序编写出现隐蔽的错误;
E9pKR+P
3.公式中有0/0的极限情况出现,可以用一个临界值判断一下,对分母较小的使用Hospital法则算,否则直接算
共
条评分
发帖
回复