作业帮 > 综合 > 作业

关于matlab求解函数的问题

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/30 06:10:54
关于matlab求解函数的问题
有一个函数组
y=(1-(1-x^0.25)^4)+10*x;
z=10*(1-(1-x^0.25)^4);
y,z都是关于x的函数,现在知道了y值,且y值在不停的变化,求出随着y值变化时的z值
y=0:0.1:12;
用matlab怎么解决?
从原理上说,相当于已知 y=f(x),z=g(x),现在想求出函数 z=h(y) 来.
如果 f 的逆函数 x=F(y) 能求出来,那么问题就会非常简单,直接代入 z=g(x)=g(F(y)) 即可.但现在的问题在于,f 的逆函数的显式表达式很难求出来,那么比较有可操作性的就是用数值方法来做.
 
对于y=0:0.1:12,可以绘制y-x曲线:
ezplot('(1-(1-x^0.25)^4)+10*x',[0 1.2])
axis auto

可见,取x=1-1.2之间,足以提供y=0-12之间的值,而且y随x单调变化,所以可以使用插值的方法由y来求得相应的x,然后再代入g(x)求出z即可:
x=[0:0.000001:0.02 0.03:0.01:1.2];
y=(1-(1-x.^0.25).^4)+10*x;
yi=0:0.1:12;
xi=interp1(y,x,yi);
z=10*(1-(1-xi.^0.25).^4);
plot(yi,z)
xlabel('y')
ylabel('z')
需要说明的是,在x=0附近y变化比较剧烈,而后面变化平缓,所以在x<0.02时取较小的步长以确保精度.