数值代数与计算方法
点后9位的结果。用程序7.1计算每个积分。
(b)对习题1中的每个积分,计算M和步长h,使得用组合辛普森公式计算得到精确到小数点后9位的结果。用程序7.2计算每个积分。
P301
1, 利用程序7.4求习题1中的积分,精确到小数点后11位。
P307
1, 用程序7.6求以下定积分的近似值,其实容错 0 0.00001。
(a)
(b) 30sin(2x)dx 51 x
301sin(4x)e 2xdx 1
xdx (c)0.04
高斯赛德尔迭代算法代码:function X = gseid(A, B, P , delta, max1) N = length(B); for k=1:max1 for j =1:N if j==1 X(1)=(B(1)-A(1,2:N)*P(2:N))/A(1,1); elseif j==N X(N)=(B(N)-A(N, 1:N-1)*(X(1:N-1))')/A(N, N); else X(j)=(B(j)-A(j, 1:j-1)*X(1:j-1)'-A(j, j+1:N)*P(j+1:N))/A(j,j); end end
err=abs(norm(X'-P));relerr=err/(norm(X)+eps);P=X'; if(err<delta)||(relerr<delta) break endendX=X';辅助建立矩阵的代码:function P=matrix(n) P=zeros(n,n); P(1,1:3)=[12 -2 1]; P(2,1:4)=[-2 12 -2 1]; for k=3:n-2 P(k,k-2:k+2)=[1 -2 12 -2 1]; end P(n-1,n-3:n)=[1 -2 12 -2]; P(n,n-2:n)=[1 -2 12];function B=matrix2(n) B = zeros(n,1) ; for k=1:50 B(k, 1) = 5 ; end 在matlab中调用编写好的三个函数如下: >> B = matrix2(50)>> A = matrix(50)>> X = gseid(A, B, B, 0.0001, 50)X = 0.4638 0.5373 0.5090 0.4982 0.4989 0.5000 0.5001 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5001 0.5000 0.4989 0.4982 0.5090 0.53730.4638
114569384