1、实验题目
用n=4的复化Simpson公式求积分方程的近似解
2、算法组织
用四区间复化Simpson 公式对积分方程进行化简,求出9个节点值;用四区间的复化Simpson 积分公式将待求积分方程转化为关于
的线性方程组,A为系数矩阵,b中存放积分方程中左端关于x的函数
调用高斯消去法求解线性方程组Ax=b。
1. For i=0,1,…,8
1.1 For j=0,1,…,8
1.1.1 If c_i0=c_i8=1
Else if j%2=0 c_ij=2
Else c_ij=4
2. For i=0,1,…,8
2.1 t=1/8
2.2 For j=0,1,…,8
2.2.1 t1=1/(1+j/8)
2.2.2 If a_ij=1-h/6(t1-t)c_ij
else a_ij=-h/6(t1-t)c_ij
2.3 b_i=f(x_i)
3、源码
%start
x = [0:8]./8;
for i = 1 : 9
for j = 1 : 9
A(i,j) = 1/(1+x(j)) - x(i);
end
end
E_9 = eye(9);
B_diag = diag([ 1 4 2 4 2 4 2 4 1], 0);
h4 = 1/4;
A = E_9 - h4/6*A*B_diag;
b = ( 4*x.^3+ 5*x.^2-2*x+ 5)./(8*(x+1).^2);
Aug = [ A b'];
n = 9;
for j = 1:(n-1)
[d,e] = max( abs(Aug(j:n,j)) );
e = e - 1 + j;
f = Aug(e,:);
Aug(e,:) = Aug(j,:);
Aug(j,:) = f;
if Aug(j,j) == 0
break;
else
for i = (j+1): n
E_temp = eye(n);
E_temp(i,j) = -Aug(i,j)/Aug(j,j);
Aug = E_temp*Aug;
end
end
end
y = zeros(n,1);
b1 = Aug(:,n+1); %column
y(n) = b1(n)/Aug(n,n);
for k = n-1:-1:1
y(k) = ( b1(k)- Aug(k,k+1:n)* y(k+1:end) )/Aug(k,k);
end
disp('点y[i]的函数值:');
for j = 1:9
fprintf('y[%d]=%f\t\n', j-1, y(j));
end
S = ( y(1)+ 4*(y(2)+y(4)+y(6)+y(8))+ 2*(y(3)+y(5)+y(7))+ y(9) )/24;
fprintf('S=%f\n', S);