声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1192|回复: 2

[混合编程] 一个问题两种编程方法,为什么结果不一样呢

[复制链接]
发表于 2009-5-22 20:44 | 显示全部楼层 |阅读模式

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

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

x
程序一:syms x
format long e
for k=1:6;
for l=1:6;
ak=(k-1/2)*pi;
al=(l-1/2)*pi;
xl=(-sinh(al)+sin(al))/(cosh(al)+cos(al));
xk=(-sinh(ak)+sin(ak))/(cosh(ak)+cos(ak));
aa=(1-x)*sinh(ak*x)*sinh(al*x);
bb=(1-x)*sin(al*x)*sinh(ak*x);
cc=(1-x)*xl*sinh(ak*x)*cosh(al*x);
dd=-(1-x)*xl*sinh(ak*x)*cos(al*x);
ee=(1-x)*sinh(al*x)*sin(ak*x);
ff=(1-x)*sin(ak*x)*sin(al*x);
gg=xl*(1-x)*sin(ak*x)*cosh(al*x);
hh=-xl*(1-x)*sin(ak*x)*cos(al*x);
ii=xk*(1-x)*sinh(al*x)*cosh(ak*x);
jj=xk*(1-x)*sin(al*x)*cosh(ak*x);
kk=xl*xk*(1-x)*cosh(al*x)*cosh(ak*x);
ll=-xl*xk*(1-x)*cos(al*x)*cosh(ak*x);
mm=-xk*(1-x)*sinh(al*x)*cos(ak*x);
nn=-xk*(1-x)*sin(al*x)*cos(ak*x);
oo=-xl*xk*(1-x)*cosh(al*x)*cos(ak*x);
pp=xl*xk*(1-x)*cos(al*x)*cos(ak*x);
qq=ak*al*(aa+bb+cc+dd+ee+ff+gg+hh+ii+jj+kk+ll+mm+nn+oo+pp);
ss(k,l)=quadl(inline(qq),0,1);
aa1=cosh(ak*x)*cosh(al*x);
bb1=cosh(ak*x)*cos(al*x);
cc1=xl*cosh(ak*x)*sinh(al*x);
dd1=xl*cosh(ak*x)*sin(al*x);
ee1=-cos(ak*x)*cosh(al*x);
ff1=-cos(ak*x)*cos(al*x);
gg1=-xl*cos(ak*x)*sinh(al*x);
hh1=-xl*cos(ak*x)*sin(al*x);
ii1=xk*sinh(ak*x)*cosh(al*x);
jj1=xk*sinh(ak*x)*cos(al*x);
kk1=xk*xl*sinh(ak*x)*sinh(al*x);
ll1=xk*xl*sinh(ak*x)*sin(al*x);
mm1=-xk*sin(ak*x)*cosh(al*x);
nn1=-xk*sin(ak*x)*cos(al*x);
oo1=-xk*xl*sin(ak*x)*sinh(al*x);
pp1=-xk*xl*sin(ak*x)*sin(al*x);
qq1=al*al*(aa1+bb1+cc1+dd1+ee1+gg1+hh1+ii1+jj1+kk1+ll1+mm1+nn1+oo1+pp1);
ss1(k,l)=quadl(inline(qq1),0,1);
ww(k,l)=-4*ss(k,l)-14*ss1(k,l);
s(k,l)=ak^4;
if k==l;
p(k,l)=s(k,l);
else
p(k,l)=0;
end
rr(k,l)=ww(k,l)+p(k,l);
end
end
disp(rr)
d=eig(rr)
c=sqrt(sqrt(d))

运行结果:Columns 1 through 5

-3.826506610578764e+001 1.336826372499305e+002 -3.283883447797543e+002 4.679795253210178e+002 -6.451913910944917e+002
-2.039776406078337e+001 4.918166119148536e+002 1.234341444335428e+002 -4.153743839103046e+002 4.877218118342345e+002
-1.296824695495351e+001 -5.242414244144165e+001 3.915883814188706e+003 8.293010103946119e+001 -4.804928774066645e+002
-8.794412289361510e+000 -6.361538034450521e+001 -9.299890232673261e+001 1.495016487452171e+004 3.355889357573842e+001
-7.063587338894296e+000 -3.993798845676370e+001 -1.286347347776099e+002 -1.423705727738096e+002 4.059581780127689e+004
-5.656973820520911e+000 -4.332065096263072e+001 -6.838513310512552e+001 -1.973180059164957e+002 -2.055911666111458e+002

