liaoliaoer 发表于 2009-1-6 21:41

求教高手,为什么老出错!非常感谢!

对三角函数的积分,为什么老出错!
程序如下:
clear
syms x p p1 p2;
p1=sin(0.04588*x)-sinh(0.04588*x)+((sin(1.875)+sinh(1.875))/(cos(1.875)+cosh(1.875)))*(cosh(0.04588*x)-cos(0.04588*x));
p2=sin(0.12146*x)-sinh(0.12146*x)+((sin(4.964)+sinh(4.964))/(cos(4.964)+cosh(4.964)))*(cosh(0.12146*x)-cos(0.12146*x));
p=double(156.02*int(p1*p1+p2*p1,'x',0,40.868));
错误提示:
??? Error using ==> reshape
To RESHAPE the number of elements must not change.
Error in ==> sym.maple at 94
      result = reshape(result,size(varargin{3}));
Error in ==> sym.int at 51
   r = reshape(maple('map','int',f(:),),size(f));
Error in ==> ouhefangchengjisuan at 5
p=double(156.02*int(p1*p1+p2*p1,'x',0,40.868));


还请大侠帮忙解答一下,非常感谢,亟盼!!

ch_j1985 发表于 2009-1-6 23:48

回复 楼主 liaoliaoer 的帖子

为何运行代码之后Matlab显示Busy?

liaoliaoer 发表于 2009-1-7 10:13

原帖由 ch_j1985 于 2009-1-6 23:48 发表 http://www.chinavib.com/forum/images/common/back.gif
为何运行代码之后Matlab显示Busy?
多等一会,就会出现我说的那个错误,不知道为什么,自己水平比较菜,没明白错误的意思,还请大虾们明示,不胜感激呀!!

huxuemin2008 发表于 2009-1-7 10:58

请大家帮我看看这个程序如何修改

function pushbutton1_Callback(hObject, eventdata, handles)
%绘制高程曲线
global str
axes(handles.axes1)
width=1200:400:4000;%x
depth=1200:400:3600;%y
height=str;
wi=1200:50:4000;
di=1200:50:3600;
di=di';
zcubic=interp2(width,depth,height,wi,di,'cubic');
%在二维上标注等高线
=contour(wi,di,zcubic);
clabel(C,H)
xlabel('Width')
ylabel('Depth')
title('在二维上标注等高线')
function pushbutton5_Callback(hObject, eventdata, handles)
%选择图片路径
global str
=uigetfile(['*.txt';],'读取数据');
str=imread(str);
handles.data=data;

liaoliaoer 发表于 2009-1-7 11:12

原帖由 huxuemin2008 于 2009-1-7 10:58 发表 http://www.chinavib.com/forum/images/common/back.gif
function pushbutton1_Callback(hObject, eventdata, handles)
%绘制高程曲线
global str
axes(handles.axes1)
width=1200:400:4000;%x
depth=1200:400:3600;%y
height=str;
wi=1200:50:4000;
di=1200:50:3 ...



我说这位兄才,你要是能解决完我的问题再提问也说得过去:@L

liaoliaoer 发表于 2009-1-7 15:57

我试算了一下,6.5版本的就是一直是busy,7.0版本以上就是等一两分钟就出现上面的错误,不知为什么,简单的式子也能算的。

ch_j1985 发表于 2009-1-7 19:47

回复 6楼 liaoliaoer 的帖子

Matlab R2008a运行了5分钟,没有反应!
double的用法好像不是这样吧

liaoliaoer 发表于 2009-1-7 19:53

原帖由 ch_j1985 于 2009-1-7 19:47 发表 http://www.chinavib.com/forum/images/common/back.gif
Matlab R2008a运行了5分钟,没有反应!
double的用法好像不是这样吧
非常感谢你的关注与帮助!
我是7.0的,可以运行,也可以把double去掉,我这还是出现这个问题!

liaoliaoer 发表于 2009-1-8 12:36

撇开我提的问题,如果要对156.02*p计算式在(0,40.868)上积分,该如何进行?
p1=sin(0.04588*x)-sinh(0.04588*x)+((sin(1.875)+sinh(1.875))/(cos(1.875)+cosh(1.875)))*(cosh(0.04588*x)-cos(0.04588*x));
p2=sin(0.12146*x)-sinh(0.12146*x)+((sin(4.964)+sinh(4.964))/(cos(4.964)+cosh(4.964)))*(cosh(0.12146*x)-cos(0.12146*x));
p=p1*p1+p2*p1

谢谢关注与解决,感谢呀………………祝你牛年发大财呀…………

liaoliaoer 发表于 2009-1-8 12:39

哇塞,我在2008上算出来了,难道是版本的问题,暗自窃喜………………:lol
谢谢唠嗑主任(这个名字好像不适合当领导,有点不务正业:lol )关注我的问题!

ch_j1985 发表于 2009-1-8 23:32

回复 10楼 liaoliaoer 的帖子

代码还是原来的吗?不是的话,贴出来和大家分享一下

liaoliaoer 发表于 2009-1-18 09:07

对,还是原来的。

friendchj 发表于 2009-1-18 09:28

回复 楼主 liaoliaoer 的帖子

对源程序做了一些处理,变sinh/cosh为指数形式,发现运行速度快了很多,和想的一样,呵呵。没有出现问题,我用的是2008a版本
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
syms x
a1=(sin(1.875)+sinh(1.875))/(cos(1.875)+cosh(1.875));
a2=(sin(4.964)+sinh(4.964))/(cos(4.964)+cosh(4.964));
p1=sin(0.04588*x)-a1*cos(0.04588*x)+0.5*(a1-1)*exp(0.04588*x)+0.5*(a1+1)*exp(-0.04588*x);
p2=sin(0.12146*x)-a2*cos(0.12146*x)+0.5*(a2-1)*exp(0.12146*x)+0.5*(a2+1)*exp(-0.12146*x);
p=double(156.02*int(p1*p1+p2*p1,'x',0,40.868));
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> p

p =

9.9599e+003
页: [1]
查看完整版本: 求教高手,为什么老出错!非常感谢!