besselh()的问题
表达式besselh(nu,K,Z),其中nu可不可以是symbolic而非数字的?我试图求和
symsum(besselh(n,2,beta*a),n,-inf,+inf)
但是提示错误
Arguments must be numeric.
那我想求这个从负无穷到正无穷的和该怎么做呢?
谢谢! 个人水平专业有限, 没使用过besselh这些函数的经验
但个人以为都已提示了, 应该就是吧! 待高人路过
若数值计算可行的话, 则负无穷及正无穷处都应该趋近零
设定数值小于某阀值试试
[ 本帖最后由 ChaChing 于 2010-4-20 01:01 编辑 ] 我想了一下,从正无穷到无穷不好算,就直接赋值,比如找个比较大的数值区间n=-1000:0.1:1000这样去尽量接近无穷。这样算出来的结果当然是个矩阵,然后用sum()求各个矩阵项的和就是最后的求和。
不知道这个思路对不对?
我现在遇到的问题是,最后求和出来的这个数据里面还有一个变量phi,比如phi=0:pi/5:2*pi,然后要以phi和最后的结果画一个图。
a=0.01;
E0=8.85e-12;U0=pi*4e-7;c=3e8;
z=a*2*pi*c*sqrt(E0*U0);%用在besselh()中
n=-10:.1:10;syms phi;%定义变量
f=j.^(-n).*exp(j.*n.*phi)./(besselh(n,2,z)); %要求和的含besselh()的方程
SUM=sum(f) %求和
phi=0:2*pi/200:2*pi;
J=1/(a*c*U0*pi^2)*SUM; %最后的结果作为y坐标轴
plot(phi,J)
结果提示错误
Conversion to double from sym is not possible.
我知道这步错误也许出在之前定义了syms phi之后,算出了SUM,无法再将phi带入到SUM中的问题。可是,如果我在计算SUM之前就定义好phi变量的话,在SUM之后,这就变成了一个数而不是一个可以画图的方程了。
那么不知道这个图要怎么画才正确?谢谢版主
[ 本帖最后由 bleakhand 于 2010-4-20 14:04 编辑 ] 做个循环连续赋值就行了:
clear;clc
a=0.01;
E0=8.85e-12;U0=pi*4e-7;c=3e8;
z=a*2*pi*c*sqrt(E0*U0);%用在besselh()中
n=-10:.1:10;
besselh(n,2,z);
phi=0:2*pi/200:2*pi;
f=zeros(length(phi),length(n));
SUM=zeros(1,length(phi));
J=zeros(1,length(phi));
for i=1:length(phi)
f(i,:)=j.^(-n).*exp(j.*n.*phi(i))./(besselh(n,2,z));
SUM(i)=sum(f(i,:));
J(i)=1/(a*c*U0*pi^2)*SUM(i);
end
plot(phi,J)
不过LZ的结果有许多虚数,应该好好设置一下参数。。 原帖由 maigicku 于 2010-4-20 15:13 发表 http://www.chinavib.com/forum/images/common/back.gif
做个循环连续赋值就行了:
不过LZ的结果有许多虚数,应该好好设置一下参数。。
万分感谢楼上!如果有空能不能讲讲为什么要这样改?谢谢!
ps, 好像去掉产生0数组的那几句命令,没有影响。
[ 本帖最后由 bleakhand 于 2010-4-21 08:43 编辑 ] 因为你的n,y,besselh()都是1x201的矩阵,运算完后,f也肯定是1X201的矩阵,做和的话就是一个数。。你的意思是每个phi值对应一个1x201的矩阵结果,所以要做一个循环。。每次只带一个phi值。。
去掉产生0数组确实没有什么影响,但这样做是给这些变量分配足够的单元,提高运算速度。。 带入之前做和确实是一个数,所以我想有phi变量应该可以直接plot画图,结果不行....
这个算法的意思就是把phi1对应的201个值相加得到对应phi1的J,然后phi2,phi3。。。都这样,最后画图?
真是谢谢啦!
[ 本帖最后由 bleakhand 于 2010-4-21 12:33 编辑 ]
页:
[1]