MATLAB基本特性

2025-04-05 03:46:48
推荐回答(1个)
回答1:

程序不是一次性运行的。是根据图像得到的一个程序。
极值点好求,拐点就有问题了
clc;clear;format longsyms x
aaa=diff(x+sin(x+cos(x)),x)
aaaa=diff(aaa)

jizhi=[];guaidian=[]
for x0=[3.5,4.2,9.8,10.5]
tt=fzero(@(x)(1 - cos(x + cos(x))*(sin(x) - 1)),x0);
jizhi=[jizhi,tt];
end

for x0=[1.570796739836992,1.570802240112006,4,5.4,10.3,11.7]
ttt=fzero(@(x)(- sin(x + cos(x))*(sin(x) - 1)^2 - cos(x + cos(x))*cos(x)),x0);
guaidian=[guaidian,ttt];
end

jizhi,guaidian
===================================
jizhi =
Columns 1 through 3
3.426322538413973 4.443688555107776 9.709507845593560
Column 4
10.726873862287361
guaidian =
Columns 1 through 3
1.570796326794897 1.570796326794897 4.001837755989396
Columns 4 through 6
5.422940204779985 10.285023063168982 11.706125511959570

拐点的问题在于,它数学意义上意义上有“8”个。参见二阶导数的图。在1.7和8附近似乎是没有穿过x轴,但是你把绘图的数据足够细化(自变量的步长调到10e-5数量级)之后你会发现,这两处都有穿过坐标轴的。应变量超过0的量在10e(-18)这个数量级。所以fsove函数在处理第一个和第二个拐点时,似乎精度不够了。。需要你自己做相应操作来放大分辨率了。。此外,第五第6个拐点我在程序里没有做计算。
问题还在于,难以判断的4个拐点是不是在matlab 的精度控制范围之内。。eps也只有-16个数量级。。。
至少4个极值点3.426322538413973 4.443688555107776 9.709507845593560
10.726873862287361
和四个拐点:
4.001837755989396 5.422940204779985 10.285023063168982 11.706125511959570
是比较准确的结果。
至于其他4个拐点。我觉得已经没有了实际意义。看楼主求这个是干什麽用了。。要是严格的数学上来讨论,楼主自己再花点时间了。。
fuuuuuuu ck我传一张二阶导数的图,bai du 说图片非法,你网站才非 法,这个我帮不了了。。