matlab自定义函数出错

学习 时间:2026-04-04 18:05:45 阅读:5118
matlab自定义函数出错下面是源程序function xlogx=xlogx(x)if x==0xlogx=0;else if x> xlogx(x)Warning:Log of zero.> In xlogx at 7ans =NaN -0.3219 -0.3665 -0.3065 -0.1785 0 0.2188 0.4711 0.7520 1.0580 1.3863为什么在m文件里定义了当x=0时xlogx直接为0,它还警告Warning:Log of zero.还有,第一个NaN是怎么算出来的?为什么不是0?

最佳回答

大力的金毛

无私的万宝路

2026-04-04 18:05:45

你输入是个向量x,所以x==0不成立 x
再问: 非常感谢你,可以再帮我一下吗?我会加分的: function p=h(m) x1=m(1); x2=m(2); p(1)=log(x1。/(1-x1))-log(x2。/(1-x2))-5/8; p(2)=0。8*log(x1。/(1-x1))*(x2-x1)-0。8*((1-x2)。*log(1-x2)+x2。*log(x2))+(-0。2*(1-x1)+0。3*x1+0。8*((1-x1)。*log(1-x1)+x1。*log(x1))); 这样定义的h非线性方程组错在哪里?
再答: 你的输入是什么啊?看定义没什么问题啊
再问: 那换一个问题吧,假如我定义了一个变量 x=0:0。1:2; y=x。^2+5*x+3; 那么我如果想求x=1。51(前面x的取值时并没有取这个值,由于某种原因也不能将x的取值过于细化)时y的值,我如果这样写y(x==1。51)它提示出错,那我是不是非要将前面的y的式子抄一遍,将x=1。51代入,写成1。51^2+5*1。51+3?
再答: 是的,在已知方程的情况下,这样做最简单

最新回答共有2条回答

  • 干净的山水
    回复
    2026-04-04 18:05:45

    你输入是个向量x,所以x==0不成立 x 再问: 非常感谢你,可以再帮我一下吗?我会加分的: function p=h(m) x1=m(1); x2=m(2); p(1)=log(x1。/(1-x1))-log(x2。/(1-x2))-5/8; p(2)=0。8*log(x1。/(1-x1))*(x2-x1)-0。8*((1-x2)。*log(1-x2)+x2。*log(x2))+(-0。2*(1-x1)+0。3*x1+0。8*((1-x1)。*log(1-x1)+x1。*log(x1))); 这样定义的h非线性方程组错在哪里? 再答: 你的输入是什么啊?看定义没什么问题啊再问: 那换一个问题吧,假如我定义了一个变量 x=0:0。1:2; y=x。^2+5*x+3; 那么我如果想求x=1。51(前面x的取值时并没有取这个值,由于某种原因也不能将x的取值过于细化)时y的值,我如果这样写y(x==1。51)它提示出错,那我是不是非要将前面的y的式子抄一遍,将x=1。51代入,写成1。51^2+5*1。51+3? 再答: 是的,在已知方程的情况下,这样做最简单

上一篇 已知直线3x-4y=2m-3与x+2y=m交于第二象限,求m的取值范围

下一篇 布艺沙发购买技巧