西南交通大学2018-2019数值分析Matlab上机实习题
西南交通大学2018-2019数值分析Matlab上机实习题
西南交通⼤学2018-2019数值分析Matlab上机实习题数值分析2018-2019第1学期上机实习题f x,隔根第1题.给出⽜顿法求函数零点的程序。
调⽤条件:输⼊函数表达式()a b,输出结果:零点的值x和精度e,试取函数区间[,],⽤⽜顿法计算附近的根,判断相应的收敛速度,并给出数学解释。
1.1程序代码:f=input('输⼊函数表达式:y=','s');a=input('输⼊迭代初始值:a=');delta=input('输⼊截⽌误差:delta=');f=sym(f);f_=diff(f); %求导f=inline(f);f_=inline(f_);c0=a;c=c0-f(c0)/f_(c0);n=1;while abs(c-c0)>deltac0=c;c=c0-f(c0)/f_(c0);n=n+1;enderr=abs(c-c0);yc=f(c);disp(strcat('⽤⽜顿法求得零点为',num2str(c)));disp(strcat('迭代次数为',num2str(n)));disp(strcat('精度为',num2str(err)));1.2运⾏结果:run('H:\Adocument\matlab\1⽜顿迭代法求零点\newtondiedai.m')输⼊函数表达式:y=x^4-1.4*x^3-0.48*x^2+1.408*x-0.512输⼊迭代初始值:a=1输⼊截⽌误差:delta=0.0005⽤⽜顿法求得零点为0.80072迭代次数为14精度为0.00036062⽜顿迭代法通过⼀系列的迭代操作使得到的结果不断逼近⽅程的实根,给定⼀个初值,每经过⼀次⽜顿迭代,曲线上⼀点的切线与x轴交点就会在区间[a,b]上逐步逼近于根。
上述例⼦中,通过给定初值x=1,经过14次迭代后,得到根为0.80072,精度为0.00036062。
MATLAB上机实验练习题及答案
MATLAB上机实验练习题及答案09级MATLAB上机实验练习题1、给出一个系数矩阵A[2 3 4;5 4 1;1 3 2],U=[1 2 3],求出线性方程组的一个精确解。
2、给出两组数据x=[0 0.3 0.8 1.1 1.6 2.3]’y=[0.82 0.72 0.63 0.60 0.55 0.50]’,我们可以简单的认为这组数据在一条衰减的指数函数曲线上,y=C1+C2e-t通过曲线拟合求出这条衰减曲线的表达式,并且在图形窗口画出这条曲线,已知的点用*表示。
3、解线性方程4、通过测量得到一组数据:5、已知一组测量值6、从某一个过程中通过测量得到:分别采用多项式和指数函数进行曲线拟合。
7、将一个窗口分成四个子窗口,分别用四种方法做出多峰函数的表面图(原始数据法,临近插值法,双线性插值法,二重三次方插值法)8、在同一窗口使用函数作图的方法绘出正弦、余弦、双曲正弦、双曲余弦。
分别使用不同的颜色,线形和标识符。
9、下面的矩阵X表示三种产品五年内的销售额,用函数pie显示每种产品在五年内的销售额占总销售额的比例,并分离第三种产品的切片。
X= 19.3 22.1 51.634.2 70.3 82.4 61.4 82.9 90.8 50.5 54.9 59.1 29.4 36.3 47.010、对应时间矢量t ,测得一组矢量y采用一个带有线性参数的指数函数进行拟合,y=a 0+a 1e -t +a 2te -t ,利用回归方法求出拟合函数,并画出拟合曲线,已知点用圆点表示。
11、请创建如图所示的结构数组(9分)12、创建如图所示的元胞数组。
(9分)13、某钢材厂从1990年到2010年的产量如下表所示,请利用三次样条插值的方法计算1999年该钢材厂的产量,并画出曲线,已知数据用‘*’表示。
要求写出达到题目要求的MATLAB 操作过程,不要求计算结果。
14、在一次化学动力学实验中,在某温度下乙醇溶液中,两种化合物反应的产物浓度与反应时间关系的原始数据如下,请对这组数据进行三次多项式拟合,并画出拟合曲线,已知数据如下。
西南交大MATLAB上机题解
西南交大MATLAB上机题解序言根据实习内容及自身学习情况,文章采用的计算软件是MATLAB。
通过在该软件M文件中编写相应程序来解决实习内容中的问题。
MATLAB软件的发展已经30多年,过程中不断的版本升级和功能完善,使得该软件具有非常强大的编程和计算能力,也使其成为当前世界上应用最普遍的计算软件之一。
作为一款不断发展的计算软件,MATLAB具有6个非常突出的特点:(1)友好的工作平台和编程环境;(2)简单易用的编程语言;(3)强大的科学计算数据处理能力;(4)出色的图形处理功能;(5)应用广泛的模块集合工具箱;(6)实用的程序接口和发布平台。
这些特点保证了MATLAB软件能够长期在工程界和学术界得到应用。
科学计算长期以来都是MATLAB软件擅长的部分。
MATLAB的科学计算环境不仅提供了大量用于计算的函数库、工具箱,而且还提供了功能强大的计算绘图能力,其主要的优点有以下几个方面:(1)MATLAB几乎集成了当前所有科学研究领域和工程计算领域的算法,使得软件的科学计算能力非常的强大,同时该软件默认的计算精度是双精度,保证了计算结果的高准确性。
(2)MATLAB将高性能的数值计算和可视化集成在一起,同时提高大量的内置函数和开放的程序和数据接口,使得该软件能够在科学计算、控制系统与信息处理等领域的分析、仿真和设计大展身手。
(3)MATLAB包含各种能够进行常规运算的工具箱,同时具有编程计算功能。
(4)MATLAB能够将计算的结果绘制成二维和三维图形,增强了计算结果的可视化程度。
(5)MATLAB的编程语言是一种解释执行的脚本语言,简单易学。
文章采用MATLAB软件完成数值分析的上机实习时基于以下几个方面的考虑:(1)前期对MATLAB软件有一定程度的了解,能够利用该软件做一些简单的矩阵计算。
(2)MATLAB的编程语言和C++的编程语言有很多相通的地方,而本科时候学过C++编程,对一些基础的编程掌握比较好,容易实现MATLAB编程计算。
数值分析计算实习题
数值分析计算实习题-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN《数值分析》计算实习题姓名:学号:班级:第二章1、程序代码Clear;clc;x1=[ ];y1=[ ];n=length(y1);c=y1(:);for j=2:n %求差商for i=n:-1:jc(i)=(c(i)-c(i-1))/(x1(i)-x1(i-j+1));endendsyms x df d;df(1)=1;d(1)=y1(1);for i=2:n %求牛顿差值多项式df(i)=df(i-1)*(x-x1(i-1));d(i)=c(i-1)*df(i);endP4=vpa(sum(d),5) %P4即为4次牛顿插值多项式,并保留小数点后5位数pp=csape(x1,y1, 'variational');%调用三次样条函数q=;q1=q(1,:)*[^3;^2;;1];q1=vpa(collect(q1),5)q2=q(1,:)*[^3;^2;;1];q2=vpa(collect(q2),5)q3=q(1,:)*[^3;^2;;1];q3=vpa(collect(q3),5)q4=q(1,:)*[^3;^2;;1];q4=vpa(collect(q4),5)%求解并化简多项式2、运行结果P4 =*x - *(x - *(x - - *(x - *(x - *(x - - *(x - *(x - *(x - *(x - + q1 =- *x^3 + *x^2 - *x +q2 =- *x^3 + *x^2 - *x + q3 =- *x^3 + *x^2 - *x + q4 =- *x^3 + *x^2 - *x +3、问题结果4次牛顿差值多项式4()P x = *x - *(x - *(x - - *(x - *(x - *(x - - *(x - *(x - *(x - *(x - +三次样条差值多项式()Q x0.10.20.30.40.50.60.70.80.910.40.50.60.70.80.911.1323232321.33930.803570.40714 1.04,[0.2,0.4]1.3393 1.60710.88929 1.1643,[0.4,0.6]1.3393 2.4107 1.6929 1.4171,[0.6,0.8]1.3393 3.21432.8179 1.8629,[0.8,1.0]x x x x x x x x x x x x x x x x ⎧-+-+∈⎪-+-+∈⎪⎨-+-+∈⎪⎪-+-+∈⎩第三章1、程序代码Clear;clc; x=[0 1]; y=[1 ];p1=polyfit(x,y,3)%三次多项式拟合 p2=polyfit(x,y,4)%四次多项式拟合 y1=polyval(p1,x);y2=polyval(p2,x);%多项式求值plot(x,y,'c--',x,y1,'r:',x,y2,'y-.')p3=polyfit(x,y,2)%观察图像,类似抛物线,故用二次多项式拟合。
数值计算上机实习题目(matlab编程)
数值计算上机实习题目(matlab编程)非线性方程求根一、实验目的本次实验通过上机实习,了解迭代法求解非线性方程数值解的过程和步骤。
二、实验要求1、用迭代法求方程230x x e -=的根。
要求:确定迭代函数?(x),使得x=?(x),并求一根。
提示:构造迭代函数2ln(3)x ?=。
2、对上面的方程用牛顿迭代计算。
3、用割线法求方程3()310f x x x =--=在02x =附近的根。
误差限为410-,取012, 1.9x x ==。
三、实验内容1、(1)首先编写迭代函数,记为iterate.mfunction y=iterate(x)x1=g(x); % x 为初始值。
n=1;while(abs(x1-x)>=1.0e-6)&(n<=1000) % 迭代终止的原则。
x=x1;x1=g(x);n=n+1;endx1 %近似根n %迭代步数(2)后编制函数文件?(x),记为g.mfunction y=g(x)y=log(3*x.^2);(3)设初始值为0、3、-3、1000,观察初始值对求解的影响。
将结果记录在文档中。
>>iterate(0)>>iterate(3) 等等2、(1)首先编制牛顿迭代函数如下,记为newton.mfunction y=newton(x0)x1=x0-fc(x0)/df(x0); % 牛顿迭代格式n=1;while(abs(x1-x0)>=1.0e-6)&(n<=1000000) % 迭代终止的原则。
x0=x1;x1=x0-fc(x0)/df(x0);n=n+1;endx1 %近似根n %迭代步数(2)对题目中的方程编制函数文件,记为fc.mfunction y=fc(x)y=3*x.^2-exp(x)编制函数的导数文件,记为df.mfunction y=df(x)y=6*x-exp(x)(3)在MATLAB 命令窗计算,当设初始值为0时,newton(0);给定不同的初始值,观察用牛顿法求解时所需要的迭代步数,并与上面第一题的迭代步数比较。
数值分析计算实习题答案
数值分析计算实习题答案数值分析计算实习题答案数值分析是一门研究如何利用计算机对数学问题进行近似求解的学科。
在数值分析的学习过程中,实习题是一种重要的学习方式,通过实践来巩固理论知识,并培养解决实际问题的能力。
本文将为大家提供一些数值分析计算实习题的答案,希望能够帮助大家更好地理解和掌握数值分析的相关知识。
一、插值与拟合1. 已知一组数据点,要求通过这些数据点构造一个一次插值多项式,并求出在某一特定点的函数值。
答案:首先,我们可以根据给定的数据点构造一个一次插值多项式。
假设给定的数据点为(x0, y0), (x1, y1),我们可以构造一个一次多项式p(x) = a0 + a1x,其中a0和a1为待定系数。
根据插值条件,我们有p(x0) = y0,p(x1) = y1。
将这两个条件代入多项式中,可以得到一个方程组,通过求解这个方程组,我们就可以确定a0和a1的值。
最后,将求得的多项式代入到某一特定点,就可以得到该点的函数值。
2. 已知一组数据点,要求通过这些数据点进行最小二乘拟合,并求出拟合曲线的表达式。
答案:最小二乘拟合是一种通过最小化误差平方和来找到最佳拟合曲线的方法。
假设给定的数据点为(x0, y0), (x1, y1),我们可以构造一个拟合曲线的表达式y =a0 + a1x + a2x^2 + ... + anx^n,其中a0, a1, ..., an为待定系数。
根据最小二乘拟合原理,我们需要最小化误差平方和E = Σ(yi - f(xi))^2,其中yi为实际数据点的y值,f(xi)为拟合曲线在xi处的函数值。
通过求解这个最小化问题,我们就可以确定拟合曲线的表达式。
二、数值积分1. 已知一个函数的表达式,要求通过数值积分的方法计算函数在某一区间上的定积分值。
答案:数值积分是一种通过将定积分转化为数值求和来近似计算的方法。
假设给定的函数表达式为f(x),我们可以将定积分∫[a, b]f(x)dx近似为Σwi * f(xi),其中wi为权重系数,xi为待定节点。
西南交通大学数值分析上机实习
目录解题: (1)题目一: (1)1.1计算结果 (1)1.2结果分析 (1)题目二: (2)2.1计算结果 (2)2.2结果分析 (3)题目三: (4)3.1计算结果 (4)3.2结果分析 (5)总结 (5)附录 (6)Matlab程序: (6)题目一: (6)第一问Newton法: (6)第二问Newton法: (6)第一问Steffensen加速法: (7)第二问Steffensen加速法: (7)题目二 (8)1、Jacobi迭代法 (8)2、Causs-Seidel迭代法 (8)题目三: (9)题目一:分别用牛顿法,及基于牛顿算法下的Steffensen 加速法(1)求ln(x +sin x )=0的根。
初值x0分别取0.1, 1,1.5, 2, 4进行计算。
(2)求sin x =0的根。
初值x0分别取1,1.4,1.6, 1.8,3进行计算。
分析其中遇到的现象与问题。
1.1计算结果求ln(x +sin x )=0的根,可变行为求解x-sinx-1=0的根。
1.2结果分析从结果对比我们可发现牛顿—Steffensen 加速法比牛顿法要收敛的快,牛顿法对于初值的选取特别重要,比如第(1)问中的初值为4的情况,100次内没有迭代出来收敛解,而用Steffensen 加速法,7次迭代可得;在第(2)问中的初值为1.6的情况,收敛解得31.4159,分析其原因应该是x x f cos )('=,x0=1.62π≈,0)('≈x f ;迭代式在迭代过程中会出现分母趋近于0,程序自动停止迭代的情况,此时得到的x 往往非常大,而在第一问中我们如果转化为用x+sinx=1,则可以收敛到结果。
用雅格比法与高斯-赛德尔迭代法解下列方程组Ax=b,研究其收敛性,上机验证理论分析是否正确,比较它们的收敛速度,观察右端项对迭代收敛有无影响。
(1)A行分别为A1=[6,2,-1],A2=[1,4,-2],A3=[-3,1,4];b1=[-3,2,4]T,b2=[100,-200,345]T,(2) A行分别为A1=[1,0,8,0.8],A2=[0.8,1,0.8],A3=[0.8,0.8,1];b1=[3,2,1]T,b2=[5,0,-10]T,(3)A行分别为A1=[1,3],A2=[-7,1];b=[4,6]T2.1计算结果初值均为0矩阵带入(1)A行分别为A1=[6,2,-1],A2=[1,4,-2],A3=[-3,1,4];b1=[-3,2,4]T,b2=[100,-200,345]T2) A行分别为A1=[1,0,8,0.8],A2=[0.8,1,0.8],A3=[0.8,0.8,1];b1=[3,2,1]T,b2=[5,0,-10]TT2.2结果分析ρ小于1,故方程组雅可比迭代收第一小题的经计算谱半径为5427B(=).0敛。
Matlab试题和答案
M a t l a b试题和答案(总7页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--Matlab 上机考试试题考试要求:1、从10道题目中随机抽取3道独立完成,时间1小时。
(输入randperm (10),取前三个数)2、每个题目兴建一个.m的文件,命名方式ks+N.m(N为题号),然后将所选三个题目放入一个文件夹,文件名为学号+姓名。
考试完成后将文件夹通过FTP 提交。
3、考试完成后要写一份报告,内容包括以下:(建一个.Doc的文档,文件名为学号+姓名)(1)题号,题目;(2)运行结果及其分析;(3)图也要粘贴在文档中。
4、查阅资料写一篇2000字左右的关于matlab在电子信息中的应用的小论文或综述,也可以具体的写matlab在电子信息中某一个方面或某一个点的应用。
(打印或手写都可,打印版要交电子文档)5、所有要交的东西在1月3号之前必须交齐。
(由学习委员统一收齐交给我,电子文档也拷到学习委员处,统一拷给我)。
所交项目包括:考试报告打印版,小论文打印版(两个装订在一起,考试报告在上,小论文在下,最好做一个统一的封皮),考试报告doc文档,小论文doc文档。
Matlab 上机考试试题1.求下列联立方程的解3x+4y-7z-12w=45x-7y+4z+ 2w=-3X +8z- 5w=9-6x+5y-2z+10w=-8(1)求系数矩阵的秩; (2)求出方程组的解。
2.在[-10,10;-10,10]范围内画出函数2222 sinyx yx z++=的三维图形。
3.试画出系统321()221H s s s s =+++的零极点分布图,判断系统是否稳定,同时求其单位冲激响应和频率响应(幅频特性和相频特性)。
4. 将一个屏幕分4幅,选择合适的步长在右上幅与左下幅绘制出下列函数的图形。
(1)]22[)cos(ππ,,-∈x x (曲线图); (2)4)y 2,-4x (-242),(2222≤≤≤≤+=;y x y x f (曲面图)。
数值分析作业-matlab上机作业
数值分析———Matlab上机作业学院:班级:老师:姓名:学号:第二章解线性方程组的直接解法第14题【解】1、编写一个追赶法的函数输入a,b,c,d输出结果x,均为数组形式function x=Zhuiganfa(a,b,c,d)%首先说明:追赶法是适用于三对角矩阵的线性方程组求解的方法,并不适用于其他类型矩阵。
%定义三对角矩阵A的各组成单元。
方程为Ax=d%b为A的对角线元素(1~n),a为-1对角线元素(2~n),c为+1对角线元素(1~n-1)。
% A=[2 -1 0 0% -1 3 -2 0% 0 -2 4 -3% 0 0 -3 5]% a=[-1 -2 -3];c=[-1 -2 -3];b=[2 3 4 5];d=[6 1 -2 1];n=length(b);u(1)=b(1);y(1)=d(1);for i=2:nl(i)=a(i-1)/u(i-1);%先求l(i)u(i)=b(i)-c(i-1)*l(i);%再求u(i)%A=LU,Ax=LUx=d,y=Ux,%Ly=d,由于L是下三角矩阵,对角线均为1,所以可求y(i)y(i)=d(i)-l(i)*y(i-1);endx(n)=y(n)/u(n);for i=(n-1):-1:1%Ux=y,由于U是上三角矩阵,所以可求x(i)x(i)=(y(i)-c(i)*x(i+1))/u(i);end2、输入已知参数>>a=[2 2 2 2 2 2 2];>>b=[2 5 5 5 5 5 5 5];>>c=[2 2 2 2 2 2 2];>>d=[220/27 0 0 0 0 0 0 0];3、按定义格式调用函数>>x=zhuiganfa(a,b,c,d)4、输出结果x=[8.147775166909105 -4.073701092835030 2.036477565178471 -1.017492820111148 0.507254485099400 -0.250643392637350 0.119353996493976 -0.047741598597591]第15题【解】1、编写一个程序生成题目条件生成线性方程组A x=b 的系数矩阵A 和右端项量b ,分别定义矩阵A 、B 、a 、b 分别表示系数矩阵,其中1(10.1;,1,2,...,)j ij i i a x x i i j n -==+=或1(,1,2,...,)1ij a i j n i j ==+-分别构成A 、B 对应右端项量分别a 、b 。
matlab上机考试题及答案
matlab上机考试题及答案1. 题目:编写一个MATLAB函数,计算并返回一个向量中所有元素的平方和。
答案:函数定义如下:```matlabfunction sumOfSquares = calculateSumOfSquares(vector)sumOfSquares = sum(vector.^2);end```2. 题目:使用MATLAB的内置函数,找出一个矩阵中的最大元素及其位置。
答案:可以使用`max`函数来找出矩阵中的最大元素,同时使用`find`函数来获取其位置。
示例代码如下:```matlabA = [1, 2, 3; 4, 5, 6; 7, 8, 9];[maxValue, linearIndex] = max(A(:));[row, col] = ind2sub(size(A), linearIndex);```3. 题目:给定一个向量,使用MATLAB编写代码,实现向量元素的逆序排列。
答案:可以使用`flip`函数来实现向量的逆序排列。
示例代码如下:```matlabvector = [1, 2, 3, 4, 5];reversedVector = flip(vector);```4. 题目:编写一个MATLAB脚本,计算并绘制一个正弦波的图像。
答案:可以使用`sin`函数生成正弦波数据,并使用`plot`函数绘制图像。
示例代码如下:```matlabx = linspace(0, 2*pi, 100);y = sin(x);plot(x, y);xlabel('x');ylabel('sin(x)');title('Sine Wave');```5. 题目:给定一个3x3的矩阵,使用MATLAB编写代码,计算其行列式。
答案:可以使用`det`函数来计算矩阵的行列式。
示例代码如下:```matlabmatrix = [1, 2, 3; 4, 5, 6; 7, 8, 9];determinant = det(matrix);```结束语:以上是MATLAB上机考试的题目及答案,希望能够帮助大家更好地掌握MATLAB的编程技巧和函数使用。
数值分析上机实习题
数值分析上机实习题第2章插值法1. 已知函数在下列各点的值为试⽤四次⽜顿插值多项式)(x p 4及三次样条韩式)(S x (⾃然边界条件)对数据进⾏插值。
⽤图给出(){}10,11,1,0,08.02.0,,x i =+=i x y i i ,)(x p 4及)(x S Python 代码import numpy as npimport matplotlib.pyplot as pltfrom matplotlib.font_manager import FontPropertiesfont_set = FontProperties(fname=r"c:\windows\fonts\simsun.ttc",size=12) #求⽜顿n 次均差 def qiujuncha(x,f,n): for i in range(1,n): for j in range(4,i-1,-1):f[j]= (f[j] - f[j-1])/(x[j]-x[j-i]) #根据⽜顿多项式求值 def niudun(x,f,x1): sum = f[0]; tmp = 1;for i in range(1,5): tmp *= (x1-x[i-1]) sum = sum + f[i]*tmp return sum#⽜顿插值画图 def drawPic(x,f):x1 = np.linspace(0.2, 1, 100) plt.plot(x1, niudun(x,f,x1))plt.title(u"⽜顿四次插值",fontproperties=font_set) plt.xlabel(u"x 轴",fontproperties=font_set) plt.ylabel(u"y 轴", fontproperties=font_set) plt.show() def qiu_h(x,h): n = len(x) -1 for i in range(n): print(i)h[i] = x[i+1]-x[i]#⾃然边界条件下的三次样条插值求Mdef qiu_m(h,f,o,u,d):n = len(h)o[0] = 0u[n] = 0d[n] = d[0] = 0a = []for i in range(1,n):u[i] = h[i-1]/(h[i-1]+h[i])for i in range(1,n):o[i] = h[i]/(h[i-1]+h[i])for i in range(1,n-1):d[i] = 6*(f[i+1]-f[i])/(h[i-1]+h[i])t = [0 for i in range(5)]t[0] =2t[1] = o[0]a.append(t)for i in range(1,n):t = [0 for i in range(5)]t[i - 1] = u [i + 1]t[i] = 2t[i + 1] = o [i + 1]a.append(t)t = [0 for i in range(5)]t[n - 1] = u[n]t[n] = 2a.append(t)tmp = np.linalg.solve(np.array(a),np.array(d))m = []for i in range(5):m.append(tmp[i])return m#根据三次条插值函数求值def yangtiao(x1,m,x,y,h,j):returnm[j]*(x[j+1]-x1)**3/(6*h[j])+m[j+1]*(x1-x[j])**3/(6*h[j])+(y[j]-m[j]*h[j]**2/6)*(x[j+1]-x1)/h[j] +(y[j+1]-m[j+1]*h[j]**2/6)*(x1-x[j])/h[j] def main():x = [0.2, 0.4, 0.6, 0.8, 1.0]y = [0.98, 0.92, 0.81, 0.64, 0.38]f = y[:]f1 = y[:]h = [0.2,0.2,0.2,0.2]u = [0 for n in range(5)]d = [0 for n in range(5)]o = [0 for n in range(5)] qiujuncha(x,f,4) qiujuncha(x,f1,2)m = qiu_m(h,f1,o,u,d) x1 = np.linspace(0.2, 0.4, 10)p1= plt.plot(x1, yangtiao(x1,m,x,y,h,0),color='red') x1 = np.linspace(0.4, 0.6, 10)plt.plot(x1, yangtiao(x1, m, x, y, h, 1),color='red') x1 = np.linspace(0.6, 0.8, 10)plt.plot(x1, yangtiao(x1, m, x, y, h, 2),color='red') x1 = np.linspace(0.8, 1.0, 10)plt.plot(x1, yangtiao(x1, m, x, y, h, 3),color='red') x1 = np.linspace(0.2, 1.0, 40)p2 = plt.plot(x1,niudun(x,f,x1),color='green') plt.xlabel(u"x 轴", fontproperties=font_set) plt.ylabel(u"y 轴",fontproperties=font_set) plt.title("三次样条插值和⽜顿插值")plt.legend(labels=[u'三次样条插值',u'⽜顿插值'],prop=font_set,loc="best") plt.show() main()实验结果运⾏结果可得插值函数图(如图1-1),4次⽜顿插值函数)(x p 4和三次样条插值函数)(x S 如下:)6.0(*)4.0(*)2.0(625.0)4.0(*)2.0(*3.098.0)(4-------=x x x x x x x P 98.0)8.0(*)6.0(*)4.0(*)2.0(*20833.0+-----x x x x]4.0,2.0[),2.0(467.4)4.0(9.4)2.0(167.1)(S 3∈-+-+-=x x x x x]6.0,4.0[),4.0(113.4)6.0(6467.4)4.0(575.1)6.0(167.1)(S 33∈-+-+----=x x x x x x ]8.0,6.0[),6.0(2.3)8.0(113.4)6.0(575.1)(S 3∈-+-+--=x x x x x]0.1,8.0[),8.0(9.1)0.1(2.3)(S ∈-+-=x x x x图1-1三次样条插值和⽜顿插值图2.在区间[-1,1]上分别取n = 10,20⽤两组等距节点对龙格函数做多项式插值三次样条插值,对每个n值画出插值函数及图形。
西南交通大学MATLAB实习任务
任务:-15-03 (任务号_组号)课程名称:matlab程序设计及应用课程代码:9990267实习周数:J 学分:实习单位:物理科学与技术学院实习地点:图书馆机房实习时间:17: 00 至19:00二、实习主要容:(仿真结果及分析,含源程序+注释+图)源程序(以第三个程序为例做注释):%线极化波phi=O; %定义各个参量Exm=l;Eym=l;w=l;k=l;t=linspace(0J.e-6J 000);z=linspace(0.10*2*pi/k, 1000); Ex=Exm*cos(w*t・k*z);Ey=Eym*cos(w*t・k*z+phi); comet(Ex.Ey)hold onfigure;comet3(Ex.Ey,z) %时间及步长设置%空间及步长设置%电场方程%绘制彗星图%圆极化波..phi=pi/2; %各个参量设定Exm=l; Eym=l; w=l; k=l; t=linspace(0J.e-6J 000); %各参量及步长设置z=linspace(0J 0*2*pi/k, 1000); Ex=Exm*cos(w*t・k*z); Ey=Eym*cos(w*t.k*z+phi);comet(Ex,Ey,0.1) %绘制彗星图hold on figure; comet3(Ex.Ey,z)%椭圆极化波 phi=pi/4;Exm=l;Eym=l;w=I;k=l;t=linspace(0J.e-6J 000);z=linspace(0,10*2*pi/k, 1000);Ex=Exm*cos(w*t ・k*z);Ey=Eym*cos(w*t ・k*z+phi);comet(Ex.Ey.O.l)hold on figure;comet3(Ex.Ey,z)%各个参量及步长设置 %绘制彗星图%设定各个参量的取值三、实习总结、体会:1本次实习通过使用MATLAB软件来建立线极,椭圆极,原极化波的方程及绘图,画出的图形很漂亮,初步掌握了彗星图的绘制方法。
——数值分析上机题
.......................课程名称:数值分析上机实习报告姓名:学号:专业:联系电话:目录序言 (3)第1章必做题 (4)1.1必做题第一题 (4)1.1.1题目 (4)1.1.2 分析 (4)1.1.3 计算结果 (4)1.1.3 总结 (6)1.2必做题第二题 (6)1.2.1题目 (6)1.2.2分析 (6)1.2.3计算结果 (6)1.2.4结论 (8)1.1必做题第一题....................................................................... 错误!未定义书签。
1.1.1题目 ............................................................................ 错误!未定义书签。
第2章选做题 (8)2.1选做题第一题 (8)2.1.1题目 (8)2.1.2分析 (8)2.1.3计算结果 (8)附录 (10)附录一:必做题第一题程序 (10)附录二:必做题第二题程序 (11)附录三:选做题第一题的程序 (13)序言本次数值分析上机实习采用Matlab数学软件。
Matlab是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。
在数值分析应用中可以直接调用Matlab软件中已有的函数,同时用户也可以将自己编写的实用程序导入到Matlab函数库中方便自己调用。
基于Matlab数学软件的各种实用性功能与优点,本次数值分析实习决定采用其作为分析计算工具。
1.编程效率高MATLAB是一种面向科学与工程计算的高级语言,允许使用数学形式的语言编写程序,且比BASIC、FORTRAN和C等语言更加接近我们书写计算公式的思维方式,用MATLAB编写程序犹如在演算纸上排列出公式与求解问题。
因此,MATLAB语言也可通俗地称为演算纸式科学算法语言。
(完整版)matlab上机练习题答案
(完整版)matlab 上机练习题答案1.计算⎥⎦⎤⎢⎣⎡=572396a 与⎥⎦⎤⎢⎣⎡=864142b 的数组乘积>〉 a=[6 9 3;2 7 5]; 〉〉 b=[2 4 1;4 6 8]; 〉〉 a 。
*b ans =12 36 3 8 42 402。
对于B AX =,如果⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=753467294A ,⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=282637B ,求解X 。
〉〉 A=[4 9 2;7 6 4;3 5 7]; 〉> B=[37 26 28]’; >〉 X=A\B X = -0.5118 4.0427 1.33183。
⎥⎦⎤⎢⎣⎡-=463521a ,⎥⎦⎤⎢⎣⎡-=263478b ,观察a 与b 之间的六种关系运算的结果 >〉 a=[1 2 3;4 5 6]; 〉> b=[8 –7 4;3 6 2]; >〉 a 〉b ans =0 1 0 1 0 1 〉> a 〉=b ans =0 1 0 1 0 1 >> a 〈b ans =1 0 1 0 1 0 〉> a<=b ans =1 0 1 0 1 0 >〉 a==b ans =0 0 0 0 0 0 〉〉 a~=b ans =1 1 1 1 1 14计算多项式乘法(x 2+2x +2)(x 2+5x +4)>> c=conv ([1 2 2],[1 5 4]) c =1 7 16 18 8 5计算多项式除法(3x 3+13x 2+6x +8)/(x +4) 〉〉 d=deconv ([3 13 6 8],[1 4]) d =3 1 26求欠定方程组⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡5865394742x 的最小范数解〉〉 a=[2 4 7 4;9 3 5 6]; 〉> b=[8 5]’; 〉> x=pinv (a )*b x =—0.2151 0.4459 0。
西南交通大学MATLAB实习任务10
[x,y]=meshgrid(-5:0.1:-5:0.1:5); %设置空间步长
z=q./sqrt((x-2.5).^2+y.^2+0.05); %正电荷的电势的表达式
mesh(x,y,z); %画出三维图形
三、实习总结、体会:
Matlab对于我们学习高数与物理有很大的帮助,是一个很好的学习软件。在此次任务中,我发现matlab使学习更加简单与准确。通过本次学习更加深刻理解和掌握了MATLAB在对于把抽象的数学等式转化为具体的图形,为以后使用MATLAB解决更多物理题目打下了坚实的基础。
任务:_10(任务号_组号)_03__
课程名称:MATLAB实习与应用课程代码:9990267
实习周数:1学 分:1
实习单位:物理科学与技术学院实习地点:图书馆机房
实习时间:07.09 13:00至15:00
一、实习的目的和任务:
1、建立(一维度的)点电荷的电场和电势方程。
2、利用MATLAB的函数,绘制2q和-q异性点电荷的电势和电场分布图。
实习
指导
教师
评语
教师评语:
成绩评定:
指导教师(签名):
年月日
hold on %作图控制
quiver(x,y,dx,dy) %画出各点上电场的大小和方向
colormap hsv
hold off
xx=[linspace(-2,2,6),2*linspace(1,1,6),linspace(-2,2,6),-2*linspace(1,1,6)];
yy=[2*linspace(1,1,6),linspace(-2,2,6),-2*linspace(1,1,6),linspace(-2,2,6)];
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数值分析2018-2019第1学期上机实习题f x,隔根第1题.给出牛顿法求函数零点的程序。
调用条件:输入函数表达式()a b,输出结果:零点的值x和精度e,试取函数f(x)=x^4−1.4∗区间[,]x^3−0.48∗x^2+1.408∗x−0.512,用牛顿法计算x0=1附近的根,判断相应的收敛速度,并给出数学解释。
1.1程序代码:f=input('输入函数表达式:y=','s');a=input('输入迭代初始值:a=');delta=input('输入截止误差:delta=');f=sym(f);f_=diff(f); %求导f=inline(f);f_=inline(f_);c0=a;c=c0-f(c0)/f_(c0);n=1;while abs(c-c0)>deltac0=c;c=c0-f(c0)/f_(c0);n=n+1;enderr=abs(c-c0);yc=f(c);disp(strcat('用牛顿法求得零点为',num2str(c)));disp(strcat('迭代次数为',num2str(n)));disp(strcat('精度为',num2str(err)));1.2运行结果:run('H:\Adocument\matlab\1牛顿迭代法求零点\newtondiedai.m')输入函数表达式:y=x^4-1.4*x^3-0.48*x^2+1.408*x-0.512输入迭代初始值:a=1输入截止误差:delta=0.0005用牛顿法求得零点为0.80072迭代次数为14精度为0.00036062牛顿迭代法通过一系列的迭代操作使得到的结果不断逼近方程的实根,给定一个初值,每经过一次牛顿迭代,曲线上一点的切线与x轴交点就会在区间[a,b]上逐步逼近于根。
上述例子中,通过给定初值x=1,经过14次迭代后,得到根为0.80072,精度为0.00036062。
第2题.利用牛顿插值法计算牛顿插值多项式,并计算该多项式在某一点处的取值。
调用条件:输入n个插值节点x i,与对应的函数值y i;待计算的点x0。
输出结果:插值多项式的系数向量,以及多项式在0x处的取值(注意用适当的算法),给出调用说明和例子。
2.1程序代码x=input('请输入数据点x坐标:x=');y=input('请输入数据点y坐标:y=');x0=input('请输入要插值的x坐标:x0=');%x为数据点的x坐标向量%y为数据点的y坐标向量%x0为插值的x坐标syms t; %定义符号变量s=y(1);h=0; %存放均差a=0;dxs=1;n=length(x); %读取x的长度4for(i=1:n-1) %构造牛顿插值方法for(j=i+1:n)h(j) = (y(j)-y(i))/(x(j)-x(i));enddxs=dxs*(t-x(i));s=s+h(i+1)*dxs;y=h; %为了算二阶均差a(i)=h(i+1); %存放系数向量endsimplify(s);m=length(x0); %读取要插值点向量长度,可以直接对多点插值计算for i=1:mtemp(i)=subs(s,'t',x0(i));y0=temp; %得到的是系列插值点的插值结果enddisp(['系数向量为',num2str(a)]);disp(['插值结果为',num2str(y0)]);2.2运行结果run('H:\Adocument\matlab\2牛顿差值\newtonchazhi.m')请输入数据点x坐标:x=[21,34,44,11]请输入数据点y坐标:y=[4,7,9,1]请输入要插值的x坐标:x0=6系数向量为0.23077 -0.0013378 5.0674e-005插值结果为-0.83217第3题. 给定线性方程组Ax =b ,利用列主元高斯消元法进行求解。
调用条件:输入系数矩阵A 和右端项b 输出结果:方程组的解,试取系数矩阵为A =[1⋯11−1⋯⋱1⋮⋱⋱⋮−1⋯−11]n×n,观察列主元消元过程中绝对值最大的列主元取值,并给出数学解释。
3.1 程序代码A=input('请输入A :A='); b=input('请输入b :b='); n=size(A,1); X=zeros(n,1); for j=1:n-1 T=[];a=A(j:n,j); %选中第一列m=find(abs(a)==max(abs(a))); %寻找列主元最大值,将位置存储在数组m 内 h(j)=A(m(1)+j-1,j); %记录列主元最大值 temp=A(j,:); %交换行 A(j,:)=A(m(1)+j-1,:); A(m(1)+j-1,:)=temp; for i=1:n-j %消元T(i)=-A(i+j,j)/A(j,j);A(i+j,:)=A(i+j,:)+A(j,:)*T(i); b(i+j)= b(i+j)+b(j)*T(i); end endfor i=n:-1:1 %回代 sum=0;for j=n:-1:i+1sum=sum+X(j)*A(i,j); endX(i)=(b(i)-sum)/A(i,i); enddisp(['列主元最大值为',num2str(h)]); x=X3.2 运行结果 ○1 4x4矩阵方程 run('H:\Adocument\matlab\3高斯消元\Guass.m')请输入A :A=[2.1,3.4,8,4.5;1,2.4,3.3,5;2.2,4,1,10;0.3,2.5,6,10] 请输入b :b=[2,5,7,10]列主元最大值为2.2 1.9545 8.3x =-23.9967 25.3593 -1.0382 -4.5606 ○2题示矩阵方程 run('H:\Adocument\matlab\3高斯消元\Guass.m')请输入A :A=[1,1,1,1,1;-1,1,1,1,1;-1,-1,1,1,1;-1,-1,-1,1,1;-1,-1,-1,-1,1] 请输入b :b=[1,2,3,4,5]列主元最大值为1 2 2 2 x =-0.5000 -0.5000 -0.5000 -0.50003.0000由上述特殊矩阵的例子可以看出,在第一次列主消元时,对角线以下的数都为-1,与第一行的1直接相加变为0,而对角线上的元素都变为2,于是列主元后续每次消元的列主元都为2。
第4题. 给定函数)()(a x x b f ≤≤,将区间[,]a b 取n 等分,每个子区间分别用一次多项式、二次多项式进行插值,生成的多项式分别记为()1n P ,()2n P ,计算()12||()||n f x P -,()22||()||n f x P -。
(这里涉及到的积分运算需采用适当的数值求积算法)调用条件:输入函数表达式()f x ,隔根区间[,]a b ,等分区间数n输出结果:误差值()12||()||n f x P -,()22||()||n f x P -(可以分别写程序计算)试取不同的函数和隔根区间(比如()sin f x x =,[,][0,1]a b =),n 为2,4,8,16,…,观察误差变化,并给出数学解释。
4.1 程序代码p=input('输入函数表达式:y=','s'); a=input('输入区间左端值:a='); b=input('输入区间右端值:b='); N=input('输入等分数:N='); syms x; y=inline(p); y1=char(y); y1=sym(y1);xi=linspace(a,b,N+1);for k=1:NL1(k)=((x-xi(k+1))/(xi(k)-xi(k+1)))*y(k)+((x-xi(k))/(xi(k+1)-xi(k)))*y(k+1); %线性插值(三等分有三段)f1=(y1-L1(k))^2;f1=char(f1);f1=inline(f1); %线性插值余项h=(xi(k+1)-xi(k))/(2*5); %复合辛普森数值积分s1=0; s2=0;for i=1:5d=a+h*(2*i-1);s1=s1+feval(f1,d);endfor j=1:4d=a+h*2*j;s2=s2+feval(f1,d);endss1(k)=h*(feval(f1,xi(k))+feval(f1,xi(k+1))+4*s1+2*s2)/3;w1(k)=sqrt(ss1(k)); %线性插值的误差endfor k=2:NL2(k-1)=((x-xi(k))*(x-(xi(k+1)))/((xi(k-1)-xi(k))*(xi(k-1)-xi(k+1))))*y(k-1)+ ...((x-xi(k-1))*(x-(xi(k+1)))/((xi(k)-xi(k-1))*(xi(k)-xi(k+1))))*y(k)+ ...((x-xi(k-1))*(x-(xi(k)))/((xi(k+1)-xi(k-1))*(xi(k+1)-xi(k))))*y(k+1); %二次插值(三等分有两段)f2=(y1-L2(k-1))^2;f2=char(f2);f2=inline(f2); %二次插值余项h=(xi(k+1)-xi(k-1))/(2*5); %复合辛普森数值积分s1=0; s2=0;for i=1:5d=a+h*(2*i-1);s1=s1+feval(f2,d);endfor j=1:4d=a+h*2*j;s2=s2+feval(f2,d);endss2(k-1)=h*(feval(f2,xi(k-1))+feval(f2,xi(k+1))+4*s1+2*s2)/3;w2(k-1)=sqrt(ss2(k-1)); %二次插值的误差endw1=max(w1) %线性插值的最大误差w2=max(w2) %二次插值的最大误差4.2运行结果输入函数表达式:y=sin(x)输入区间左端值:a=0 输入区间右端值:b=1 ○1输入等分数:N=2 w1 = 0.7590 w2 = 0.5564 ○2输入等分数:N=4 w1 = 0.6884 w2 = 1.3686 ○3输入等分数:N=8 w1 = 1.5998 w2 = 7.3240○4输入等分数:N=16 w1 = 3.2096 w2 = 22.6859由上述结果可知:随着等分区间数的增加,二次插值的误差增加率比线性插值的大,等分数越多,误差相对于线性插值越大。