MATLAB的solve函数求解方程的若干问题

solve函数是解方程经常使用的函数,有很多使用者在使用该函数时经常遇到问题,现简单汇总如下
一、使用用法老旧

syms x
a=1;
equ='x^2==a';
xs=solve(equ,x)

复制代码

会报错
Error using solve>getEqns (line 418)
List of equations must not be empty.
错误在于使用用法过于陈旧,现使用的MATLAB多为高版本
解决办法
使用用法改变,具体参见solve帮助文档

syms x
a=1;
equ=x^2==a;
xs=solve(equ,x)

复制代码

xs =

-1
1
二、循环求解
解方程经常遇到方程的一个或多个参数是变化的
例如例子的变量a分别等于1、4、9、16
经常会出现以下代码

syms x
a=[1,4,9,16];
equ=x^2==a;
xs=solve(equ,x)

复制代码

MATLAB运算无解
xs =

Empty sym: 0-by-1
这种情况应使用循环求解
但有时会遇到以下情况

syms x
a=[1,4,9,16];
for i=1:length(a)
equ=x.^2==a(i);
x=solve(equ,x)
end

复制代码

报错如下
x =

-1
1

Error using sym.getEqnsVars>checkVariables (line 92)
Second argument must be a vector of symbolic variables.
原因在于经过第一次循环后,变量x以转变为具体数值(-1,1),即导致在第二次循环中方程里无未知量
解决办法保存解得变量名改变
循环求解方程并保存变量的代码如下

syms x
a=[1,4,9,16];
for i=1:length(a)
equ=x.^2==a(i);
xs(i,:)=solve(equ,x);
end

复制代码

运行后在命令窗口输入xs即可看到全部解如下

xs

xs =

[ -1, 1]
[ -2, 2]
[ -3, 3]
[ -4, 4]
希望对需要的人有所帮助,也希望大家多提宝贵意见,共同进步

  • 22
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值