找回密码
 注册
Simdroid-非首页
查看: 155|回复: 6

求助:solve函数求解方程

[复制链接]
发表于 2011-5-25 22:18:15 | 显示全部楼层 |阅读模式 来自 辽宁沈阳
本帖最后由 star19831106 于 2011-5-26 16:51 编辑


已知:
k1=-1.1;k2=8.72;k3=34.272;k4=26.7328; xp>-2
求解方程
k1*ts+1/2*k2*ts^2+1/6*k3*ts^3+1/24*k4*ts^4=xp
我首先将xp离散成若干值
比如
xp=-2:5;
或者
xp=-1:4;
然后编制如下程序进行计算


  1. clc;clear;
  2. xp=-1:1:3;%xp的值大于-2就可以
  3. np=length(xp);
  4. %-----------
  5. k1=-1.1;k2=8.72;k3=34.272;k4=26.7328;
  6. %------------
  7. syms ts;
  8. %------------
  9. kts=k1*ts+1/2*k2*ts^2+1/6*k3*ts^3+1/24*k4*ts^4;
  10. Dkts=diff(kts,ts);
  11. %------------
  12. for i=1:np
  13.     fts=Dkts-xp(i);
  14.     t0=double(eval(solve(fts,ts)))
  15. end
复制代码


但是无论xp的值取为:

xp=-2:5;
还是
xp=-1:4;
或者其他的值
解出来的第一个t0值都是复数值(其实应该是实数值)


请问为什么无论xp如何取值解出来的第一个t0值都会是复数呢?
是程序编错了吗?


谢谢!!
发表于 2011-5-25 23:53:17 | 显示全部楼层 来自 英国
Simdroid开发平台
本帖最后由 nwcwww 于 2011-5-25 23:57 编辑

在MATLAB MUPAD里算出来三个实根:



直接在命令行里也一样:
syms t;
f=(8354*t^3)/1875 + (2142*t^2)/125 + (218*t)/25 + 9/10;
s=solve(f,t);
double(s)


ans =

   -0.1407
   -3.2657
   -0.4397

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2011-5-26 07:59:22 | 显示全部楼层 来自 辽宁沈阳
十分感谢您的帮助。
我复制了一下您的代码
结果是
ans =
  -0.1407         
  -3.2657 - 0.0000i
  -0.4397 + 0.0000i
虽然3个都是实数解,但是后两个却表现为虚部为零的复数。
用isreal()函数识别不出来。继续请教这是什么原因。谢谢!
回复 不支持

使用道具 举报

发表于 2011-5-26 08:42:13 | 显示全部楼层 来自 河北廊坊
分别判断请用isreal和arrayfun函数

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2011-5-26 09:59:09 | 显示全部楼层 来自 辽宁沈阳
继续求助,请高手帮忙分析。
谢谢!!
回复 不支持

使用道具 举报

发表于 2011-5-26 10:31:22 | 显示全部楼层 来自 黑龙江牡丹江
应该是计算精度的问题吧,你就用下面这三个解吧
ans =

   -0.1407
   -3.2657
   -0.4397
回复 不支持

使用道具 举报

 楼主| 发表于 2011-5-26 13:20:34 | 显示全部楼层 来自 辽宁沈阳
谢谢qibbxxt 斑竹和messenger总斑竹 的帮助。
我是要求一组方程的解
不是单单要求一个方程的解

我遇到的问题是一楼的代码中
第一个方程的解总是复数

取xp=-1:1:3时,第一个方程的解为复数,其余为实数
取xp=-2:1:3时,也是第一个方程的解为复数,其余为实数。

不知道是什么原因。
谢谢!
回复 不支持

使用道具 举报

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

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-6 09:24 , Processed in 0.035608 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表