MATLAB分段函数积分(如果能解决可以加分)

在MATLAB中,我有一分段函数求其积分,比如函数y1在t>0&t<0.1时刻成立,函数y2在
t>0.1&t<0.3时刻成立,函数y3在t>0.3&t<0.9时刻成立。总函数y=y1.*(t>
0&t<0.1)+y2.*(t>0.1&t<0.3)+y3.*(t>0.3&t<0.9)。
y1,y2,y3三个函数在前面的程序中可以求解,但是十分复杂,而且还是在循环中不断变化,所以不可能将y1,y2,y3三个函数复制出来。那么怎么弄
才能够求出y关于时间t的积分。比如int(y,0,0.9),等这类不能用。不知该怎么写后续程序,求大神!!!!(如果能解决可以加分)

第1个回答  2013-11-02
x=0:0.01:1;
f=@(x)x.*double(x>=0 & x<0.1)+10*x.^2.*double(x>=0.1&x<=0.3)+0.9*double(x>0.3&x<=0.9);
plot(x,f(x))
quad(f,0,0.9)
函数为:
x (t>0&t<0.1)
10x^2 (t>0.1&t<0.3)
0.9 (t>0.3&t<0.9)追问

这个是知道,我想问的是另外一种,比如你写的函数x,10*x^2,0.9这三个函数,在f中你也是直接写入三个函数的,但是如果这三个函数我无法直接写入,只能用y1,y2,y3代替,但是y1,y2,y3可以通过前面的方程求解出来,可以理解为y1,y2,y3的函数方程很长很长,不可能直接写。那么该怎么办??

追答

y1=@(x) x;
y2=@(x) 10*x.^2;
y3=@(x) 0.9;
y=@(x) y1(x).*double(x>=0 & x=0.1&x0.3&x<=0.9);
x=0:0.01:0.9;
plot(x,y(x))
quad(y,0,0.9)
这样呢。。。

追问

可能我说的不是很清楚,举个例(就是如果按我这个要求应该是这样)字数受限

x1=x;x2=10.*x.^2;x3=0.9;
y1=@(x) x1;
y2=@(x) x2;
y3=@(x) x3;
y=@(x) y1(x).*double(x>=0 & x<0.1)+y2(x).*double(x>=0.1&x<=0.3)+y3(x).*double(x>0.3&x<=0.9);
x=0:0.01:0.9;







追答

那你能告诉我得出的三个函数是syms还是个函数句柄?

追问

是syms

追答

syms x x1 x2 x3
x1=x;
x2=10.*x.^2;
x3=0.9;
y1=@(x) subs(x1,x);
y2=@(x) subs(x2,x);
y3=@(x) subs(x3,x);
y=@(x) y1(x).*double(x>=0 & x=0.1&x0.3&x<=0.9);
x=0:0.01:0.9;
plot(x,y(x))
quad(y,0,0.9)
这样呢?

本回答被提问者采纳
相似回答