matlab离散数据积分怎么做?高手请进!!!!!!!!!!!!!
如何对已测得的加速度数据(离散的)进行离散积分,得到速度数据?问题和下面的积分是一样的:t=0:0.01:2*pi;x=sin(t);如何得到x的积分呢?(结果应该是-c...
如何对已测得的加速度数据(离散的)进行离散积分,得到速度数据?
问题和下面的积分是一样的:
t=0:0.01:2*pi;
x=sin(t);
如何得到x的积分呢?(结果应该是-cos(t),是一条跟sin(t)相同的曲线!)
用辛普森梯形积分或者求和积分都可以,只要能得到正确的结果就行!
请高手帮忙啊!
需要具体程序~~~~~~~~~~~~~~~~~
囧。。犯糊涂啦,连cos(t)的样子都弄混了,⊙﹏⊙b。。。
多谢matlabguy和greatdju的耐心解答~我估计要把你俩折腾疯了,抱歉哈,小弟愚钝!
非常受益呀,看看能不能都采纳为最佳答案~ 展开
问题和下面的积分是一样的:
t=0:0.01:2*pi;
x=sin(t);
如何得到x的积分呢?(结果应该是-cos(t),是一条跟sin(t)相同的曲线!)
用辛普森梯形积分或者求和积分都可以,只要能得到正确的结果就行!
请高手帮忙啊!
需要具体程序~~~~~~~~~~~~~~~~~
囧。。犯糊涂啦,连cos(t)的样子都弄混了,⊙﹏⊙b。。。
多谢matlabguy和greatdju的耐心解答~我估计要把你俩折腾疯了,抱歉哈,小弟愚钝!
非常受益呀,看看能不能都采纳为最佳答案~ 展开
3个回答
展开全部
t=0:0.01:2*pi;
x=sin(t);
s_x=cumtrapz(t,x);%s_x就是x的数值积分
plot(t,x,t,s_x)
___________
楼主请您明白一点,sin(t)的不定积分是-cos(t)+C,C是任意常数,而用数值方法作出来的是定积分,是sin(t)从0积到t的积分,因此在t=0时,就是0。根据牛顿-莱布尼茨定理,其实积出来的是-cos(t)+cos(0)即1-cos(t),这才是定积分的函数曲线。从你的贴图上看,matlabguy的结果和我的结果也是一样的,都是1-cos(t),而不是您所说的cos(t)+1。你一定要得到-cos(t)的话,就把s_x再减去1即可。还有,-cos(t)和sin(t)的曲线不是重合曲线,是两条不同的曲线,甚至相互正交。要处理离散数据积分,在这几个回答之中也只有我这个方法可行了,因为你没有函数关系,无法调用Simpson函数。
x=sin(t);
s_x=cumtrapz(t,x);%s_x就是x的数值积分
plot(t,x,t,s_x)
___________
楼主请您明白一点,sin(t)的不定积分是-cos(t)+C,C是任意常数,而用数值方法作出来的是定积分,是sin(t)从0积到t的积分,因此在t=0时,就是0。根据牛顿-莱布尼茨定理,其实积出来的是-cos(t)+cos(0)即1-cos(t),这才是定积分的函数曲线。从你的贴图上看,matlabguy的结果和我的结果也是一样的,都是1-cos(t),而不是您所说的cos(t)+1。你一定要得到-cos(t)的话,就把s_x再减去1即可。还有,-cos(t)和sin(t)的曲线不是重合曲线,是两条不同的曲线,甚至相互正交。要处理离散数据积分,在这几个回答之中也只有我这个方法可行了,因为你没有函数关系,无法调用Simpson函数。
展开全部
数值积分有很多种方法, 如下图所示(来自wikipeida)
前面几位的回答,分别对应了里面一种算法,另外,数值积分得到的是一个值,如果你需要画图的话,那是代数积分。
保存为mytest.m
function mytest
a=0;
b=2*pi;
n=100;
f=@(x)sin(x);
y=intSimpsons(f,a,b,n);
t=linspace(a,b,n);
y=intSimpsons(f,a,b,n)
function I = intSimpsons(f,a,b,n)
h=(b-a)/n; xi=a:h:b;
I= h/3*(f(xi(1))+2*sum(f(xi(3:2:end-2)))+4*sum(f(xi(2:2:end)))+f(xi(end)));
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将下面内容保存为Simpson.m
function y= Simpson(f,a,b,M)
% f被积函数;a积分下限;b积分上限;M子区间个数(将x分为多少个区间)
if M==0
y=0;
else
h=(b-a)/(2*M);
s1=0;
s2=0;
for i=1:M
x=a+(2*i-1)*h;
s1=s1+feval(f,x);
end
for j=1:(M-1)
x=a+2*j*h;
s2=s2+feval(f,x);
end
y=h/3*(feval(f,a)+2*s2+4*s1+feval(f,b));
end
在命令行输入
f=@(t)sin(t);
I=[];
M=floor(2*pi/0.01);
for i=0:M
y=Simpson(f,0,2*pi/M*i,i);
I=[I,y];
end
t=0:0.01:2*pi;
plot(t,I);
我服了你了,sint和-cost曲线重合?sint积分得到的是-cost+C,常数C由初始条件决定,一般我们都认为从0开始积分,此时C=1。
数据积分的话用greatdju的方法就行了,他那个结果对,你自己琢磨吧。
function y= Simpson(f,a,b,M)
% f被积函数;a积分下限;b积分上限;M子区间个数(将x分为多少个区间)
if M==0
y=0;
else
h=(b-a)/(2*M);
s1=0;
s2=0;
for i=1:M
x=a+(2*i-1)*h;
s1=s1+feval(f,x);
end
for j=1:(M-1)
x=a+2*j*h;
s2=s2+feval(f,x);
end
y=h/3*(feval(f,a)+2*s2+4*s1+feval(f,b));
end
在命令行输入
f=@(t)sin(t);
I=[];
M=floor(2*pi/0.01);
for i=0:M
y=Simpson(f,0,2*pi/M*i,i);
I=[I,y];
end
t=0:0.01:2*pi;
plot(t,I);
我服了你了,sint和-cost曲线重合?sint积分得到的是-cost+C,常数C由初始条件决定,一般我们都认为从0开始积分,此时C=1。
数据积分的话用greatdju的方法就行了,他那个结果对,你自己琢磨吧。
参考资料: http://zhidao.baidu.com/question/206597476.html
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询