楼主: zouguangyong
2550 15

[问题] 如何对字母型的方程组求解 [推广有奖]

11
Crsky7 发表于 2015-12-29 00:48:59
事实上,跑一下solve(2*ts*ns1-pb1*nb1-ps1*nb1+2*c*nb1+fs==0,2*tb*nb1-pb1*ns1-ps1*ns1+2*c*ns1+fb==0,2*ts*ns1-pb2*nb1-ps2*nb1+2*c*nb1+pb2+ps2-2*ts-2*c-fs==0,2*tb*nb1-pb2*ns1-ps2*ns1+2*c*ns1+pb2+ps2-2*tb-2*c-fb==0)
你就会知道其实你求的并不是[pb1,pb2,ps1,ps2]而是[pb1,pb2,tb,ts]

12
Crsky7 发表于 2015-12-29 00:49:59
不信你可以用这段代码验证下:
clear
clc
syms ts tb ns1 nb1 c fs fb pb1 pb2 ps1 ps2
[pb1,pb2,tb,ts]=solve(2*ts*ns1-pb1*nb1-ps1*nb1+2*c*nb1+fs==0,2*tb*nb1-pb1*ns1-ps1*ns1+2*c*ns1+fb==0,2*ts*ns1-pb2*nb1-ps2*nb1+2*c*nb1+pb2+ps2-2*ts-2*c-fs==0,2*tb*nb1-pb2*ns1-ps2*ns1+2*c*ns1+pb2+ps2-2*tb-2*c-fb==0)
simplify(2*ts*ns1-pb1*nb1-ps1*nb1+2*c*nb1+fs)
simplify(2*tb*nb1-pb1*ns1-ps1*ns1+2*c*ns1+fb)
simplify(2*ts*ns1-pb2*nb1-ps2*nb1+2*c*nb1+pb2+ps2-2*ts-2*c-fs)
simplify(2*tb*nb1-pb2*ns1-ps2*ns1+2*c*ns1+pb2+ps2-2*tb-2*c-fb)

13
Crsky7 发表于 2015-12-29 00:53:24
所以我说这个方程组没有解析解,正确代码在此:
clear
clc
syms ts tb ns1 nb1 c fs fb pb1 pb2 ps1 ps2
[pb1,pb2,ps1,ps2] = solve(2*ts*ns1-pb1*nb1-ps1*nb1+2*c*nb1+fs==0,2*tb*nb1-pb1*ns1-ps1*ns1+2*c*ns1+fb==0,2*ts*ns1-pb2*nb1-ps2*nb1+2*c*nb1+pb2+ps2-2*ts-2*c-fs==0,2*tb*nb1-pb2*ns1-ps2*ns1+2*c*ns1+pb2+ps2-2*tb-2*c-fb==0,pb1,pb2,ps1,ps2)
已有 1 人评分经验 学术水平 热心指数 信用等级 收起 理由
zouguangyong + 100 + 2 + 5 + 5 精彩帖子

总评分: 经验 + 100  学术水平 + 2  热心指数 + 5  信用等级 + 5   查看全部评分

14
Crsky7 发表于 2015-12-29 00:58:20
藉風說雨 发表于 2015-12-28 22:35
你可以去用mathematica软件去求解,我记得里面是可以做符号运算的
事实上你用mathemtica来算结果也一样:
Solve[{fs + 2 c nb1 - nb1 pb1 - nb1 ps1 + 2 ns1 ts == 0,
  fb + 2 c ns1 - ns1 pb1 - ns1 ps1 + 2 nb1 tb ==
   0, -2 c - fs + 2 c nb1 + pb2 - nb1 pb2 + ps2 - nb1 ps2 - 2 ts +
    2 ns1 ts ==
   0, -2 c - fb + 2 c ns1 + pb2 - ns1 pb2 + ps2 - ns1 ps2 - 2 tb +
    2 nb1 tb == 0}, {pb1, pb2, ps1, ps2}]

still no explicit solution
已有 1 人评分经验 学术水平 热心指数 信用等级 收起 理由
zouguangyong + 100 + 3 + 5 + 5 精彩帖子

总评分: 经验 + 100  学术水平 + 3  热心指数 + 5  信用等级 + 5   查看全部评分

15
Crsky7 发表于 2015-12-29 00:59:34
zouguangyong 发表于 2015-12-28 22:25
这样的话,这个解看不出关系啦
你检验一下左边是否等于右边不就结了

16
藉風說雨 学生认证  发表于 2015-12-29 09:55:47
zouguangyong 发表于 2015-12-28 22:25
这样的话,这个解看不出关系啦
就是:单独考虑4个未知解的,matlab算出来时候,你观察ps1和ps2,表达式里面不含有未知数,这个是最理想的解,也是你想要的。pb1和pb2里面除了已知数,就只含有ps1和ps2,那么带入进去pb1和pb2就求解出来了啊。至于为什么matlab没带入进去就不知道了,可能和工作机制有关。如果猜测正确,那如果10个未知数的,求解时候也会是同样的道理
已有 1 人评分经验 热心指数 收起 理由
zouguangyong + 60 + 2 热心帮助其他会员

总评分: 经验 + 60  热心指数 + 2   查看全部评分

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-28 21:43