为什么用MATLAB finverse函数求反函数出现了问题
按理说,反函数的反函数应该等于本身,但是我求了两次finverse却发现画出来的图和原函数的图不一样,请问什么问题...
按理说,反函数的反函数应该等于本身,但是我求了两次finverse却发现画出来的图和原函数的图不一样,请问什么问题
展开
2个回答
展开全部
数值的精度低,会有误差的。用字母的就好了。
例如下面解同样的精度数值是不一样的。对于字母的函数finverse用两次
会一样;数值的会有累计误差。
p=[1 0 -2 -5]
r=roots(p)
p =
1 0 -2 -5
r =
2.0946
-1.0473 + 1.1359i
-1.0473 - 1.1359i
syms x;
A=solve('x^3-2*x-5')
vpa(A)
ans =
2.0945514815423265914823865405793
1.1359398890889281862454926290294*i - 1.0472757407711632957411932702897
- 1.1359398890889281862454926290294*i- 1.0472757407711632957411932702897
例如下面解同样的精度数值是不一样的。对于字母的函数finverse用两次
会一样;数值的会有累计误差。
p=[1 0 -2 -5]
r=roots(p)
p =
1 0 -2 -5
r =
2.0946
-1.0473 + 1.1359i
-1.0473 - 1.1359i
syms x;
A=solve('x^3-2*x-5')
vpa(A)
ans =
2.0945514815423265914823865405793
1.1359398890889281862454926290294*i - 1.0472757407711632957411932702897
- 1.1359398890889281862454926290294*i- 1.0472757407711632957411932702897
追问
问题我这个差的有点太多了吧?
追答
其实我的意思是解释你求两次反函数与原来会有差别,是由于数值解的精度造成的。
建议使用字母表示。
你给的函数是多值函数不存在返函数,因此会出错。如下,如果用你的函数,分段运行,结果和你的一样;但是如果是正切函数,就对着的。估计是反函数不唯一造成的,至于为什么反函数会变负数,而且再反没效果就不知道了。
syms x
%y=-(2.*x+x.^2-(x.^4+4.*x.^3+7.*x.^2+6.*x).^(1/2))./(x.^2+2.*x);
y=tan(x);
x1=0.05:0.05:1;
y1=subs(y,{x},{x1});
figure(1),plot(x1,y1,'r');
hold on;
yinverse=finverse(y);
x2=x1;
y2=subs(yinverse,{x},{x2});
plot(x2,y2,'g');
yinverseinverse=finverse(yinverse);
x3=x1;
y3=subs(yinverseinverse,{x},{x3});
plot(x3,y3,'b');
2014-05-17
展开全部
应该是求一次finverse
追问
我故意求了两次,按理说求了两次的话又变成原函数了,函数图形应该不变,可是你看上图两次画的图线不一样。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询