24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2169  |  回复: 12

yihu_55

银虫 (正式写手)

[求助] matlab求三元4次符号代数方程组,出现warning且答案不正确,该怎么办?已有1人参与

是为了求一个截断椭圆的曲线方程,椭圆长半轴、短半轴以及中心点的高度分别是 未知量 a, b 和 m.

matlab求三元4次符号代数方程组,出现warning且答案不正确,该怎么办?
截断椭圆.jpg

椭圆方程因此为:

matlab求三元4次符号代数方程组,出现warning且答案不正确,该怎么办?-1
椭圆方程.jpg

另 x=0, 可得到 Rco; 对曲线方程求导后另 x=0, 可得到 tan(theta);

matlab求三元4次符号代数方程组,出现warning且答案不正确,该怎么办?-2
方程组.jpg

三个未知数 a、b、m,三个方程①②③,用matlab 求解符号代数方程的函数 “solve(‘equ1’,‘equ2’,…‘var1’,‘var2’…) ”,却得不到结果,这是为什么?请指教,谢谢
(程序中 theta用 c 表示, Rco 用 r 表示,Req 用 p 表示)

matlab求三元4次符号代数方程组,出现warning且答案不正确,该怎么办?-3
求指教.jpg

[ Last edited by yihu_55 on 2014-2-24 at 16:27 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ju5200

木虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
c r p 直接带入已知数值 应该就好了
2楼2014-02-24 16:28:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yihu_55

银虫 (正式写手)

引用回帖:
2楼: Originally posted by ju5200 at 2014-02-24 16:28:55
c r p 直接带入已知数值 应该就好了

其实 Rco, Req, theta并不是真正意义的已知量,我现在是想通过这三个方程将 a, b, m 用 Rco, Req, theta 这三个量表示出来并带入 ③式,然后对 ③式两边求导,形成一个包含Rco, Req, theta的方程,再和另外两个由Rco, Req, theta组成的方程联立,最终求解这三个量(Rco, Req, theta)。
已经根据物理模型列出关于Rco, Req, theta的两个方程来了,还差一个,不知道该怎么办,才想通过几何上的关系再列一个的……
3楼2014-02-24 16:40:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ju5200

木虫 (正式写手)

引用回帖:
3楼: Originally posted by yihu_55 at 2014-02-24 16:40:49
其实 Rco, Req, theta并不是真正意义的已知量,我现在是想通过这三个方程将 a, b, m 用 Rco, Req, theta 这三个量表示出来并带入 ③式,然后对 ③式两边求导,形成一个包含Rco, Req, theta的方程,再和另外两个由R ...

“将 a, b, m 用 Rco, Req, theta 这三个量表示出来并带入 ③式,然后对 ③式两边求导,形成一个包含Rco, Req, theta的方程”
同样的方程 你求导后虽然得到形式不同的新的方程 但是你这个方程跟其他三个组成线性相关方程组 他们的自由度还是三个 所以是解不出来的  建议通过几何上的关系寻找新方程 而不是在现有方程基础上化简

» 本帖已获得的红花(最新10朵)

4楼2014-02-24 16:45:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yihu_55

银虫 (正式写手)

送红花一朵
引用回帖:
4楼: Originally posted by ju5200 at 2014-02-24 16:45:58
“将 a, b, m 用 Rco, Req, theta 这三个量表示出来并带入 ③式,然后对 ③式两边求导,形成一个包含Rco, Req, theta的方程”
同样的方程 你求导后虽然得到形式不同的新的方程 但是你这个方程跟其他三个组成线性相 ...

可是就现有的由方程①②③组成的方程组来说,他们是三个未知数三个方程,是应该有解的吧?(就是指 a, b , m 能由 Rco, Req, theta表示出来)?

至于后面的对 ③ 式求导得到“包含Rco, Req, theta的微分方程,其实本来就是想将这三个方程简化为一个微分方程用来形成另一套的方程的,这种后续工作对前者解①②③方程组应该没有影响吧?求导后的微分方程不会在这里用啊……
5楼2014-02-24 16:58:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ju5200

木虫 (正式写手)

引用回帖:
5楼: Originally posted by yihu_55 at 2014-02-24 16:58:20
可是就现有的由方程①②③组成的方程组来说,他们是三个未知数三个方程,是应该有解的吧?(就是指 a, b , m 能由 Rco, Req, theta表示出来)?

至于后面的对 ③ 式求导得到“包含Rco, Req, theta的微分方程,其 ...

理论上有解 但是不确定是否能解出来
微分方程需要设置初始值 况且就算你设置初始值截出来的方程很有可能比现有方程更复杂
按照你的想法化简后的微分方程截出来的方程跟原方程同解不同解还需验证

» 本帖已获得的红花(最新10朵)

6楼2014-02-24 17:06:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yihu_55

银虫 (正式写手)

送红花一朵
引用回帖:
6楼: Originally posted by ju5200 at 2014-02-24 17:06:54
理论上有解 但是不确定是否能解出来
微分方程需要设置初始值 况且就算你设置初始值截出来的方程很有可能比现有方程更复杂
按照你的想法化简后的微分方程截出来的方程跟原方程同解不同解还需验证...

现在解①②③方程组应该根本不用考虑微分方程的事,那是解出这个代数方程组之后的事啊。

而且化简为一个微分方程后,复不复杂也与原方程没有关系了吧,它将会和另外两个由物理模型得到的微分方程构成方程组的,初始值也将由物理模型给定。

现在关键的问题就是理论上 a, b , m 能由 Rco, Req, theta表示出来,但为什么matlab计算不出来的问题,你知道原因吗?
7楼2014-02-24 17:16:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ju5200

木虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
yihu_55: 金币+15, ★★★很有帮助 2014-02-24 22:13:42
我试了一下 可以求解出来 你自己对照一下代码
楼主给币币 哈哈
代码:
clear;
clc;
syms a b m c r p;
f=tan(c)-r*(b^2)/(a^2)/2;
g=r-a*sqrt((b^2-m^2))/b;
k=a^2*(3*m*b^2+2*b^3-m^3)/(b^2)-4^p^3;
[d,e,s]=solve(f,g,k)
求解结果:
d =

  (b*(-(4*a^4*tan(c)^2 - a^2*b^4)/b^4)^(1/2))/a
-(b*(-(4*a^4*tan(c)^2 - a^2*b^4)/b^4)^(1/2))/a


e =

log((b*(2*a - (-(4*a^4*tan(c)^2 - a^2*b^4)/b^4)^(1/2))*(a + (-(4*a^4*tan(c)^2 - a^2*b^4)/b^4)^(1/2))^2)/a)/(6*log(2))
log((b*(a - (-(4*a^4*tan(c)^2 - a^2*b^4)/b^4)^(1/2))^2*(2*a + (-(4*a^4*tan(c)^2 - a^2*b^4)/b^4)^(1/2)))/a)/(6*log(2))


s =

(2*a^2*tan(c))/b^2
(2*a^2*tan(c))/b^2
8楼2014-02-24 21:03:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yihu_55

银虫 (正式写手)

引用回帖:
8楼: Originally posted by ju5200 at 2014-02-24 21:03:02
我试了一下 可以求解出来 你自己对照一下代码
楼主给币币 哈哈
代码:
clear;
clc;
syms a b m c r p;
f=tan(c)-r*(b^2)/(a^2)/2;
g=r-a*sqrt((b^2-m^2))/b;
k=a^2*(3*m*b^2+2*b^3-m^3)/(b^2)-4^p^3;
=so ...

辛苦你了,可是代码第四行:
f=tan(c)-r*(b^2)/(a^2)/2;
分号前面不是 2 ,应该是 m,另外解出来的 d, e, s 是什么,我是想把 a, b, m 用 c, r, p 表示出来啊……
9楼2014-02-24 22:15:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ju5200

木虫 (正式写手)

引用回帖:
9楼: Originally posted by yihu_55 at 2014-02-24 22:15:48
辛苦你了,可是代码第四行:
f=tan(c)-r*(b^2)/(a^2)/2;
分号前面不是 2 ,应该是 m,另外解出来的 d, e, s 是什么,我是想把 a, b, m 用 c, r, p 表示出来啊……...

其实我这里的d e s就是a b m 不过程序里有点问题 应当指定自变量  抱歉
你的代码也是对的 不过最后结果里出现了Z1
符号方程求解结果里带了Z1 说明matlab 解不出解析解
可以使用其他数学软件试一下 如1stOpt
10楼2014-02-24 22:30:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 yihu_55 的主题更新
信息提示
请填处理意见