matlab fsolve 函数错误问题,搞两天了,望得高手指点啊!先谢谢啦 5

???Conversiontodoublefromsymisnotpossible.Errorin==>sfdnlsat95J(:,k)=(v-valx)/alpha(k... ??? Conversion to double from sym is not possible.

Error in ==> sfdnls at 95
J(:,k) = (v-valx)/alpha(k);

Error in ==> optim\private\trustnleqn at 108
[JACfindiff,numFDfevals] = sfdnls(x,Fvec,JACfindiff,group,[], ...

Error in ==> fsolve at 295
[x,FVAL,JACOB,EXITFLAG,OUTPUT,msg]=...

Error in ==> nihe at 8
[p,feval]=fsolve(@myfun,p0)
主程序如下
syms a b c d
p=[a;b;c;d];
p0=[0;31.25/78364;78364;500]
[p,feval]=fsolve(@myfun,p0)
myfun函数文件如下
function F=myfun(a,b,c,d)
clc
clear
syms a d b c X
Y=(a-d)/(1+(X/c)^b)+d;
Y1=diff(Y,X);
Y2=diff(Y1,X);
value0=subs(Y,X,1);%1点展开,原函数处
value1=subs(Y1,X,1);%一次求导
value2=subs(Y2,X,1);%二次求导
Ytailor=value0+value1*(X-1)+(X-1)^2*value2/2; %泰勒展开式
x=[1330 2651 4985 11492 29455 78364 204827 496204 1018615 1638484];
y=[0 1.95 3.9 7.8 15.6 31.25 62.5 125 250 500];
for i=1:1:10
value=subs(Ytailor,X,x(i));
W(i)=(y(i)-value)^2;
end
HE=sum(W);
pretty(simplify(HE));
latex(HE);
Pa=diff(HE,a);
Pb=diff(HE,b);
Pc=diff(HE,c);
Pd=diff(HE,d);
Pas=Collect(simple(Pa));
Pbs=Collect(simple(Pb));
Pcs=Collect(simple(Pc));
Pds=Collect(simple(Pd));
F=[subs(Pas);subs(Pbs);subs(Pcs);subs(Pds)]
搞了两天了,还是弄不出来,希望得到高手指点一二,谢谢!
展开
 我来答
fisher_man1990
2012-05-09 · TA获得超过1231个赞
知道小有建树答主
回答量:217
采纳率:100%
帮助的人:210万
展开全部
Conversion to double from sym is not possible.
这句话的意思是不能把符号型变量转换成double,肯定是你在设置参数变量时,误把符号,当做数值变量了,才出现了如此的错误。

可以看出你程序里的a b c d
即充当了sym 又充当了 double 型,自己改一下吧
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式