我是靠谱客的博主 整齐人生,最近开发中收集的这篇文章主要介绍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

最后

以上就是整齐人生为你收集整理的arcos的matlab定义,想用matlab解一个带arccos的方程。可是结果好像没有解析解。求帮助解数值解...的全部内容,希望文章能够帮你解决arcos的matlab定义,想用matlab解一个带arccos的方程。可是结果好像没有解析解。求帮助解数值解...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部