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

标签 matlab octave symbolic-math

我正在尝试求解 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 将符号变量替换为值的正确方法是使用三个输入变体。第一个是符号表达式 the second是要替换的符号变量数组,并且 the third是您想要替换第二个输入中每个变量的内容的数组。

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

关于matlab - 在 Matlab/Octave 中求解符号非线性方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41523400/

相关文章:

Matlab:使用 bsxfun 时出错两个输入数组的非单一维度必须彼此匹配

algorithm - Matlab:找到产生另一个矩阵的置换矩阵

cygwin - Octave 无法绘制加载到不同地址的 : cygoctave-1. dll

machine-learning - 矢量化问题

c++ - 如何在 Matlab 中训练模型,将其保存到磁盘,并加载到 C++ 程序中?

python - 逐字分割阿拉伯语单词python

python - 有没有办法以 Octave 为单位指定命令行宽度?

python - Sympy 表达式为多项式之比

symbolic-math - 如何从包含特定变量 MAPLE 的符号表达式中获取部分表达式?

julia - 如何在 Julia 中象征性地表示 5*π