matlab解方程组时报错Explicit solution could not be found

解方程组:[p,n]=solve('2*pi*0.025/3*exp(-2*pi*0.106/3)*sin(pi/6)*(((p-0.09)^2+4*n^2)/(4*n^... 解方程组:
[p,n]=solve('2*pi*0.025/3*exp(-2*pi*0.106/3)*sin(pi/6)*(((p - 0.09)^2 + 4*n^2)/(4*n^2))^(1/2)=10.5','2*pi*0.015/3*exp(-2*pi*0.106/3)*sin(pi/6)*(((p - 0.09)^2 + 4*n^2)/(4*n^2))^(1/2)=7.26','p','n')

报错,求帮助
展开
 我来答
tianxiawulang
推荐于2017-09-09 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:3189万
展开全部

1、像这种复杂的方程(组)一般是很难求出解析解的,建议用数值方法求解。

 

2、即使能求出解析解,题主的调用方式也是错误的。

 

我们举个简单例子:

>> [p,n]=solve('p=10','n=7','p','n') 
p = 

n = 
10

看到了吗?两个变量是反过来的。原因是,solve函数返回多个输出时,是以变量的字母顺序排列,而不是你在输入参数中指定的顺序。

 

事实上,对于求解方程组的情况,比较可取的做法是只返回一个参数,此时返回的参数是一个结构体

>> s=solve('p=10','n=7','p','n')
s =
    n: [1x1 sym]
    p: [1x1 sym]
>> s.n 
ans = 

>> s.p 
ans = 
10

这样就不会搞错了。

 

3、回到问题本身。

 

其实不难注意到,你的两个方程最右根号部分是相同的,而且变量也只存在与根号部分。分别把方程左边的数除以右边根号之外的部分,得到的值是不同的:

>> 10.5/(2*pi*0.025/3*exp(-2*pi*0.106/3)*sin(pi/6))
ans =
  500.7680
>> 7.26/(2*pi*0.015/3*exp(-2*pi*0.106/3)*sin(pi/6))
ans =
  577.0755

这意味着什么?两个方程不相容!也就是说,这个方程组根本就是无解的。

意法半导体(中国)投资有限公司
2023-06-12 广告
单片机,即单片微控制器,也称为单片微型计算机,是将中央处理器(CPU)、存储器(ROM,RAM)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式