作业帮 > 综合 > 作业

用matlab求反函数

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/13 03:16:54
用matlab求反函数
k=1000;
h=0.20;
l=0.125;
x=-0.15:0.001:0.15;
e=k.*h./(h.^2+(x+l).^2)-k.*h./(h.^2+(x-l).^2);
plot(x,e);
求e关于x的反函数,求成成幂级数也行-0.15<x<0.15.
求反函数,设变量为y,则展开之后为关于x的四次方程,可以求出解析解. 代码如下:syms x
k=sym(1000);
h=sym(0.20);
l=sym(0.125);
e=k.*h./(h.^2+(x+l).^2)-k.*h./(h.^2+(x-l).^2);
syms y
x=solve(e-y,x)
color='rgbm';
for i=1:length(x)
    h=ezplot(x(i),[-3200 3200]);
    set(h,'color',color(i))
    hold on
end
axis([-3500 3500 -0.8 0.8])
title('')
lstr=arrayfun(@(i){sprintf('x(%i)',i)},1:4);
legend(lstr{:})
 可以求出x关于y的表达式.上述代码绘制出来的图形:由图可见,x(2)、x(3)是所需的反函数(按不同区间取不同的表达式).由于x的表达式过于复杂,这里不列出. 上面说到求解析解的方法,得到的表达式过于复杂而不方便直接应用.更实用的方法是采用多项式拟合(也就是你所说的幂级数).多项式拟合的参考代码如下:n = 7;p = polyfit(e,x,n);
x1 = polyval(p,e);
plot(e,x,e,x1,'r--')
axis tight
legend('原始数据','拟合函数')
 其中n为拟合多项式的阶次,可根据需要选择.p为拟合多项式的系数.取n=7时的效果如下图:当然,也可以利用MATLAB绘图窗口中的Basic Fitting(位于Tools菜单)来对多种阶次的拟合结果进行比较.