2017-11-27 1 views
0

4 개의 미지수로 구성된 4 방정식의 시스템을 풀려고합니다. 그리고 vpasolve에서 얻은 수치 결과가 마음에 들지 않으므로 fsolve에 대한 방대한 문서의 일부를 읽었습니다.MATLAB : 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. 

시스템은 다음과 같습니다 : 추정치를 들어

나는 다음과 같은 한 fsolve하여 시스템 '직장'을 만들기 위해
(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)) 

:

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)) 

I을 그 다음 쓴다

그리고 그와 903,210, 나는 내가 다음과 같은 오류 얻을

[x, fval, exitflag] = fsolve(r, [1e-7,1e-5,0.1,10]) 

썼다 :

Error using @(a,b,g,D)[F1(a,b,g,D);F2(a,b,g,D);F3(a,b,g,D);F4(a,b,g,D)] Not enough input arguments.

Error in fsolve (line 219) fuser = feval(funfcn{3},x,varargin{:});

Caused by: Failure in initial user-supplied objective function evaluation. FSOLVE cannot continue.

내가 다음 함수를 선언하는 다양한 방법을 시도,하지만 그들 모두는 결국 같은 결과 오류 또는 기타 오류가 발생하지만 잘못된 형식이 원인 일 수 있습니다.

내가 뭘 잘못하고 있는지 모르겠다.

답변

0

당신은 구별해야한다 :

  • 4 개 요소 (= 무엇 fsolve 예상하는) 한 요소를 포함
  • 사 인수를 포함하는 벡터 (= 당신이 제공하는 무엇을)

가장 쉬운 솔루션은 다음과 같이 벡터를 확장하는 것입니다 :

[x, fval, exitflag] = fsolve(@(x) r(x(1), x(2), x(3), x(4)), [1e-7,1e-5,0.1,10]) 
+0

대단히 고마워요! 이것은 이제 많은 의미가 있습니다. –

관련 문제