Column 6

7.938246964857071e+002
-7.468812579744941e+002
4.594015674806003e+002
-5.491782604859986e+002
-2.977448599348290e+001
9.036180052932144e+004


d =

9.036330379552041e+004
4.059682710852583e+004
1.494976719545028e+004
-3.408937453706960e+001
4.869678975944947e+002
3.914441942563935e+003


c =

1.733796114002226e+001
1.419459556466023e+001
1.105754224925543e+001
1.708597475766710e+000 +1.708597475766710e+000i
4.697589714875252e+000
7.909835726311629e+000
程序二:syms x;
for k=1:6;
for l=1:6;
ak=(k-1/2)*pi; al=(l-1/2)*pi; num2str(ak);
xl=(-sinh(al)+sin(al))/(cosh(al)+cos(al));
xk=(-sinh(ak)+sin(ak))/(cosh(ak)+cos(ak));
num2str(xl);
num2str(xk);
aa=strcat('(sinh((',num2str(ak),')*x).*(1-x).*sinh((',num2str(al),')*x))');
bb=strcat('(sin((',num2str(al),')*x).*(1-x).*sinh((',num2str(ak),')*x))');
cc=strcat(' (',num2str(xl),').*(1-x).*(sinh((',num2str(ak),')*x).*cosh((',num2str(al),')*x))');
dd=strcat(' -(',num2str(xl),').*(1-x).*(sinh((',num2str(ak),')*x).*cos((',num2str(al),')*x))');
ee=strcat('(1-x).*(sinh((',num2str(al),')*x).*sin((',num2str(ak),')*x))');
ff=strcat('(1-x).*(sin((',num2str(al),')*x).*sin((',num2str(ak),')*x))');
gg=strcat(' (',num2str(xl),').*(1-x).*(sin((',num2str(ak),')*x).*cosh((',num2str(al),')*x))');
hh=strcat(' -(',num2str(xl),').*(1-x).*(sin((',num2str(ak),')*x).*cos((',num2str(al),')*x))');
ii=strcat(' (',num2str(xk),').*(1-x).*(sinh((',num2str(al),')*x).*cosh((',num2str(ak),')*x))');
jj=strcat(' (',num2str(xk),').*(1-x).*(sin((',num2str(al),')*x).*cosh((',num2str(ak),')*x))');
kk=strcat(' (',num2str(xl),').*(',num2str(xk),').*(1-x).*(cosh((',num2str(ak),')*x).*cosh((',num2str(al),')*x))');
ll=strcat(' -(',num2str(xl),').*(',num2str(xk),').*(1-x).*(cosh((',num2str(ak),')*x).*cos((',num2str(al),')*x))');
mm=strcat(' -(',num2str(xk),').*(1-x).*(sinh((',num2str(al),')*x).*cos((',num2str(ak),')*x))');
nn=strcat(' -(',num2str(xk),').*(1-x).*(sin((',num2str(al),')*x).*cos((',num2str(ak),')*x))');
oo=strcat(' -(',num2str(xl),').*(',num2str(xk),').*(1-x).*(cosh((',num2str(al),')*x).*cos((',num2str(ak),')*x))');
pp=strcat(' (',num2str(xl),').*(',num2str(xk),').*(1-x).*(cos((',num2str(ak),')*x).*cos((',num2str(al),')*x))');
qq=strcat('(',num2str(ak),').*(',num2str(al),').*(',aa,'+',bb,'+',cc,'+',dd,'+',ee,'+',ff,'+',gg,'+',hh,'+',ii,'+',jj,'+',kk,'+',ll,'+',mm,'+',nn,'+',oo,'+',pp,')');
ss(k,l)=quadl(inline(qq),0,1);
aa1=strcat('(cosh((',num2str(ak),')*x).*cosh((',num2str(al),')*x))');
bb1=strcat('(cosh((',num2str(ak),')*x).*cos((',num2str(al),')*x))');
cc1=strcat(' (',num2str(xl),').*(sinh((',num2str(al),')*x).*cosh((',num2str(ak),')*x))');
dd1=strcat(' (',num2str(xl),').*(cosh((',num2str(ak),')*x).*sin((',num2str(al),')*x))');
ee1=strcat('-(cos((',num2str(ak),')*x).*cosh((',num2str(al),')*x))');
ff1=strcat('-(cos((',num2str(al),')*x).*cos((',num2str(ak),')*x))');
gg1=strcat(' -(',num2str(xl),').*(cos((',num2str(ak),')*x).*sinh((',num2str(al),')*x))');
hh1=strcat(' -(',num2str(xl),').*(cos((',num2str(ak),')*x).*sin((',num2str(al),')*x))');
ii1=strcat(' (',num2str(xk),').*(sinh((',num2str(ak),')*x).*cosh((',num2str(al),')*x))');
jj1=strcat(' (',num2str(xk),').*(sinh((',num2str(ak),')*x).*cos((',num2str(al),')*x))');
kk1=strcat(' (',num2str(xl),').*(',num2str(xk),').*(sinh((',num2str(ak),')*x).*sinh((',num2str(al),')*x))');
ll1=strcat(' (',num2str(xl),').*(',num2str(xk),').*(sinh((',num2str(ak),')*x).*sin((',num2str(al),')*x))');
mm1=strcat('-(',num2str(xk),').*(sin((',num2str(ak),')*x).*cosh((',num2str(al),')*x))');
nn1=strcat(' -(',num2str(xk),').*(sin((',num2str(ak),')*x).*cos((',num2str(al),')*x))');
oo1=strcat('-(',num2str(xl),').*(',num2str(xk),').*(sinh((',num2str(al),')*x).*sin((',num2str(ak),')*x))');
pp1=strcat(' -(',num2str(xl),').*(',num2str(xk),').*(sin((',num2str(ak),')*x).*sin((',num2str(al),')*x))');
qq1=strcat('(',num2str(ak),').*(',num2str(al),').*(',aa1,'+',bb1,'+',cc1,'+',dd1,'+',ee1,'+',ff1,'+',gg1,'+',hh1,'+',ii1,'+',jj1,'+',kk1,'+',ll1,'+',mm1,'+',nn1,'+',oo1,'+',pp1,')');
ss1(k,l)=quadl(inline(qq1),0,1);
ww(k,l)=-4*ss(k,l)-14*ss1(k,l);
s(k,l)=ak^4;
if k==l;
p(k,l)=s(k,l);
else
p(k,l)=0;
end
rr(k,l)=ww(k,l)+p(k,l);
end
end
disp(rr);
d=eig(rr)
c=sqrt(sqrt(d))
运行结果:1.0e+004 *

