本帖最后由 米斯兰达 于 2013-6-18 20:39 编辑
首先,注意到cos(x)和cosh(x)都是偶函数,所以,只考虑x在0到正无穷的情况即可。
可以使用fzero函数来求。s=fzero(f,x0) 其中,f为要求解的方程,需要改成f=0的形式,x0是迭代求解的初值,s为距离x0最近的解。
这里你要求5个解,所以要使用不同的x0值进行计算,可以用一个循环实现。
s=zeros(1,20);
for x0=0:20
s(1,x0+1)=fzero(@(x)cos(x)*cosh(x)-1,x0);
end
可以得到s =
Columns 1 through 10
0 4.7300 4.7300 4.7300 4.7300 4.7300 4.7300 7.8532 7.8532 7.8532
Columns 11 through 20
10.9956 10.9956 10.9956 14.1372 14.1372 14.1372 17.2788 17.2788 17.2788 20.4204
Column 21
20.4204
于是前5个解就为4.7300, 7.8532, 10.9956, 14.1372, 17.2788
当然也可以直接用s1=unique(s)来看s中的不重复元素都有哪些
如果楼主对arrayfun函数熟悉的话,可以用将上面的代码写成
f=@(x)arrayfun(@(a)fzero(@(y)cos(y)*cosh(y)-1,a),x);
s=f(0:20)
也可以
|