繁体   English   中英

在 Matlab/Octave 中求解符号非线性方程

[英]Solving a symbolic, nonlinear equation in Matlab/Octave

我正在尝试求解 x 的以下稳态方程:

0 = -C + 2*C0*(1-exp(-k*A*x*phi))

我已将所有变量定义为syms ,但无法弄清楚如何求解 x 的方程。 由于所有其他变量都是已知的,我尝试将它们替换为:

f = -C + 2*C0*(1-exp(-k*A*x*phi))
subs(f, [C 20], [C0 11], [k .015], [A .031], [phi .01])

但这也行不通。

使用subs用值替换符号变量的正确方法是使用三个输入变量。 第一个是符号表达式, 第二个是要替换的符号变量数组, 第三个是要替换第二个输入中的每个变量的数组。

syms C C0 k A x phi

f = -C + 2*C0*(1-exp(-k*A*x*phi));

% Substitute in values that are known
newf = subs(f, [C, C0, k, A, phi], [20, 11, 0.015, 0.031, 0.01]);
%   2 - 22*exp(-(93*x)/20000000)

% Solve the resulting symbolic expression for x
result = solve(newf == 0, x)
%   (20000000*log(11))/93

% And if you need a numeric (rather than symbolic) result
double(result)
%   5.1568e+05

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM