数值积分
h=0.01;
x=0:h:1;
y=4./(1+x.^2);
format long
t=length(x); %数组长度
z1=sum(y(1:(t-1)))*h %矩形公式2
z2=sum(y(2:t))*h %矩形公式2
z3=trapz(x,y) %梯形公式
z4=quad('4./(1+x.^2)',0,1) %辛普森公式
方程组的解法1-雅可比迭代
X0=[0,0,0]';
A=[10,-1,-2;-1,10,-2;-1,-1,5];
b=[7.2,8.3,4.2]';
X1=A\b;
t=[];
n=10;
for k=1:n
for j=1:3
X(j)=(b(j)-A(j,[1:j-1,j+1:3])*X0([1:j-1,j+1:3]))/A(j,j); end
t=[t;X'];
X0=X;
end
disp('方程组的解')
X1
disp('迭代10步的解')
X
disp('方程组每次迭代的解')
t
方程组的解法2—高斯塞德尔迭代
X=[0,0,0]';
A=[10,-1,-2;-1,10,-2;-1,-1,5];
b=[7.2,8.3,4.2]';
X1=A\b;
t=[];
n=10;
for k=1:n
for j=1:3
X(j)=(b(j)-A(j,[1:j-1,j+1:3])*X([1:j-1,j+1:3]))/A(j,j);
end
t=[t,X];
end
disp('方程组的解')
X1
disp('迭代10步的解')
X
disp('方程组每次迭代的解')
t'
常微分方程
x0=0;
xf=1;
y0=pi/2;
[x,y]=ode23('funst',[x0,xf],y0);
yy=(x+pi/2)./cos(x);%精确解
[x,y,yy]
不要忘记funst.m也是个文件名,调用的,和这段程序放在同一文件夹下面
插值方法
x=0:1:6;
y=cos(x);
xi=0:0.25:6;
yi1=interp1(x,y,xi,'linear');
yi2=interp1(x,y,xi,'cubic');
plot(x,y,'*',xi,yi1,xi,yi2)
在MATLAB中,一维多项式插值的方法通过命令interp1(x,y,xi,method)实现,其具体的调用格式如下:
插值的方法method参数的取值和对应的含义如下:
∙linear:线性插值(linear interpolation)
∙pchip:分段三次厄米特多项式差值(piecewise cubic Hermite interpolation)。
∙cubic:三次多项式插值,与分段三次厄米特插值方法相同。
各种插值方法的比较
方法说明
linear 执行速度较快,有足够的精度,最为常用,而且为默认设置。
cubic 较慢,精度高,平滑度好,当希望得到平滑的曲线时可以使用该选项。