2011-06-15 5 views
0

1 m 파일MATLAB 문제

clear pH Fb 
pH = 5:0.1:9; 
for i = 1:length(pH) 
    Fb(i) = pH2Fb(pH(i)); 
end 
plot(Fb,pH) 

2 m 파일 여기

function Fb=pH2Fb(pH) 
Fb=fsolve(@fun1,1,[],pH); 

function f=fun1(Fb,pH) 

Fa = 2.9; %ml/s 
Ca = 3e-3; %mol/ml 
Cb = 5e-5; %mol/ml 
Ca1 = -3e-3; %mol/ml 
pk1 = 1.27; 
pk2 = 4.266;  
Xa = (Fa*Ca+Fb*Ca1)/(Fa+Fb); 
Xb = (Fb*Cb)/(Fa+Fb); 
f= (Xa + 10^(pH-14)-10^(-pH)+ Xb*(1+2*10^(pH-pk2))/(1+10^(pk1-pH)+10^(pH-pk2)))*1e19; 

는 질문 : 그것은 위의 식으로 무엇을 의미하는지 Fb=fsolve(@fun1,1,[ ],pH); 에 대한

1. 을 ?? 왜 "function f=fun1(Fb,pH)" 한편 기능 "fun1은"이 해결되고되기 전에 호출됩니다

"Fb=fsolve(@fun1,1,[ ],pH);" 후 적혀 2 m-파일

2.

, ?? 지금까지 를 내가 알고, MATLAB이 실행 바닥 supposely은 "fun1"에 상단에서하기 때문에 나중에 해결되는대로이 질문에 대한 대답에서

답변

1

.. 정의되지 않은 :

  1. fsolve에 대한 호출은 인수를 목적 함수에 전달하는 데 old MATLAB syntax을 사용하고 있습니다. 이 호출은 목적 함수 @(x) fun1(x, pH)에 대해 초기 값 1에서 시작하고 옵션 ([])을 전달하지 않고 최적화됩니다. MATLAB의 최신 버전이

    fsolve(@(x) fun1(x, pH), 1)

  2. fun1 그래서 부모 함수 pH2Fb의 내에서 호출 할 수있는 nested function입니다

    를 작성해야합니다.