问个matlab的问题,求高手解答!

2024-11-25 07:32:54
推荐回答(3个)
回答1:

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('原始数据','五次多项式拟合')

 

回答2:

这种超越方程直接用solve确实不好求解,还是用作图法吧,比较快。
数据拟合直接用在命令窗口输入cftool,就可以根据数据和需要的阶次拟合了

回答3:

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