fsolve 오류에 대한 질문
11 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
안녕하세요 한양대학교 대학원에서 공부하는 학생입니다.
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 comentarios
Respuestas (1)
lazymatlab
el 18 de Abr. de 2023
Editada: lazymatlab
el 18 de Abr. de 2023
fsolve는 equation이 여러 개 있을 때 사용하며, equation이 하나일 때에는 fzero를 사용하는 것이 좋습니다. fzero는 지정한 초기값에서부터 방정식의 해를 찾아가는 방식인데, 주어진 F에 x=0을 대입하면 NaN이 나와서 에러가 발생합니다. F가 NaN이 되지 않는 적당한 값(x=1 등)을 대입하고 fzero를 이용하면 결과가 잘 나오는 것이 확인됩니다.
결론적으로 첫줄이 아래와 같이 수정되면 됩니다.
x = fzero(@func1, 1);
0 comentarios
Ver también
Categorías
Más información sobre 문제 기반 최적화 설정 en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!