小弟在求一个比较复杂的非线性方程组时出现错误,方程组中包含二重积分,且未知数在积分的上下限之中,希望大家帮忙看看,不甚感激我的代码如下
function F=xiepo(a)
i1=@(y1)8*(1-(0.2194+0.02)*(y1+a(3)-0.02)/3)*2727.98;
i2=@(y2)8*(1-(0.2194+0.02)*(y2+a(3)-0.02)/3)*2814.58;
jx0=@(x1,y1)(-y1)*(0.5+0.02-a(3)-y1)/(0.112*a(1));
jy0=@(x1,y1)(sqrt(1-a(3)^2)+0.32+0.005+x1-0.112*a(1))*(0.5+0.02-a(3)-y1)/(0.112*a(1));
j0=@(x1,y1)sqrt(jx0^2+jy0^2);
jxi=@(x2,y2)(-y2)*(0.5+0.02-a(3)-y2)/(0.112*a(2));
jyi=@(x2,y2)(sqrt(1-a(3)^2)-0.32+0.005+x2-0.112*a(2))*(0.5+0.02-a(3)-y2)/(0.112*a(2));
ji=@(x2,y2)sqrt(jxi^2+jyi^2);
sini1=@(x1,y1)(sqrt(1-a(3)^2)+0.32+0.005+x(1)-0.112*a(1))/sqrt((sqrt(1-a(3)^2)+0.32+0.005+x1-0.112*a(1))^2+y1^2);
sini2=@(x2,y2)(sqrt(1-a(3)^2)-0.32+0.005+x(2)-0.112*a(2))/sqrt((sqrt(1-a(3)^2)-0.32+0.005+x2-0.112*a(2))^2+y2^2);
cosi1=@(x1,y1)-y(1)/sqrt((sqrt(1-a(3)^2)+0.32+0.005+x1-0.112*a(1))^2+y1^2);
cosi2=@(x2,y2)-y2/sqrt((sqrt(1-a(3)^2)-0.32+0.005+x2-0.112*a(2))^2+y2^2);
fx0=@(x1,y1)(4.15*1000+i1*0.231)*(1-exp^(-j0/0.025))*cosi1;
Fx0=integral2(fx0,-0.5+0.02-a(3),0.52-a(3),-0.125/2,0.125/2);
fxi=@(x2,y2)(4.15*1000+i2*0.231)*(1-exp^(-ji/0.025))*cosi2;
Fxi=integral2(fxi,-0.5+0.02-a(3),0.52-a(3),-0.125/2,0.125/2);
fy0=@(x1,y1)(4.15*1000+i1*0.231)*(1-exp^(-j0/0.025))*sini1;
Fy0=integral2(fy0,-0.5+0.02-a(3),0.52-a(3),-0.125/2,0.125/2);
fyi=@(x2,y2)(4.15*1000+i2*0.231)*(1-exp^(-ji/0.025))*sini2;
Fyi=integral2(fyi,-0.5+0.02-a(3),0.52-a(3),-0.125/2,0.125/2);
Mto=Fy0*(0.32);
Mti=Fyi*(0.32);
Mro=Fx0*0.32;
Mri=Fxi*0.32;
F(1)=Fx0+Fxi;
F(2)=Fy0-Fyi-0.68*2727.98-0.68*2814.58-6400*0.5;
F(3)=Mto+Mti+0.5*(0.68*2814.58-0.68*2727.98)*0.64+6400*0.005*0.5-Mro-Mri;
我用fsolve求解
[sol,fval]=fsolve(@xiepo,[0.5,0.5,0.5])
出现错误如下未定义与 'function_handle' 类型的输入参数相对应的函数 'mtimes'。
出错 xiepo>@(x1,y1)(4.15*1000+i1*0.231)*(1-exp^(-j0/0.025))*cosi1
(line 14)
fx0=@(x1,y1)(4.15*1000+i1*0.231)*(1-exp^(-j0/0.025))*cosi1;
出错 integral2Calc>integral2t/tensor (line 228)
Z = FUN(X,Y); NFE = NFE + 1;
出错 integral2Calc>integral2t (line 55)
[Qsub,esub] = tensor(thetaL,thetaR,phiB,phiT);
出错 integral2Calc (line 9)
[q,errbnd] =
integral2t(fun,xmin,xmax,ymin,ymax,optionstruct);
出错 integral2 (line 106)
Q = integral2Calc(fun,xmin,xmax,yminfun,ymaxfun,opstruct);
出错 xiepo (line 15)
Fx0=integral2(fx0,-0.5+0.02-a(3),0.52-a(3),-0.125/2,0.125/2);
出错 fsolve (line 217)
fuser = feval(funfcn{3},x,varargin{:});
原因:
Failure in initial user-supplied objective function
evaluation. FSOLVE cannot continue.

 채택된 답변