-0.0021 0.0046 -0.0063 0.0034 -0.0033 0.0037
-0.0067 0.0647 0.0071 -0.0089 0.0080 -0.0096
-0.0078 -0.0082 0.4347 -0.0039 -0.0143 0.0093
-0.0097 -0.0153 -0.0164 1.5878 -0.0125 -0.0156
-0.0063 -0.0154 -0.0217 -0.0210 4.2099 -0.0206
-0.0100 -0.0186 -0.0206 -0.0316 -0.0292 9.2654


d =

1.0e+004 *

9.2656
4.2099
1.5878
-0.0017
0.0644
0.4346


c =

17.4469
14.3241
11.2253
1.4446 + 1.4446i
5.0367
8.1192
检查不出两个程序方法有什么错误,一样的问题,一样的参数,为什么结果不一样呢?求高手指教,积分后的结果不一样,即产生的矩阵对应位置上数据有差异,本来应该是相等的,为什么会出现差异呢? 具体的所求问题见附件,谢谢,这里好像粘贴不了公式。

                               
登录/注册后可看大图
   

                               
登录/注册后可看大图


[ 本帖最后由 ncc198611 于 2009-5-22 22:20 编辑 ]

要编程的问题.doc

17 KB, 下载次数: 0

回复
分享到:

使用道具 举报

发表于 2009-5-22 22:07 | 显示全部楼层
想想这若是别人的帖, LZ会看吗?
修饰下并说明那差异
 楼主| 发表于 2009-5-22 22:24 | 显示全部楼层

回复 沙发 ChaChing 的帖子

谢谢你的意见
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-13 00:22 , Processed in 0.061801 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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