[已解决] 使用solve解方程得到的解巨大无比...得不到数字解

[复制链接]
QiangYang 发表于 2021-1-8 21:32:24
本帖最后由 QiangYang 于 2021-1-8 21:36 编辑

自定义了一个方程组, 得到的解巨大无比:
WeChat Screenshot_20210108213140.png
代码如下:
  1. a=0.0715;
  2. d=0.3;
  3. b_square=0.0887;

  4. A1=0.4452;
  5. B1=-1;

  6. syms p q

  7. eqns=[(q-d)^2/a^2-p^2/b_square==1,A1*p+B1*q==0];
  8. [solp, solq]=solve(eqns,[p q])
复制代码

是因为使用了变量的关系吗? 为什么得不到数字解呢?

最佳答案


TouAkira 发表于 2021-1-9 12:09:17
都是反复问的问题,想要数值解直接用vpasolve
[solp, solq]=vpasolve(eqns,[p q])

具体去看《 MATLAB中文论坛常见问题归纳

求解方程
求解方程通常有两种方法,符号求解和数值求解。
1. solve(Symbolic Math Toolbox)
通常在不确定方程是否有符号解的时候,推荐先使用 solve 进行尝试,因为 solve 相比于数值求解来说,它不需要提供初值,并且一般情况下能够得到方程的所有解。对于一些简单的超越方程,solve 还能够自动调用数值计算系统给出一个数值解。
由于是符号求解,有时候得到的解是一大串式子(符号求解无精度损失,所以 MATLAB 不会自动将答案转化为浮点数),这时候可以用 vpa 或者 double 函数将结果转换为单一的数,但需要注意的是 double 的结果为浮点数,vpa 的结果仍然是符号类型(即 sym 类型)。

4. vpasolve(Symbolic Math Toolbox)
最后再补充一个数值解法 vpasolve,vpasolve 是 R2012b 引进的函数,可以求解一元或多元函数零点。相比于 fzero 和 fsolve 来说,vpasolve 最大的一个优点就是不需要提供初值,并且能够自动搜索指定范围内的多个解。
回复此楼

4 条回复


TouAkira 发表于 2021-1-9 12:09:17
都是反复问的问题,想要数值解直接用vpasolve
[solp, solq]=vpasolve(eqns,[p q])

具体去看《 MATLAB中文论坛常见问题归纳

求解方程
求解方程通常有两种方法,符号求解和数值求解。
1. solve(Symbolic Math Toolbox)
通常在不确定方程是否有符号解的时候,推荐先使用 solve 进行尝试,因为 solve 相比于数值求解来说,它不需要提供初值,并且一般情况下能够得到方程的所有解。对于一些简单的超越方程,solve 还能够自动调用数值计算系统给出一个数值解。
由于是符号求解,有时候得到的解是一大串式子(符号求解无精度损失,所以 MATLAB 不会自动将答案转化为浮点数),这时候可以用 vpa 或者 double 函数将结果转换为单一的数,但需要注意的是 double 的结果为浮点数,vpa 的结果仍然是符号类型(即 sym 类型)。

4. vpasolve(Symbolic Math Toolbox)
最后再补充一个数值解法 vpasolve,vpasolve 是 R2012b 引进的函数,可以求解一元或多元函数零点。相比于 fzero 和 fsolve 来说,vpasolve 最大的一个优点就是不需要提供初值,并且能够自动搜索指定范围内的多个解。
回复此楼

shihe 发表于 2021-1-9 14:55:59
数值解还是很容易的吧,两组:
1:
q: 0.179612077395292
p: 0.403441323888796

2:
q: 0.666398631839585
p: 1.49685227277535

QiangYang 发表于 2021-1-9 17:14:52
TouAkira 发表于 2021-1-9 12:09
都是反复问的问题,想要数值解直接用vpasolve
[solp, solq]=vpasolve(eqns,)

学到了, 谢谢您的回答!

QiangYang 发表于 2021-1-9 17:15:45
shihe 发表于 2021-1-9 14:55
数值解还是很容易的吧,两组:
1:
q: 0.179612077395292

知道了, 原来需要double转换一下:L 谢谢您.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表