0 개 추천

a=[0.5 0.5 0.5];
i1=@(y1)8*(1-(0.2194+0.02).*(y1+a(3)-0.02)/3)*2727.98;
i2=@(y2)8*(1-(0.2194+0.02).*(y2+a(3)-0.02)/3)*2814.58;
jx0=@(y1)(-y1).*(0.5+0.02-a(3)-y1)/(0.112*a(1));
jy0=@(x1,y1)(sqrt(1-a(3)^2)+0.32+0.005+x1-0.112*a(1)).*(0.5+0.02-a(3)-y1)/(0.112*a(1));
j0=@(x1,y1)sqrt(jx0(y1).^2+jy0(x1,y1).^2);
jxi=@(x2,y2)(-y2).*(0.5+0.02-a(3)-y2)/(0.112*a(2));
jyi=@(x2,y2)(sqrt(1-a(3)^2)-0.32+0.005+x2-0.112*a(2)).*(0.5+0.02-a(3)-y2)/(0.112*a(2));
ji=@(x2,y2)sqrt(jxi(x2,y2).^2+jyi(x2,y2).^2);
sini1=@(x1,y1)(sqrt(1-a(3)^2)+0.32+0.005+x1-0.112*a(1))./sqrt((sqrt(1-a(3)^2)+0.32+0.005+x1-0.112.*a(1)).^2+y1.^2);
sini2=@(x2,y2)(sqrt(1-a(3)^2)-0.32+0.005+x2-0.112*a(2))./sqrt((sqrt(1-a(3)^2)-0.32+0.005+x2-0.112.*a(2)).^2+y2.^2);
cosi1=@(x1,y1)-y1./sqrt((sqrt(1-a(3)^2)+0.32+0.005+x1-0.112*a(1)).^2+y1.^2);
cosi2=@(x2,y2)-y2./sqrt((sqrt(1-a(3)^2)-0.32+0.005+x2-0.112*a(2)).^2+y2.^2);
fx0=@(x1,y1)(4.15*1000+i1(y1)*0.231).*(1-exp(-j0(x1,y1)/0.025)).*cosi1(x1,y1);
Fx0=integral2(fx0,-0.5+0.02-a(3),0.52-a(3),-0.125/2,0.125/2);
fxi=@(x2,y2)(4.15*1000+i2(y2)*0.231).*(1-exp(-ji(x2,y2)/0.025)).*cosi2(x2,y2);
Fxi=integral2(fxi,-0.5+0.02-a(3),0.52-a(3),-0.125/2,0.125/2);
fy0=@(x1,y1)(4.15*1000+i1(y1)*0.231).*(1-exp(-j0(x1,y1)/0.025)).*sini1(x1,y1);
Fy0=integral2(fy0,-0.5+0.02-a(3),0.52-a(3),-0.125/2,0.125/2);
fyi=@(x2,y2)(4.15*1000+i2(y2)*0.231).*(1-exp(-ji(x2,y2)/0.025)).*sini2(x2,y2);
Fyi=integral2(fyi,-0.5+0.02-a(3),0.52-a(3),-0.125/2,0.125/2);
Mto=Fy0*(0.32);
Mti=Fyi*(0.32);
Mro=Fx0*0.32;
Mri=Fxi*0.32;
F(1)=Fx0+Fxi;
F(2)=Fy0-Fyi-0.68*2727.98-0.68*2814.58-6400*0.5;
F(3)=Mto+Mti+0.5*(0.68*2814.58-0.68*2727.98)*0.64+6400*0.005*0.5-Mro-Mri;
刚刚代码没提交上去

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Statistics and Machine Learning Toolbox에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!