1、可以用fzero求根。求之前先画出图来看看根的大致分布情况,由图可见,只有一个根。
参考代码:
f=inline('-0.5+t-10*exp(-0.2*t)*abs(sin(sin(t)))','t');
ezplot(f)
hold on
t0=fzero(f,0);
plot(t0,f(t0),'ro')
plot(xlim,[0 0],'c--')
2、使用polyfit进行多项式拟合(或者,在绘图窗口Tools菜单选择Basic Fitting进行拟合更简单)。
示例:
x=1:10;
y=sin(x);
plot(x,y,'.:')
hold on
p=polyfit(x,y,5);
xi=1:0.1:10;
plot(xi,polyval(p,xi),'r')
legend('原始数据','五次多项式拟合')
这种超越方程直接用solve确实不好求解,还是用作图法吧,比较快。
数据拟合直接用在命令窗口输入cftool,就可以根据数据和需要的阶次拟合了
syms t y
y=-0.5+t-10*exp(-0.2*t)*abs(sin(sin(t)));
tic
tval=solve(y==0,t)
toc
eval(subs(y,t,tval))%检验结果
运行结果:
tval =
2.7341173220805884771375917565462
Elapsed time is 4.757776 seconds.
ans =
7.3468e-40