声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1169|回复: 0

[综合讨论] 符号矩阵 数值积分 函数句柄

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

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

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

x
高了好几天,真的是到了瓶颈了,所以把我写的些码拿出来大家一起讨论讨论,互相学习,不多说了看看这段码,
......
        fstr=Kstr(zeile,spalte); Kstr是一个符号矩阵,
         fstr = char(fstr);         变为字符
        fstr=strrep(fstr,'*','.*');  变点×
        fstr=strrep(fstr,'/','./');  。。。
        fstr=strrep(fstr,'^','.^');  。。。。
        %myfhandle = @(phi)myfunchandle(fstr,phi);
        myfhandle = @(phi)fstr;
        %myfhandle=inline(char(fstr));
        %myfhandle=myfunchandle(fstr,phi)
        %elestr=str2func(char(fstr));
        %myfhandle=matlabFunction(fstr,'vars',[phi])
        q1=quad(@myhandle,0,phi_limit,0.1);
        K(zeile,spalte)=q1;

在这里我简单吧那个fstr,就是Kstr中的一项给大家,以便讨论,不过很长
fstr =
(2*3100000000*sin(conj(2)*conj(phi))*log(6/5)*sin(2*phi))/25+(2*6700000000*2*cos(conj(2)*conj(phi))*log(5/6)*cos(2*phi)*conj(2))/(25*((6700000000*0.04^2)/2780000000+(890000000*0.17^2)/6700000000+(890000000*0.08^2)/2780000000+(890000000*0.04*0.17*0.08)/2780000000+(890000000^2*0.04*0.17*0.08)/2780000000^2-1))+(2*6700000000^2*2780000000*890000000*2*0.08^2*cos(conj(2)*conj(phi))*log(6/5)*cos(2*phi)*conj(2))/(25*(6700000000*(2780000000*890000000*0.08^2-2780000000^2+0.04*0.17*2780000000*890000000*0.08+0.04*0.17*890000000^2*0.08)+6700000000^2*2780000000*0.04^2+2780000000^2*890000000*0.17^2))



ok,问题就是,我用了几种不同的方法得到函数句柄,进行积分,最后却得到两种不同结果,数值差很大,用inline和matlabfunction得到一样的结果,而且结果貌似是对的,但是速度慢,如果用@隐函数和内敛函数就是另外一个,他两是一样的,跟另外一个答案差了,1e8数量级,但是速度很快,我搞不清楚的是为什么会在相同的句柄的情况下会积分出不同的结果,希望大家一起讨论,交流

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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