solve函数c语言_非线性方程(组):MATLAB内置函数 solve, vpasolve, fsolve, fzero, roots [MATLAB]...

MATLAB函数 solve, vpasolve, fsolve, fzero, roots 功能和信息概览

求解函数

多项式型

非多项式型

一维

高维

符号

数值

算法

solve

支持,得到全部符号解

若可符号解则得到根

支持

支持

支持

当无符号解时

符号解方法:利用等式性质得到标准可解函数的方法

基本即模拟人工运算

vpasolve

支持,得到全部数值解

(随机初值)得到一个实根

支持

支持

$\times$

支持

未知

fsolve

由初值得到一个实根

由初值得到一个实根

支持

支持

$\times$

支持

优化方法,即用优化方法求解函数距离零点最近,具体方法为信赖域方法。

包含预处理共轭梯度(PCG)、狗腿(dogleg)算法和Levenberg-Marquardt算法等

fzero

由初值得到一个实根

由初值得到一个实根

支持

$\times$

$\times$

支持

一维解非线性方程方法,二分法、二次反插和割线法的混合运用

roots

支持,得到全部数值解

$\times$

支持

$\times$

$\times$

支持

特征值方法,即将多项式转化友矩阵(companion matrix)

然后使用求矩阵特征值的算法求得所有解(那是另外一个问题了)

也就是说,之前写了几篇关于非线性求解的,如二分法、牛顿法(参见二分法、不动点迭代、牛顿法)、二次反插法(参见插值法),只有一个库函数用了类似的方法。

各函数用法详解

1. (符号/数值)解方程(组)函数 solve

solve 是基本的用于符号解方程的内置函数,返回类型为符号变量矩阵($m\times n$ sym)。当无法符号求解时,抛出警告并输出一个数值解。基本形式为:

solve(eqn, var, Name, Val);  % eqn为符号表达式/符号变量/符号表达式的函数句柄, var为未知量; Name为附加要求,Val为其值

可以用solve解一维方程。对于多项式,solve可以返回其所有值。

func1 = @(x)x^3 - 20*x^2 - 25*x + 500; % 创建函数句柄.句柄中的变量不属符号变量,不需要定义!

syms x exp1; % 定义符号变量 x, exp1;

exp1 = x^3 - 20*x^2 - 25*x + 500; % 符号表达式,包含符号变量. 符号变量必须先有上一行定义!

solve(exp1 == 0, x) % 命令行输入a,传入一个包含符号表达式的等式,x为所要求的变量

solve(exp1, x) % 命令行输入b,传入一个符号表达式,函数默认求其零点

solve(func1(x), x) % 命令行输入c,传入参数func1(x)等价于传入了符号表达式,和输入b完全一样

solve(func1(x) == 0, x) % 命令行输入d,这句话和a完全一样

solve(func1, x) % 命令行输入e,传入参数func1,这是一个函数句柄,函数默认求其零点

ans = % 命令行输出,三个解,为3*1的符号向量。对以上五种输入输出都完全一样

-5

5

20

对于不可符号求解的函数零点/方程解,solve抛出警告并返回一个数值解:

exp1 = atan(x) - x - 1; % 不可符号求零点的表达式

solve(exp1 == 0, x) % 命令行输入

% 命令行输出:

警告: Cannot solve symbolically. Returning a numeric approximation instead.

ans =

-2.132267725272885131625420696936

值得注意的是,虽然称之为“数值解”,并且输出了一个位数非常多的小数,但查看数据类型发现ans的数据类型

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值