共回答了20个问题采纳率:95%
数值的精度低,会有误差的.用字母的就好了.
例如下面解同样的精度数值是不一样的.对于字母的函数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
1年前
追问
3
问题我这个差的有点太多了吧?
其实我的意思是解释你求两次反函数与原来会有差别,是由于数值解的精度造成的。
建议使用字母表示。
你给的函数是多值函数不存在返函数,因此会出错。如下,如果用你的函数,分段运行,结果和你的一样;但是如果是正切函数,就对着的。估计是反函数不唯一造成的,至于为什么反函数会变负数,而且再反没效果就不知道了。
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');