
matlab画函数图像
x =linspace(-5,5,10000);
y = (x.^3 -2*x.^2).^(1/3);
figure,
plot(x,y)
你看递增否?
我详细看了一下,问题出在开立方上面,matlab开立方有点问题,
(-64)^(1/3) = 4,但是matlab算出来是
(-64)^(1/3) = 2.0000 + 3.4641i,
( 2.0000 + 3.4641i)^3 = -63.9999 + 0.0000i,
如你所持指出的一样,
x=-2,y = (-16)^(1/3) =-2.5198,
x =-1, y =(-3)^(1/3) = -1.4422,
但是实际上matlab算出来的是复数,问题主要出在当y时负数的时候,matlab是按照复数来处理的。
x=-2,y = (-16)^(1/3) = 1.2599 + 2.1822i ,
x =-1, y =(-3)^(1/3) = 0.7211 + 1.2490i,
(-16)^(1/3) = (16*exp(Pi*i))(1/3) =(16)^(1/3)exp(Pi/3*i) = 1.2599 + 2.1822i,这个时候为了限制解在实数域,可以 x^(1/3) = sign(y)(abs(x)^(1/3)),也就是(-16)^(1/3) = -(16^(1/3)),来规避这一问题。
x =linspace(-5,5,10000);
y = (x.^3 -2*x.^2);
signY = sign(y);
thirdthPowerY = abs(y).^(1/3);
realY = signY .* thirdthPowerY ;
figure,
plot(x,realY)
这个图应该是对的,如你所说的区间是递增的。
x:=0:0.01:1;
y=x;
plot(x,y)
很久没用了,大概是这样,你试试!
广告 您可能关注的内容 |