fsolve 오류에 대한 질문
11 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
안녕하세요 한양대학교 대학원에서 공부하는 학생입니다.
fsolve를 실행 시 다음과 같은 오류가 발생합니다. 이를 해결하고 싶습니다. 아래 코드에 풀고자하는 비선형 방정식이 있습니다.
'목적 함수가 초기점에서 정의되지 않은 값을 반환합니다. FSOLVE 실행을 계속할 수 없습니다.'
F(1) = 2.3e-14*x^0.68*exp(-15.76/x)/sqrt(e_charge*x/mar) - 1/(ng*0.5*R*L/(R*0.86*(3+L/(2*lamda_in))^(-1/2)+L*0.8*(4+R/(2*lamda_in))^(-1/2)));가 0이 되도록하는 x를 구하고 싶습니다.
이에 대한 답변 부탁드립니다.
%% nonliear equation solve
x = fsolve(@func1,[0])
function F = func1(x)
Pressure = 100; %[mTorr]
Pabs = 100; %[W]
R = 0.13; %[m]
L = 0.1; %[m]
Tgas = 300; %[K]
RF_freq = 13.56;%[MHz]
Argon_mass = 39.948; %[amu]
mar = Argon_mass*1.67e-27; %[kg]
me = 9.11e-31; %[kg]
e_charge = 1.6e-19; %[C]
kB = 1.38e-23; %[J/K]
uB = sqrt(e_charge*x(1)/mar);
ng = (Pressure*133.322368*0.001)/(kB*Tgas); %[m^-3]
Deff = 1e+20/ng; %[m^2/s]
eff_diff_length = ((pi/L)^2+(2.405/R)^2)^-0.5; %[m]
sigma_in = 1e-18; %[m^2]
sigma_en = 6e-20; %[m^2]
lamda_in = 1/(sigma_in*ng); %[m]
volume = pi*R^2*L;
epsilon0 = 8.85e-12; %[F/m]
mu0 = 1.26E-06; %[H/m]
hR = 0.8*(4+R/(2*lamda_in))^(-1/2);
hl = 0.86*(3+L/(2*lamda_in))^(-1/2);
Aeff = 2*pi*R*(hR*L+hl*R);
eff_plasma_size = 0.5*R*L/(R*hl+L*hR);
nu_m = ng*sigma_en*sqrt(8*e_charge*x(1)/(pi*me)); %[Hz]
Kgm = 2.5e-15*x(1)^0.74*exp(-11.56/x(1));
Kgi = 2.3e-14*x(1)^0.68*exp(-15.76/x(1));
Kel = 3.9e-13*exp(-4.6/x(1));
Egm = 11.56;Egi = 15.78;
epsilonc = (Kgi*Egi + Kgm*Egm + 3*me/mar*Kel*x(1))/Kgi;
F(1) = 2.3e-14*x^0.68*exp(-15.76/x)/sqrt(e_charge*x/mar) - 1/(ng*0.5*R*L/(R*0.86*(3+L/(2*lamda_in))^(-1/2)+L*0.8*(4+R/(2*lamda_in))^(-1/2)));
end
0 commentaires
Réponses (1)
lazymatlab
le 18 Avr 2023
Modifié(e) : lazymatlab
le 18 Avr 2023
fsolve는 equation이 여러 개 있을 때 사용하며, equation이 하나일 때에는 fzero를 사용하는 것이 좋습니다. fzero는 지정한 초기값에서부터 방정식의 해를 찾아가는 방식인데, 주어진 F에 x=0을 대입하면 NaN이 나와서 에러가 발생합니다. F가 NaN이 되지 않는 적당한 값(x=1 등)을 대입하고 fzero를 이용하면 결과가 잘 나오는 것이 확인됩니다.
결론적으로 첫줄이 아래와 같이 수정되면 됩니다.
x = fzero(@func1, 1);
0 commentaires
Voir également
Catégories
En savoir plus sur 솔버 출력값과 반복 과정 표시 dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!