Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 2008-03-27
年龄: 42
帖子: 3
声望力: 0 ![]() |
![]()
在下面的程序中,第八行通过round或fix语句进行取整,但是发现在计算后,所得结果却并没有取整,减一个同大小的数字后也不是0,而是一个极小的数字.
clear %1 clc p(1, ![]() p(2, ![]() L=11.4; %5 l=0.57; for j=1:length(p); qoele=round(p(j,1)/l)+1 %8; b=qoele*l-p(j,1) a=l-(qoele*l-p(j,1)) end 运行结果为: qoele = 13 b = 0.569999999999999 a = 5.55111512312578e-016 qoele = 9 b = 0.57 a = -3.33066907387547e-016 其实这个程序用手算结果进行比较很明显的可以看出不是显示倍数的问题,我也用format等显示格式的函数进行了设置,但是还是找不到问题的所在.最后只能怀疑是round函数的问题. 我也用过fix函数取整,但是同样的问题还是存在. |
![]() |
![]() |
![]() |
#2 |
高级会员
注册日期: 2007-07-26
年龄: 40
帖子: 268
声望力: 24 ![]() |
![]()
我这里提几个问题:
1. 你这个程序的目的是什么?我看不懂…… 2. 程序中的L有什么用? 3. for循环中绕来绕去,变量a,b有什么意义? 4. 程序中所用的p矩阵中的值仅仅是第一列的数值,p矩阵中第二列的数值作什么用? 5. 对于第八行取整,原本你p矩阵的第一列中的都是小数,但是得到的qoele的值都是整数,怎么说没有取整? |
![]() |
![]() |
![]() |
#3 |
初级会员
注册日期: 2008-03-27
年龄: 42
帖子: 3
声望力: 0 ![]() |
![]()
1、程序是我的一个有限元程序中的一部分,具体干什么用的与这个问题没有关系
2、程序的意思大概是在长度为L的线上,作用有两个集中力P(第一列为位置,第二列为大小)。我将其按每段长为l 划分单元,要确定每个力所在的单元号,a和b分别为其与左右两个节点间的距离。 3、经过取整后结果是整数没错,但是他后面还带了一个非常的小数,所以说他的取整并没有完全达到取整结果。 肯请各位多帮助,这到底是怎么回事。运行一下应该能看到结果 |
![]() |
![]() |
![]() |
主题工具 | |
显示模式 | |
|
|
![]() |
||||
主题 | 主题作者 | 版面 | 回复 | 最后发表 |
[求助]求matlab优化工具箱 | endless | MATLAB论坛 | 1 | 2008-11-10 15:28 |
求助sinc(t)信号的频谱图的程序 | ying311 | MATLAB论坛 | 1 | 2008-05-30 09:24 |
求CDMA通信系统的仿真程序 | na2008 | MATLAB论坛 | 0 | 2008-05-05 19:31 |
[求助]plot()函数的周期怎么算? | yinxuan2348 | MATLAB论坛 | 2 | 2008-04-13 10:18 |
【求助】关于动态控件的一个小问题~ | daidaishou | MATLAB论坛 | 0 | 2007-09-03 11:05 |