计算机与信息工程学院数值分析实验报告计科专业2013级2班 姓名:_________学号:________ 注:实验平台为VS2013实验一:Lagrange 插值法一、 实验目的(1)通过实验掌握Lagrange 插值法; (2)学会用编程语言求解具体插值问题。
二、实验题目:按Lagrange 插值算法编程求出f(0.596)的近似值;三、实验原理若给定两个插值点),(),,(1100y x y x ,其中10x x ≠,在公式中取1=n ,则Lagrange 插值多项式为: )()()()()()(001010010110101x x x x y y y x x x x y x x x x y x p ---+=--+--=是经过),(),,(1100y x y x 的一条直线,故此法称为线性插值法。
若函数给定三个插值点 2,1,0),,(=i y x i i ,,其中i x 互不相等,在公式中取1=n ,则Lagrange 插值多项式为:))(())(())(())(())(())(()(1202102210120120102102x x x x x x x x y x x x x x x x x y x x x x x x x x y x p ----+----+----=这种插值法称为二次插值或抛物插值。
四、实验内容与步骤五、实验程序六、实验结果及其分析教师评语: 实验成绩:_____计算机与信息工程学院数值分析实验报告实验二:最小二乘法一、 实验目的(1)掌握最小二乘法的基本思路和拟合步骤; (2)培养编程与上机调试能力。
二、 实验题目i x 1 2 3 4 5i y 4 4.5 6 8 8.5 i w 2 1 3 1 1三、 实验原理已知数据对()(),1,2,,j j x y j n =,求多项式0()()mi i i p x a x m n ==<∑使得20110(,,,)nm i n i j j j i a a a a x y ==⎛⎫Φ=- ⎪⎝⎭∑∑为最小,这就是一个最小二乘问题。
四、实验内容与步骤已知一组数据如下,求它的线性拟合曲线。
i x 12 3 4 5 i y 4 4.5 6 8 8.5 i w2 13 1 1用线性函数()p x a bx =+为例,拟合给定数据(),,1,2,,i i x y i m =。
算法描述: 步骤1:输入m 值,及(),,1,2,,i i x y i m =。
步骤2:建立法方程组T A AX AY =。
步骤3:解法方程组。
步骤4:输出()p x a bx =+。
五、实验程序六、实验结果及其分析教师评语: 实验成绩:_____计算机与信息工程学院数值分析实验报告实验三:复化梯形公式逐次分半求积法一、 实验目的(1)掌握复化梯形公式逐次分半求积法的流程图的画法; (2)通过数值实验,掌握基本的数值积分方法; (3)编程并以教材中数据检验程序正确性。
二、 实验题目复化梯形公式逐次分半求积法计算积分值dx xxI ⎰=1sin 。
三、 实验原理求积分值dx x f I ba ⎰=)(的梯形公式是:)]()([2)(b f a f ab dx x f I ba+-≈=⎰ ;复化梯形公式:])()(2)([2)]()([211110∑∑-=+-=++=+=n k k k k n k n b f x f a f hx f x f h T ;实际计算中常采用变步长的计算方案,即在步长逐次减半(即步长二分)的过程中,反复利用复化求积公式进行计算,直到所求得的积分值满足精度要求为止。
设将求积区间],[b a 分为n 等分,则一共得到1+n 个等分点kh a x k +=,nab h -=,n k ,,1,0 =。
用n T 表示复化梯形法求得的积分值,其下标n 表示等分数。
递推公式如下:∑-=++=1212)(221n k k n n x f h T T ,其中na b h -=代表二分前的步长,h k a xk )21(21++=+。
四、实验内容与步骤 1.给出积分dx xxI ⎰=1sin 。
2.编程实现积分求值。
五、实验程序#include <stdio.h> #include <math.h> #include <string>double integral(double a , double b , double (*f )(double ), double eps ) { double n = 1;double h = (b - a ) / 2; double Tn = h * (f (a ) + f (b )); double T2n = 0;while (1) { double sumf = 0; int i;for (i = 1; i <= n; ++i) { sumf += f (a + (2 * i - 1) * h);}if (fabs(T2n - Tn) < 3 * eps )break ;T2n = Tn / 2 + h * sumf;Tn = T2n;n *= 2;h /= 2;}return T2n;}double func(double x){if (!x){return 1;}else{return (sin(x) / x);}}int main(void){printf_s("%s%.7f\n", "sin(x)/x在[0, 1]的积分值为:", integral(0, 1, func, 1e-8));system("pause");return 0;}六、实验结果及其分析教师评语:实验成绩:_____ 计算机与信息工程学院数值分析实验报告实验四:数值微分一、实验目的1.通过数值实验,掌握基本的数值微分方法;2.提高编程实现数值计算的能力。
二、实验题目x=处的导数。
实验测得一组数据如下,求0.8x0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 f0.48 0.38 0.31 0.33 0.36 0.41 0.51 0.43 0.35 0.29 0.28 )(x所给数据为等距节点,采用插值型数值求导中的三点公式,编程求导。
三、实验原理四、实验内容与步骤1.实验内容x=处的导数。
实验测得一组数据如下,求0.8x0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 )f0.48 0.38 0.31 0.33 0.36 0.41 0.51 0.43 0.35 0.29 0.28 (x2.实验内容(1)编程实现导函数的构造;(2)将相关数据代入求得数值求导的值。
clearx=0:0.1:1;y=[0.48 0.38 0.31 0.33 0.36 0.41 0.51 0.43 0.35 0.29 0.28];h=0.1;for i=2:(length(x)-1);dy(i)=(y(i+1)-y(i-1))/2/h;enddy(1)=(2*y(2)-1.5*y(1)-0.5*y(3))/h; %dy(length(x))=(1.5*y(length(y))-2*y(length(y)-1)+0.5*y(length(y)-2)) fprintf('\n%s \t\t%s \t\t%s','No','f(x)','dy/dx')fprintf('\n---------------------------')for i=1:length(x)fprintf('\n%d \t\t%.2f \t\t%.2f',i,y(i),dy(i))end六、实验结果及其分析教师评语:实验成绩:_____ 计算机与信息工程学院数值分析实验报告实验五:求解微分方程的龙格-库塔方法(1)掌握四阶Runge-Kutta 方法的编程; (2)实现求解常微分方程初值问题。
二、 实验题目用四阶龙格-库塔公式解初值问题:⎪⎩⎪⎨⎧=-=1)0(2'y y x y y )10(<<x ,2.0=h三、 实验原理求解初值问题'0()(,)()()y x f x y a x b y a y ⎧=≤≤⎨=⎩对上述给定的(,)f x y ,用四阶龙格-库塔法求解常微分方程初值问题112341213243(22)6(,)11(,)2211(,)22(,)n n n n n n n n n n h y y k k k k k f x y k f x h y hk k f x h y hk k f x h y hk +⎧=++++⎪⎪=⎪⎪⎪=++⎨⎪⎪=++⎪⎪=++⎪⎩ 四、实验内容与步骤用四阶龙格-库塔公式解初值问题:⎪⎩⎪⎨⎧=-=1)0(2'y y x y y )10(<<x ,2.0=h 五、实验程序六、实验结果及其分析教师评语:实验成绩:_____ 计算机与信息工程学院数值分析实验报告实验六:牛顿迭代法求方程的根一、实验目的(1)掌握用牛顿迭代法的程序设计; (2)解决收敛加速问题。
二、 实验题目用牛顿法求方程013=--x x 在5.1=x 附近的一个根。
三、 实验原理给定初始值0x ,ε为根的容许误差,η为()f x 的容许误差,N 为迭代次数的容许值。
① 如果'0()0f x =或迭代次数大于N ,则算法失败,结束;否则执行②; ② 计算010'0()()f x x x f x =-; ③ 若10x x ε-<或1()f x η<,则输出1x ,程序结束;否则执行④; ④ 令01x x =,转向① 四、实验内容与步骤① 如果'0()0f x =或迭代次数大于N ,则算法失败,结束;否则执行②; ② 计算010'0()()f x x x f x =-; ③ 若10x x ε-<或1()f x η<,则输出1x ,程序结束;否则执行④;④ 令01x x =,转向①五、实验程序#include<math.h>#include<stdio.h>#include<string>int main(void){float x, x0, f, f1;x = 1.5;do{x0 = x;f = 2 * x0 * x0 * x0 - 4 * x0 * x0 + 3 * x0 - 6;f1 = 6 * x0 * x0 - 8 * x0 + 3;x = x0 - f / f1;} while (fabs(x - x0) >= 1e-5);printf_s("x = %f\n", x);system("pause");return 0;}六、实验结果及其分析教师评语:实验成绩:_____计算机与信息工程学院数值分析实验报告实验七:高斯消去法一、 实验目的(1) 掌握高斯消去法的基本思路和迭代步骤; (2) 培养编程与上机调试能力 二、 实验题目解方程组1231231230.101 2.304 3.555 1.1831.347 3.712 4.6232.1372.835 1.072 5.6433.035x x x x x x x x x ++=⎧⎪-++=⎨⎪-++=⎩三、 实验原理(1)高斯消去法基本思路设有方程组Ax b =,设A 是可逆矩阵。