fun=@(x)3log(x);
a=1;
b=2;
epsilon=1e-5;
n=1;
h=(b-a)/2;
y0=h(feval(fun,a)+feval(fun,b));
yiter=y0;
while
1
f=sum(feval(fun,a+(1:2:2n-1)h));
y=y0/2+hf;
if
abs(y-y0)<3epsilon
break;
end
n=n+n;
h=h/2;
y0=y;
yiter=[yiter,y0];
end
y
%%与真值误差
double(int('3log(x)','x',1,2)-y)
y=dsolve('Dy=y/x-y^2/x','y(1)=05','x')
y =
1/(1/x + 1)
y(1)=05;x(1)=1;h=01;
for n=1:99
x(n+1)=x(n)+h;
y(n+1)=y(n)+h( y(n)/x(n)-y(n)^2/x(n));
y(n+1)=y(n)+h/2( y(n)/x(n)-y(n)^2/x(n) +y(n+1)/x(n+1)-y(n+1)^2/x(n+1) );
end
plot(x,y,'y')
mainm
g=@(t)exp(-t^2);
x=linspace(0,5,100);
y1=zeros(1,100);
y2=zeros(1,100);
for i = 1:100
y1(i)=2/sqrt(pi)Simpson(g,0,x(i),1000); %幸普森公式
y2(i)=2/sqrt(pi)trapezoidal(g,0,x(i),1000); %复合梯形公式
end
plot(x,y1,'r-',x,y2,'b');
legend('辛普森公式','复合梯形公式');
Simpsonm
function y = Simpson(f,a,b,M)
% f被积函数;a积分下限;b积分上限;M子区间个数(将x分为多少个区间)
h=(b-a)/(2M);
s1=0;
s2=0;
for i=1:M
x=a+(2i-1)h;
s1=s1+f(x);
end
for j=1:(M-1)
x=a+2jh;
s2=s2+f(x);
end
y=h/3(f(a)+2s2+4s1+f(b));
end
trapezoidalm
function y = trapezoidal(f,a,b,n)
h=(b-a)/n;
x=zeros(1,n+1);
F=zeros(1,n+1);
for k=0:n
x(k+1)=a+kh;
if x(k+1)==0
x(k+1)=10^(-10);
end
end
T_1=h/2(f(x(1))+f(x(n+1)));
for i=2:n
F(i)=hf(x(i));
end
T_2 = sum(F);
y =T_1+T_2;
end
给你挑了半天,你的程序写的有问题, betae(i)=,C(i);
theta(i) beta(i);都是定值,不知道这些数你是从哪里的到这个方程解出来,但是我我要给你说:问题就出在这里,看看是不是数的单位有问题,还是这些数的求解有问题1
以上就是关于求复化梯形求积公式matlab程序全部的内容,包括:求复化梯形求积公式matlab程序、matlab梯形法解微分方程、求两个matlab的程序,分别利用复化梯形公式和辛普森公式求解误差函数erf(x)。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)