Effacer les filtres
Effacer les filtres

fsolve 오류에 대한 질문

11 vues (au cours des 30 derniers jours)
Jin Ung
Jin Ung le 9 Déc 2022
Modifié(e) : lazymatlab le 18 Avr 2023
안녕하세요 한양대학교 대학원에서 공부하는 학생입니다.
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

Réponses (1)

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

Catégories

En savoir plus sur 솔버 출력값과 반복 과정 표시 dans Help Center et File Exchange

Produits


Version

R2022b

Community Treasure Hunt

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

Start Hunting!