У меня есть три уравнения в трех неизвестных, которые я хотел бы решить. Я задаю уравнения с symbolic toolbox
. Я знаю, что могу использовать функцию solve
, чтобы спросить Matlab, чтобы найти мне числовое решение. Однако с 3 уравнениями в 3 неизвестных, Matlab должен иметь возможность найти аналитическое решение (fsolve
). Я просто не уверен, как изменить код, чтобы я мог использовать fsolve
вместо solve
.От Solve to Fsolve
Ниже мой код:
очистить все
syms Kl Kh alpha nu w phi delta P beta zh zl Ezh Ezl
nu1 = (1/(1-nu));
f1 = ((zl * (Kl^alpha))^nu1 + (zh * (Kh^alpha))^nu1) * nu^(nu*nu1) * (w^(-nu*nu1)) - w/phi + delta*(Kl + Kh)*P
f2 = Kh - (((1-beta*(1-delta))*P * (w^(nu1*nu))*(nu^(nu*nu1)))/(beta*alpha* (Ezh)^nu1))^((1-nu)/(alpha+nu-1))
f3 = Kl - (((1-beta*(1-delta))*P * (w^(nu1*nu))*(nu^(nu*nu1)))/(beta*alpha* (Ezl)^nu1))^((1-nu)/(alpha+nu-1))
f1 = subs(f1, {alpha, beta, nu, phi,delta, zh, zl, Ezh, Ezl, P}, {0.27, 0.96, 0.60, 2.15,0.065,1.11687642219068,0.895354204038589,1.07811003137331,0.934120594855956, 0.95})
f2 = subs(f2, {alpha, beta, nu, phi,delta, zh, zl, Ezh, Ezl, P}, {0.27, 0.96, 0.60, 2.15,0.065,1.11687642219068,0.895354204038589,1.07811003137331,0.934120594855956, 0.95})
f3 = subs(f3, {alpha, beta, nu, phi,delta, zh, zl, Ezh, Ezl, P}, {0.27, 0.96, 0.60, 2.15,0.065,1.11687642219068,0.895354204038589,1.07811003137331,0.934120594855956, 0.95})
S = solve([f1 == 0, f2 == 0, f3 == 0],...
[w, Kh, Kl], 'ReturnConditions', true);
'fsolve' используются, чтобы найти * * численное решение, а не аналитические. 'solve', в символической математической панели инструментов, может найти аналитические решения (если они существуют) в некоторых случаях, но другие мудрые будут использовать математику с переменной точностью, чтобы найти числовую. Вы ищете числовое решение? – horchler
Да, мои извинения. Я имел в виду численное решение. – phdstudent