2012-04-29 2 views
-2
(vgb-phy_s)^2=G^2*phy_t*((exp(-x)+x-1)+exp(-(2*phi_b/phi_t))*(exp(x)-x-1)) 

гдеИспользование fminsearch решить уравнение

x=phy_s/phy_t 
phy_t=0.0288; % phy_t=k*T/q; (k=1.3806503*10^-23, T=300 K, q=1.6*10^-19) 
phy_b=0.5267; % phy_b=phy_t*ln(Na/ni) 
G=(sqrt(2*q*es*Na)/cox); 

Здесь мне нужно построить phy_s для различных значений vgb.

Я пробовал много способов, но так как я новичок в Matlab. Я нахожусь в процессе обучения, я не могу найти правильное решение.

Немногие предложили мне использовать fminsearch, но это довольно запутанно, и я получаю много ошибок.

+0

Вы пытаетесь изобразить что-то вида '(x-y)^2 = k'; вы можете получить выражение для 'y' в терминах' x' с некоторой тривиальной алгеброй ... –

+0

Хорошо, спасибо. Но может ли использоваться команда fminsearch для вышеупомянутого уравнения? – ANS

+0

Ваше уравнение неверно: у вас есть '[', но не ']'. Кроме того, MATLAB использует '[' и ']' для конкатенации и матриц, а не для порядка операций. И в MATLAB '2phi_b' не является допустимым выражением. Вы должны использовать '2 * phi_b'. Пожалуйста, отредактируйте свой вопрос и исправьте эти неправильные выражения, чтобы стало ясно, что вы хотите решить из уравнения или группы уравнений. – nrz

ответ

0

fminsearch - функция для нахождения минимума функции, а не для нахождения решения уравнения. Кроме того, здесь у вас нет одного уравнения, кроме группы уравнений по меньшей мере из 5 уравнений. Вы можете использовать solve для решения уравнений и групп уравнений. Однако группа уравнений следующих уравнений 1-5 не имеет явного решения. Другая проблема заключается в том, что постоянные значения, которые вы предлагаете, представляют собой неточные значения, и если у вас есть более одного округленного или иначе неточного значения, вы не можете найти решение, даже если группа уравнений была разрешима (однако эта группа уравнений не имеют [явное] решение)).

Итак, я покажу шаги для решения этой проблемы, но, похоже, что-то не так с этой группой уравнений, даже если неопределенные константы неопределенности (phy_t=0.0288; phy_t=k*T/q; (k=1.3806503*10^-23; T=300; q=1.6*10^-19; phy_b = 0.5267; `) были опущены.

Уравнения (без постоянных определений):

1. (vgb-phy_s)^2 = G^2*phy_t*((exp(-x)+x-1)+exp(-(2*phi_b/phi_t))*(exp(x)-x-1)) 
2. x = phy_s/phy_t 
3. phy_t = k*T/q 
4. phy_b=phy_t*ln(Na/ni) 
5. G=(sqrt(2*q*es*Na)/cox) 

Чтобы решить, например. уравнение группа уравнений 1, 2 & 3:

Solution = solve('(vgb-phy_s)^2 = G^2*phy_t*((exp(-x)+x-1)+exp(-(2*phi_b/phi_t))*(exp(x)-x-1))', 'x = phy_s/phy_t', 'phy_t = k*T/q'); 

Solution.q 
ans = 
(T*k)/phy_t 
(T*k)/phy_t 

Solution.vgb 
ans = 
phy_s + (G*phy_t^(1/2)*(exp((2*phi_b)/phi_t) - exp(phy_s/phy_t) + exp((2*phy_s)/phy_t) - exp((2*phi_b)/phi_t)*exp(phy_s/phy_t) - (phy_s*exp(phy_s/phy_t))/phy_t + (phy_s*exp((2*phi_b)/phi_t)*exp(phy_s/phy_t))/phy_t)^(1/2))/(exp((2*phi_b)/phi_t)^(1/2)*exp(phy_s/phy_t)^(1/2)) 
phy_s - (G*phy_t^(1/2)*(exp((2*phi_b)/phi_t) - exp(phy_s/phy_t) + exp((2*phy_s)/phy_t) - exp((2*phi_b)/phi_t)*exp(phy_s/phy_t) - (phy_s*exp(phy_s/phy_t))/phy_t + (phy_s*exp((2*phi_b)/phi_t)*exp(phy_s/phy_t))/phy_t)^(1/2))/(exp((2*phi_b)/phi_t)^(1/2)*exp(phy_s/phy_t)^(1/2)) 

Solution.x 
ans = 
phy_s/phy_t 
phy_s/phy_t 

Обратите внимание, что это решение справедливо только для уравнения группы уравнений 1-3. Например, группа уравнений уравнений 1, 2, 4 или 1, 2, 5 дает другое решение.

Чтобы решить уравнение группы всех 5 уравнений можно использовать следующим образом:

Solution = solve('(vgb-phy_s)^2 = G^2*phy_t*((exp(-x)+x-1)+exp(-(2*phi_b/phi_t))*(exp(x)-x-1))', 'x = phy_s/phy_t', 'phy_t = k*T/q', 'phy_b = phy_t*ln(Na/ni)', 'G = sqrt(2*q*es*Na)/cox'); 

Однако, нет никакого решения:

Warning: Explicit solution could not be found. 
In solve at 160 

Solution = 
[ empty sym ] 

Итак, я полагаю, что вы пытаетесь выяснить, что неправильно с вашими уравнениями, а затем снова попробуйте solve с исправленными уравнениями.