gigi_yl 发表于 2005-12-29 16:45

[求助]matlab编程遇到的一个问题

我在用matlab编程,遇到了一个问题. <BR>sovle_phi1(i,j,x)是我自己写的个小程序, <BR>用for i=1:3 <BR>    for j=1:3 <BR>      phi(i,j)=sovle_phi1(i,j,x); <BR>    end <BR>end <BR>调用时候,出现这样的错误:Conversion to double from sym is not possible. <BR>而如果这样sovle_phi1(1,2,x)调用,则就可以得到关于x的一个表达式,这是什么原因? <BR><BR>

happy 发表于 2005-12-29 19:46

回复:(gigi_yl)[求助]matlab编程遇到的一个问题

把你的代码贴出来

gigi_yl 发表于 2005-12-30 01:59

其中sovle_phi1(i,j,x)是我自己编的个小程序,如下: <BR>function phi=sovle_phi1(i,j,x)<BR>phi=sovle_phi_wave1(i,j,x)+sovle_phi_ave(i,x);<BR><SUB><FONT color=#e3e3e3> </FONT></SUB><BR>function phi_wave=sovle_phi_wave1(i,j,x)<BR>X=;L=60;<BR>l(j)=X(j+1)-X(j);<BR>xi(j)=(x-X(j))/l(j);<BR>H(1,j)=1-3*xi(j)^2+2*xi(j)^3;<BR>H(2,j)=l(j)*xi(j)*(1-xi(j))^2;<BR>H(3,j)=3*xi(j)^2-2*xi(j)^3;<BR>H(4,j)=l(j)*xi(j)^2*(xi(j)-1);<BR>y=sovle_y(i);<BR>theta=sovle_theta(i);<BR>phi_wave=H(1,j)*y(j)+H(2,j)*theta(j)+H(3,j)*y(j+1)+H(4,j)*theta(j+1);<BR><BR>function phi_ave=sovle_phi_ave(i,x) <BR>L=60; <BR>phi_ave=sin(i*pi*x/L); <BR><SUB><FONT color=#e3e3e3> </FONT></SUB><BR>function y=sovle_y(i) <BR>X=';L=60; <BR>y=-sin(i*pi*X/L); <BR><SUB><FONT color=#e3e3e3> </FONT></SUB><BR>function theta=sovle_theta(i) <BR>%求解未知theta <BR>a=; <BR>b=[-3*sin(i*pi/3)/20;-3*sin(2*i*pi/3)/40;3*sin(i*pi/3)/40;3*sin(2*i*pi/3)/20]; <BR>theta=a\b; <BR><BR>上面是与sovle_phi1(i,j,x)有关的几个小函数,我不会把它们组合在一个大函数里,只能是分开的!<BR>

xueyi 发表于 2005-12-30 10:56

返回一个表达式,说明你在进行符号运算,<BR>你是怎么调用的?<BR>其中x给的是什么值 ?<BR>你说的错误是不能把符号变量转化成数值型<BR>
页: [1]
查看完整版本: [求助]matlab编程遇到的一个问题