求解答:matlab中分段函数问题

symsuf=-2*u.^4+2*u.^2+u/6+0.3;ifu>=(-0.9-f(-0.9))&u<=(-0.9)g=0.9+u+f(-0.9);elseifu>=(... syms u
f=-2*u.^4+2*u.^2+u/6+0.3;
if u >= (-0.9-f(-0.9)) & u <= (-0.9)
g =0.9+u+f(-0.9);
else if u>=(-0.9) & u<=1
g=f;
else if u>=1 & u<=(1+f(1))
g=1-u-f(1);
end
end
end
求大神帮忙看看哪里出错了?是分段函数写的不对还是 syms 的缘故?
展开
 我来答
ithinksoim
2013-07-19 · TA获得超过305个赞
知道小有建树答主
回答量:116
采纳率:100%
帮助的人:58.8万
展开全部

这样就对了:

>> f = @(u) -2*u.^4+2*u.^2+u/6+0.3;

>> g = @(u) (u>= -0.9-f(-0.9) & u <= -0.9).*(0.9 + u+f(-0.9)) + (u>= -0.9 & u<=1).*f(u) + (u>=1 & u<=1+f(1)).*(1-u-f(1))

g = 

    @(u)(u>=-0.9-f(-0.9)&u<=-0.9).*(0.9+u+f(-0.9))+(u>=-0.9&u<=1).*f(u)+(u>=1&u<=1+f(1)).*(1-u-f(1))

>> plot(linspace(-1,1,100),g(linspace(-1,1,100)))

wwttbb2010
2013-07-19 · TA获得超过533个赞
知道小有建树答主
回答量:222
采纳率:0%
帮助的人:218万
展开全部
太混乱了。。。
你需要先说明白你的最终目的,

像什么f(-0.9),你指望matlab能认识这种东西吗?f是个符号变量。。
f(-0.9)的表示方法应该是subs(f,u,-0.9)

另外,为什么不把先把f(-0.9)和f(1)直接算出来呢?
最后,你是要得到一个函数呢?还是一个函数呢?。。。
是函数就得有函数的样子。
如果你一定要用符号运算的话,

function fun_g(x)

syms u
f=-2*u.^4+2*u.^2+u/6+0.3;
if( x>=-0.9-subs(f,u,-0.9) && x<=-0.9 )
g = 0.9+x+subs(f,u,-0.9);
else if( x>=-0.9 && x<=1 )
g = subs(f,u,x);
else if( x>=1 && x<=1+subs(f,u,1)
g = 1-x-subs(f,u,1);
end
fun_g = g;

把上面的语句保存到文件fun_g.m
放在一个英文的工作目录下面
然后你在command窗口,可以输入命令使用这个函数

例如,你要得到g(0.7)
输入
fun_g(0.7)
你要得到g(0.9)
输入
fun_g(0.9)
更多追问追答
追问
改了好几次,总是出现Function 'ge' is not implemented for MuPAD symbolic objects.
追答
你能把你的代码贴出来,然后怎么操作的说明一下吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式