arcos的matlab定义,想用matlab解一个带arccos的方程。可是结果好像没有解析解。求帮助解数值解...

最后面solve那句把引号去掉,可以求出解析解:

>> x=solve(acos(((l1*l1+l4*l4-(l2+l3)*(l2+l3)))/(2*l1*l4))-acos(((l1*l1+l4*l4-(l2-l3)*(l2-l3)))/(2*l1*l4)))

x =

[         pi]

[          0]

[  i*log(20)]

[ -i*log(20)]

追问

不好意思啊,我刚刚那段代码有点问题。应该是要解一个方程的,引号里的那个式子等于0.17π

追答

你已经采纳了啊?我还没来得及补充回答呢。

对于你现在的问题,其实可以很简单的给一个答案:

>> x=solve(acos(((l1*l1+l4*l4-(l2+l3)*(l2+l3)))/(2*l1*l4))-acos(((l1*l1+l4*l4-(l2-l3)*(l2-l3)))/(2*l1*l4))-0.17*pi)

x =

.86182957064698853009609027005701

我之所以迟迟没有回答,是因为除此之外想了很多:

1、上述求解语句在不同版本的MATLAB中可能会有比较大的差别。根据我在几个版本中的实测,在6.5中可以很快求出结果,在2007b中也很快,但求不出显式解,而在2008b中算了很久也没出来结果,最后被我强制终止。

2008a之前的MATLAB符号运算用的是Maple内核,而2008b之后用的是MuPad内核。根据我个人的使用经验以及所接触的信息看,多数情况下Maple内核比起MuPad内核的表现要优秀一些。

2、就问题自身而言,应该明确,要求解的方程是关于x的周期函数,所以解的个数是无穷多的。把上面求出来的x任意加上或减去2*pi的整数倍,都仍然是该方程的解,如图所示:

d020554834e6522bbca62ffee1e64f78.png

3、从上面图中可见,同一个周期内,除了在6.5版可以求出的那个根之外,还有另外一个根。放大图形可以知道该根在x=2.48附近。要想更准确地求出该根的值,可以用fsolve或fzero函数求解(要注意设置初值在2.5附近):

y0 = 0.17*pi;

x1 = fsolve(@(x)subs(eqx)-y0,2.5,optimset('Tolx',1e1-5))

其中,eqx是要求解的方程等号左边的符号表达式。求出的结果为(设置长显示格式):

x1 = 2.47869098380558

55070ed7b1a0ffd12d4cf46accb21b0f.png

还有更多分析,限于字数暂时只能贴这些。如果想进一步了解,可以追问或另外提问。

25375e052d920fc1eb79ce6b5aa6c2b3.png

c1e5c3c8fc9d7426b7f77626443e6f21.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值