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
с исправленными уравнениями.
Вы пытаетесь изобразить что-то вида '(x-y)^2 = k'; вы можете получить выражение для 'y' в терминах' x' с некоторой тривиальной алгеброй ... –
Хорошо, спасибо. Но может ли использоваться команда fminsearch для вышеупомянутого уравнения? – ANS
Ваше уравнение неверно: у вас есть '[', но не ']'. Кроме того, MATLAB использует '[' и ']' для конкатенации и матриц, а не для порядка операций. И в MATLAB '2phi_b' не является допустимым выражением. Вы должны использовать '2 * phi_b'. Пожалуйста, отредактируйте свой вопрос и исправьте эти неправильные выражения, чтобы стало ясно, что вы хотите решить из уравнения или группы уравнений. – nrz