桂电七院数值分析实验报告四

该实验详细介绍了如何使用Matlab进行数值积分,包括内置函数`trapz`和`quad`的使用,以及自定义复化梯形和复化辛普生公式实现。实验比较了两种方法在计算积分`∫014/(1+x^2)dx`时的速度,结果显示复化辛普生公式更快。此外,还利用复化梯形公式和描点法描绘了积分上限函数`∫1xsint/t dt`在区间[2,50]的图形。
摘要由CSDN通过智能技术生成

实验目的

通过实验掌握利用Matlab进行数值积分的操作,深刻理解复化梯形,复化辛普生公式。

实验原理

Matlab中,有内置函数计算积分:
>> z = trapz(x,y)
其中,输入x,y分别为已知数据的自变量和因变量构成的向量,输出为积分值。
>> z = quad(fun,a,b)
这个命令是使用自适应求积的方法计算积分的命令。其中,fun为被积函数,a,b为积分区间。
我们还可以利用复化梯形公式
在这里插入图片描述
编写Matlab程序

function s=tixing(a,b,n)  
%输出s为积分的数值解,输入(a,b)为积分区间,n为等分区间的个数.
x=a:(b-a)/n:b;
s=(b-a)/n/2*(f(x(1))+f(x(n+1))); 
for i=2:n
    s=s+(b-a)/n*f(x(i));       
end

注意,首先需要将定积分 I = ∫ a b f ( x ) d x I = \int_a^b {f\left( x \right)dx} I=abf(x)dx
的被积函数 f ( x ) {f\left( x \right)} f(x)存储为m文件f.m,方可使用以上复化梯形法的程序。

实验内容与步骤

  1. 复化辛普生公式的表达式不唯一,但本质相同,首先确定复化辛普生公式的一种表达,编写复化辛普生公式的Matlab的程序。
    复化辛普生如下:
    在这里插入图片描述
  2. 利用复化辛普生程序计算 I = ∫ 0 1 4 1 + x 2 d x I = \int_0^1 {{4 \over {1 + {x^2}}}} dx I=011+x24dx,与复化梯形公式的情况比较速度。
    在函数运行前加上tic,函数结束之前加上toc,可以查看输出时间,同时设置分为50个小的区间,比较输出时间,输出时间短的速度快。复化梯形公式历时0.000856 秒,复化辛普生公式历时 0.000763 秒,所以复化辛普生公式速度更快。
    3.积分 ∫ sin ⁡ x x d x \int_{}^{} {{{\sin x} \over x}dx} xsinxdx
    的原函数无法用初等函数表达,但可以用积分上限函数表达。结合Matlab复化梯形程序,用描点法绘制其原函数 ∫ 1 x sin ⁡ t t d t \int_1^x {{{\sin t} \over t}dt} 1xtsintdt
    在区间 x ∈ [ 2 , 50 ] x \in [2,50] x[2,50]的图形。
    f.m
function y=f(x)
y=4*(1+x.^2).^(-1);

tixing.m

function s=tixing(a,b,n)  
%输出s为积分的数值解,输入(a,b)为积分区间,n为等分区间的个数.
tic
format long
x=a:(b-a)/n:b;
s=(b-a)/n/2*(f(x(1))+f(x(n+1))); 
for i=2:n
    s=s+(b-a)/n*f(x(i));       
end
toc

Sn.m

function Sn = Sn(a,b,n)      
    format long
    h = (b-a)/n;
    sum1 = 0;
    sum2 = 0;
    for i = 0:n-1
        sum1 = sum1 + f(a+(i+1/2).*h);
    end
    for j = 1:n-1
        sum2 = sum2 + f(a+j.*h);
    end
Sn = h/6*(f(a)+4*sum1+2*sum2+f(b));

tixing1.m

function s=tixing1(a,b,n)  
%输出s为积分的数值解,输入(a,b)为积分区间,n为等分区间的个数.
x=a:(b-a)/n:b;
s=(b-a)/n/2*(g(x(1))+g(x(n+1))); 
for i=2:n
    s=s+(b-a)/n*g(x(i));       
end

question3.m

y=[];
j=0;
for x=2:0.05:50
    j=j+1;
    y(j)=tixing1(1,x,50);
end
x1=2:0.05:50;
plot(x1,y,'-')
课题一: 线性方程组的迭代法 一、实验内容 1、设线性方程组 = x = ( 1, -1, 0, 1, 2, 0, 3, 1, -1, 2 ) 2、设对称正定阵系数阵线方程组 = x = ( 1, -1, 0, 2, 1, -1, 0, 2 ) 3、三对角形线性方程组 = x = ( 2, 1, -3, 0, 1, -2, 3, 0, 1, -1 ) 试分别选用Jacobi 迭代法,Gauss-Seidol迭代法和SOR方法计算其解。 二、实验要求 1、体会迭代法求解线性方程组,并能与消去法做以比较; 2、分别对不同精度要求,如 由迭代次数体会该迭代法的收敛快慢; 3、对方程组2,3使用SOR方法时,选取松弛因子 =0.8,0.9,1,1.1,1.2等,试看对算法收敛性的影响,并能找出你所选用的松弛因子的最佳者; 4、给出各种算法的设计程序和计算结果。 三、目的和意义 1、通过上机计算体会迭代法求解线性方程组的特点,并能和消去法比较; 2、运用所学的迭代法算法,解决各类线性方程组,编出算法程序; 3、体会上机计算时,终止步骤 (予给的迭代次数),对迭代法敛散性的意义; 4、体会初始解 x ,松弛因子的选取,对计算结果的影响。 课题二:数值积分 一、实验内容 选用复合梯形公式,复合Simpson公式,Romberg算法,计算 (1) I = (2) I = (3) I = (4) I = 二、实验要求 1、 编制数值积分算法的程序; 2、 分别用两种算法计算同一个积分,并比较其结果; 3、 分别取不同步长 ,试比较计算结果(如n = 10, 20等); 4、 给定精度要求 ,试用变步长算法,确定最佳步长。 三、目的和意义 1、 深刻认识数值积分法的意义; 2、 明确数值积分精度与步长的关系; 3、 根据定积分的计算方法,可以考虑二重积分的计算问题。 、流程图设计
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值