1、while abs(xk-x0)eps k=k+1 p=xk xk=(sin(x0)+12*(x0)-1)(1/3) x0=pend.调试:x=roots(3.1415926,0.000001)k = 1xk = 3.3232 2p =x0 =.实验小结:基本掌握了简单迭代法求解非线性方程组的方法,对程序有了初步了解。实验二解线性方程组的直接法1掌握高斯(Gauss)消元法及选列主元素的技术2掌握追赶法用追赶法求求下述三对角线性方程组的解追赶法求解线性方程组。2. 算法描述:对三对角线矩阵的LU分解。function x = zgf(a,b,c,d)x = d;n = length(x);fo
2、r j = 1:n-1 mu = a(j)/b(j); b(j+1) = b(j+1) - mu*c(j); x(j+1) = x(j+1) - mu*x(j);x(n) = x(n)/b(n);for j = n-1:-1:1 x(j) = (x(j)-c(j)*x(j+1)/b(j);4.调试:-0.2667 -0.2000 -0.1333 -0.06675.实验小结:掌握了追赶法解决三对角线性方程的基本解法。实验三解线性方程组的迭代法1.理解迭代法的基本原理及特点。 2.掌握jacobi迭代和Gauss-Seidel迭代格式的分量形式,矩阵形式及其各自特点。 3. 掌握jacobi迭代和
3、Gauss-Seidel迭代算法的程序实现方法。用雅可比迭代法求下述线性方程组的解要求:选取不同初值x0, 对于给定精度=10-6,用三种迭代法计算,观察迭代次数并分析计算结果给出结论。雅克比迭代。Ax=b,A=L+D+U,迭代公式:x=-D-1 (L+U)x+ D-1bx=-D-1 (L+U)x+ D-1function x=jacobiff(a,b,eps)n=length(a);d=diag(diag(a);l=tril(a,-1);u=triu(a,1);x0=diag(zeros(n);x=-inv(d)*(l+u)*x0+inv(d)*bwhile norm(x-x0)eps; p
4、=x; x=-inv(d)*(l+u)*x+inv(d)*b x0=p;4. 调试: a=-3 -1 0 0;-1 2 -1 0;0 -1 2 -1;0 0 -1 2; b=1 0 0 0; jacobiff(a,b,0.000001)k =1x =-0.3333 0k =2 -0.1667k =3x =-0.2778 -0.0833k =4 -0.1806 -0.0417k =5x =-0.2731 -0.1111k =6 -0.1921 -0.0556k =7x =-0.2693 -0.1238k =8 -0.1966 -0.0619k =9x =-0.2678 -0.1292k =10
5、-0.1985 -0.0646k =11x =-0.2672 -0.1316k =12 -0.1994 -0.0658k =13x =-0.2669 -0.1326k =14 -0.1997 -0.0663k =15x =-0.2668 -0.1330k =16 -0.1999 -0.0665k =17x =-0.2667 -0.1332 k =18 -0.1332 -0.0666k =19 -0.1333k =20 -0.2000k =21k =22 -0.0667k =23k =24k =25k =26k =27k =28k =29k =30ans =-0.26675. 实验小结:实现了实
6、验目的,掌握了雅克比迭代的基本算法。实验四插值法与曲线拟合1掌握拉格朗日(Lagrange)插值法及余项公式2掌握Newton插值多项式的构造与应用,差商、差分的计算及基本性质。3 掌握曲线拟合的最小二乘法用牛顿插值多项式求x分别在0.5,0.85,1.05三点处的函数值。y=f(x)的函数表x0.4 0.55 0.65 0.8 0.9y0.4175 0.57815 0.69657 0.88811 1.026521 设计思路:利用已给函数表,结合牛顿差值多项式求解问题。2 算法描述:列出均差表,求出牛顿插值多项式,从而得到所求点的函数值。#include using namespace std
7、; void Newton(double a,double b,int n) double g5; int i,j; for(i=1;in;i+) g0=bi; for(j=0;ji;j+) gj+1=(gj-bj)/(ai-aj); bi=gi; return;main() int i,n=4; double a=0.4,0.55,0.65,0.8,0.9,b=0.4175,0.57815,0.69657,0.88811,1.02652; double x,y; coutx; Newton(a,b,n); y=b4; for(i=n-1;i=0;i-) y=y*(x-ai)+bi; prin
8、tf(y=%f,y);return 0; 0.521925 0.956438 1.2675656. 实验小结:利用c语言便写了算法,思路更直接,易懂。实验五数值积分1理解数值积分的基本思想、基本方法和基本理论2掌握数值积分公式的导出方法3掌握构造插值型求导公式的步骤、牛顿-柯特斯公式和变步长求积和龙贝格算法4了解高斯(Gauss)型求积公式的概念及导出方法以及数值微分机械求导法和插值求导公式用复化梯形求积公式,求定积分的值,要求误差不超过。用复化梯形求积公式求定积分的值。 =(h/2)(3*ln1+3*ln2+2*3*ln(xk)function Trapezia(a,b,fx,E,N)h=(
9、b-a)/2;a=a+E/10;T0=h*(subs(fx,a)+subs(fx,b);T=0;for m=1:N F=0; for k=1:2(m-1) F=F+subs(fx,a+(2*k-1)*h); end T=0.5*T0+h*F; if abs(det(T-T0)3*E break; else h=h/2; T0=T; fprintf(k=%dth=%ftI=%fn,m,h,T);fprintf(n*end*n);1.158885实验小结:实验六常微分方程初值问题的数值解法1掌握常微分方程数值的基本解法、构造方法的基本思想及其各方法的异同点。2.掌握Euler法和改进欧拉法、隐式欧
10、拉法和梯形方法的基本公式和构造方法。给定的初值问题, 按梯形法,改进的欧拉法及欧拉法,步长h=0.05, h=0.01求解上述初值问题。*编写秦九韶算法程序,并用该程序计算多项式在的值#define n 5double xn;double bn;double x0;int i;coutxi;输入求值点x0x0;b0=x0;for(i=1;bi=bi-1*x0+xi;输出求值结果:bn-13 调试:9.40351 11.2723 13.70394 实验小结:%用来就数值积分%fx是由syms定义的函数表达式n*start*n%用来减少出现除数为零的情况 %比如对含有1/x的函数积分且积分区间从0开始%在梯形公式及Simpson公式算法中必然出现除数为零的情况%当然我们可以在这之前就对被积函数做一定变形处理 比如分部积分将分母移走 %不过我更愿意采用更简单的做法 将积分下限加一个非常小的数 使之不等于零%这种处理方法对于精度要求几乎没有影响 %当然who有更好的方法欢迎交流一下!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1