我正在尝试用4个未知数解决以下4个方程组,我不喜欢从vpasolve得到的数值结果,所以我读了fsolve的大量文档的一部分。
我有以下4个方程的系统,其中的术语是:T1,T2,T3,E1,E2,E3,S1,S2,S3,S4 are known
和术语a,b,g,D are unknowns
。
估计:
T1, T2 and T3 are 303, 323, 343
E1, E2 and E3 are 5e+06, 10e+06, 20e+06
S1, S2, S3 and S4 are 1.52e-06 ; 3.36e-06 ; 6.62e-07 ; 1.38e-06
Estimate values for the unknowns (a;b;g;D) should be around (+-1e-7;+-1e-5;+-0.1;10), but not necessarily.
系统是:
(a*T1+b)*E1 = asinh( S1/(D*(E1)^g) )
(a*T2+b)*E3 = asinh( S2/(D*(E3)^g) )
(a*T3+b)*E2 = asinh( S3/(D*(E2)^g) )
(a*T3+b)*E3 = asinh( S4/(D*(E3)^g) )
为了使系统"工作"用fsolve我做了以下事情:
F1 = @(a,b,g,D) ( asinh( 1.52e-06/(D*(5*1e06)^g) )-(a*303+b)*(5*1e06) )
F2 = @(a,b,g,D) ( asinh( 3.36e-06/(D*(20*1e06)^g) )-(a*323+b)*(20*1e06) )
F3 = @(a,b,g,D) ( asinh( 6.62e-07/(D*(10*1e06)^g) )-(a*343+b)*(10*1e06) )
F4 = @(a,b,g,D) ( asinh( 1.38e-06/(D*(20*1e06)^g) )-(a*343+b)*(20*1e06) )
然后我写了
r = @(a,b,g,D) [ F1(a,b,g,D) ; F2(a,b,g,D) ; F3(a,b,g,D) ; F4(a,b,g,D) ]
然后,我写了
[x, fval, exitflag] = fsolve(r, [1e-7,1e-5,0.1,10])
我收到以下错误:
使用时出错 @(A,B,G,d)[F1(A,B,G,d); F2(A,B,G,d); F3(A,B,G,d); F4(A,B, g,D)]不够 输入参数。
fsolve出错(第219行) fuser = feval(funfcn {3},x,varargin {:});
引起: 初始用户提供的目标函数评估失败。 FSOLVE无法继续。
然后我尝试了各种其他方式来声明这些函数,但是所有这些方法最终都会导致相同的错误 - 或其他错误,但可能是由于格式错误。
我不知道自己做错了什么。