Need to solve equations which take vector inputs. The solv & solu are not supposed to be zero; as the variable R is changing they should change as well and should be vectors. Could anyone help??

1 次查看(过去 30 天)
syms tau_new b
rc=1;
x=linspace(1,100,1000);
R=exp(1).*x.*rc;
b0=.3614/sqrt(2);
eqns=[(b./(8*pi)).*(1./R).*(log(R./rc)+1)+(b./(2*b0))-tau_new==0, (b./(2*pi)).*(1./R).*(log(R./rc))+(b./(b0))-tau_new==0];
vars=[tau_new b];
[solv, solu] = solve(eqns, vars)

采纳的回答

Walter Roberson
Walter Roberson 2018-8-2
The first thing you need to remember is that when you ask to solve() a vector of equations, then solve() has to find a solution that satisfies all of the entries simultaneously. Because your x is length 1000 and there are two entries for each x, you are asking to solve 2000 simultaneously equations.
Secondly, if you use a symbolic x, and go through doing stepwise elimination of the variables, you will find that indeed 0 are the only values that will reliably make that pair of equations 0 on both sides. That does not mean there are no other zeros, but the other zeros are in x, not in b or tau_new . The additional zero is at x = exp(-LambertW(20000*sqrt(2)*Pi*exp(1/3)*(1/5421))-2/3) which is about 0.05157587627 which is before the start of your x search range.
  3 个评论
Walter Roberson
Walter Roberson 2018-8-3
Subtract the two equations to eliminate tau_new . The resulting equation will have b multiplied by every term, and the result will equal 0. Factor that and you get b * (expression without b) = 0. The only solution to that is that b = 0 or else the expression independent of b = 0. If you let b = 0 then substituting into the first equation you see that tau_new must equal to 0. If you let the expression independent of b be equal to 0, then the value of b becomes irrelevant and you cannot solve for b.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Symbolic Math Toolbox 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by