matlab如何画数值积分运算中的小方格,并且线不同颜色,如图。如何用matlab编如图二所示的辛普森方程
发布网友
发布时间:2022-04-23 10:49
我来回答
共1个回答
热心网友
时间:2023-10-11 18:35
ff=input('function:','s');%注意乘与点乘,要用点乘,如exp(-x/4).*cos(x)
fun=eval(['@(x)',ff]);
x0=input('x0:');
x1=input('x1:');
n=input('n:');%偶数
h=(x1-x0)/n;
x=x0:h:x1;x=x(:)';
y=fun(x);
f=[2*ones(1,n/2+1);4*ones(1,n/2+1)];f=f(:)';f(1)=1;f(end)=[];f(end)=1;
%数值积分
Int=h/3*sum(f.*y);
xx=repmat(x(:)',2,1);xx=xx(2:end);xx=xx(:);
yy=repmat(y(:)',2,1);yy=yy(1:end-1);yy=yy(:);
plot(x,y,'k')
hold on
plot(xx,yy,'r');
plot(repmat(x(1:2:end),2,1),[zeros(size(x(1:2:end)));y(1:2:end)],'b')
plot(repmat(x(2:2:end),2,1),[zeros(size(x(2:2:end)));y(2:2:end)],'g')
plot([x0,x1],[0,0],'k');
xlabel('X')
ylabel('Y')
title(['Numeric integration of ',ff,' with ',num2str(n),' slices'])
vpa(Int,10)%数值解
%%下面是符号解
vpa(int(sym(strrep(strrep(ff,'.*','*'),'./','/')),x0,x1),10)