数值分析实验题和程序
数值分析实验报告

实验2.1 多项式插值的振荡现象实验目的:在一个固定的区间上用插值逼近一个函数,显然Lagrange 插值中使用的节点越多,插值多项式的次数就越高。
我们自然关心插值多项式的次数增加时,Ln(x)是否也更加靠近被逼近的函数。
Runge 给出的一个例子是极著名并富有启发性的。
实验容:设区间[-1,1]上函数 f(x)=1/(1+25x 2)。
考虑区间[-1,1]的一个等距划分,分点为 x i = -1 + 2i/n ,i=0,1,2,…,n ,则拉格朗日插值多项式为201()()125nn i i i L x l x x ==+∑. 其中,l i (x),i=0,1,2,…,n 是n 次Lagrange 插值基函数。
实验步骤与结果分析:实验源程序function Chap2Interpolation% 数值实验二:“实验2.1:多项式插值的震荡现象”% 输入:函数式选择,插值结点数% 输出:拟合函数及原函数的图形promps = {'请选择实验函数,若选f(x),请输入f,若选h(x),请输入h,若选g(x),请输入g:'};titles = 'charpt_2';result = inputdlg(promps,'charpt 2',1,{'f'});Nb_f = char(result);if(Nb_f ~= 'f' & Nb_f ~= 'h' & Nb_f ~= 'g')errordlg('实验函数选择错误!');return;endresult = inputdlg({'请输入插值结点数N:'},'charpt_2',1,{'10'});Nd = str2num(char(result));if(Nd <1)errordlg('结点输入错误!');return;endswitch Nb_fcase 'f'f=inline('1./(1+25*x.^2)'); a = -1;b = 1;case 'h'f=inline('x./(1+x.^4)'); a = -5; b = 5;case 'g'f=inline('atan(x)'); a = -5; b= 5;endx0 = linspace(a, b, Nd+1); y0 = feval(f, x0);x = a:0.1:b; y = Lagrange(x0, y0, x);fplot(f, [a b], 'co');hold on;plot(x, y, 'b--');xlabel('x'); ylabel('y = f(x) o and y = Ln(x)--');%--------------------------------------------------------------------function y=Lagrange(x0, y0, x);n= length(x0); m=length(x);for i=1:mz=x(i);s=0.0;for k=1:np=1.0;for j=1:nif(j ~= k)p = p*(z - x0(j))/(x0(k) - x0(j));endends = s + p*y0(k);endy(i) = s;end实验结果分析(1)增大分点n=2,3,…时,拉格朗日插值函数曲线如图所示。
最小二乘法数值分析实验报告

最小二乘法数值分析实验报告最小二乘法数值分析实验报告篇一:数值分析+最小二乘法实验报告数学与信息工程学院实课程名称:实验室:实验台号:班级:姓名:实验日期:验报告数值分析 201X年 4 月 13日篇二:数值分析上机实验最小二乘法数值分析实验报告五最小二乘法一、题目设有如下数据用三次多项式拟合这组数据,并绘出图形。
二、方法最小二乘法三、程序M文件:sy ms x f; xx=input( 请输入插值节点 as [x1,x2...]\n ff=i nput( 请输入插值节点处对应的函数值 as [f1,f 2...]\n m=input(请输入要求的插值次数m= n=leng th(xx); fr i=1:(m+1) syms faix; fai=x^(i-1); fr j=1:n x=xx(j);H(i,j)=eval(fai); end endA=ff*(H) *inv(H*(H) syms x; f=0; fr i=1:(m+1) f=f+A(i)*x^(i-1); end f plt(xx,ff, * ) hldnezplt(f,[xx(1),xx(n)])四、结果 sav e and run之后:请输入插值节点 as [x1,x2...] [-3 -2-1 0 1 2 3] 请输入插值节点处对应的函数值 as[f1,f2...] [-1.76 0.42 1.21.341.432.254.38]请输入要求的插值次数m=3 f =133/100+121469856021/35184372088832*x-8042142191733/450359 9627370496*x^2+1020815915537309/9007199254740992*x^3五、拓展:最小二乘法计算方法比较简单,是实际中常用的一种方法,但是必须经计算机来实现,如果要保证精度则需要对大量数据进行拟合,计算量很大。
数值分析上机题目

数值分析上机题目4(总21页) --本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--实验一实验项目:共轭梯度法求解对称正定的线性方程组 实验内容:用共轭梯度法求解下面方程组(1) 123421003131020141100155x x x x -⎛⎫⎛⎫⎛⎫ ⎪ ⎪ ⎪--- ⎪ ⎪ ⎪=⎪ ⎪ ⎪-- ⎪ ⎪ ⎪-⎝⎭⎝⎭⎝⎭ 迭代20次或满足()(1)1110k k x x --∞-<时停止计算。
编制程序:储存m 文件function [x,k]=CGmethod(A,b)n=length(A);x=2*ones(n,1);r=b-A*x;rho=r'*r; k=0;while rho>10^(-11) & k<1000 k=k+1; if k==1 p=r; elsebeta=rho/rho1; p=r+beta*p; end w=A*p;alpha=rho/(p'*w); x=x+alpha*p; r=r-alpha*w; rho1=rho;rho=r'*r; end运行程序: clear,clcA=[2 -1 0 0;-1 3 -1 0;0 -1 4 -1;0 0 -1 5]; b=[3 -2 1 5]'; [x,k]=CGmethod(A,b)运行结果: x =(2) Ax b =,A 是1000阶的Hilbert 矩阵或如下的三对角矩阵, A[i,i]=4,A[i,i-1]=A[i-1,i]=-1,i=2,3,..,n b[1]=3, b[n]=3, b[i]=2,i=2,3,…,n-1迭代10000次或满足()()710k k r b Ax -=-≤时停止计算。
编制程序:储存m 文件function [x,k]=CGmethod_1(A,b) n=length(A);x(1:n,1)=0;r=b-A*x;r1=r; k=0;while norm(r1,1)>10^(-7)&k<10^4 k=k+1; if k==1 p=r; elsebeta=(r1'*r1)/(r'*r);p=r1+beta*p; end r=r1; w=A*p;alpha=(r'*r)/(p'*w); x=x+alpha*p; r1=r-alpha*w; end运行程序: clear,clc n=1000; A=hilb(n); b=sum(A')';[x,k]=CGmethod(A,b)实验二1、 实验目的:用复化Simpson 方法、自适应复化梯形方法和Romberg 方法求数值积分。
数值分析计算实习题

插值法1.下列数据点的插值x 0 1 4 9 16 25 36 49 64y 0 1 2 3 4 5 6 7 8可以得到平方根函数的近似,在区间[0,64] 上作图.(1)用这9 个点作8 次多项式插值Ls(x).(2)用三次样条( 第一边界条件)程序求S(x).从得到结果看在[0,64] 上,哪个插值更精确;在区间[0,1] 上,两种插值哪个更精确解:(1) 拉格朗日插值多项式,求解程序如下syms x l;x1=[0 1 4 9 16 25 36 49 64]; y1=[0 1 2 3 4 5 6 7 8]; n=length(x1);Ls=sym(0);for i=1:nl=sym(y1(i));for k=1:i-1l=l*(x-x1(k))/(x1(i)-x1(k));endfor k=i+1:n l=l*(x-x1(k))/(x1(i)-x1(k));endLs=Ls+l; endLs=simplify(Ls) % 为所求插值多项式Ls(x).输出结果为Ls = -/*xA2+95549/72072*x-1/00*xA8-2168879/0*xA4+19/0*xA7+657859/*xA3+33983/ 0*xA5-13003/00*xA6(2) 三次样条插值,程序如下x1=[0 1 4 9 16 25 36 49 64];y1=[0 1 2 3 4 5 6 7 8];x2=[0:1:64];y3=s plin e(x1,y1,x2);p=po Iyfit(x2,y3,3); % 得到三次样条拟合函数S=p(1)+p(2)*x+ p(3)*x^2+p(4)*xA3 % 得到S(x) 输出结果为:S =/6464-2399/88*x+/1984*xA2+2656867/624*xA3⑶ 在区间[0,64]上,分别对这两种插值和标准函数作图,Plot(x2,sqrt(x2),'b',x2,y2,'r',x2,y3,'y')蓝色曲线为y="X函数曲线,红色曲线为拉格朗日插值函数曲线,黄色曲线为三次样条插值曲线可以看到蓝色曲线与黄色曲线几乎重合,因此在区间[0,64] 上三次样条插值更精确。
数值分析—实验报告1

wc=yi-jqz
wc = 0.00487093023460 数据分析:
表:ln(0.6)
内插
外插
x
0.4
0.5
0.7
0.7
0.8
0.9
f(x) -0.916291 -0.693147 -0.356675 -0.356675 -0.223144 -0.105361
yi
-0.50660833333333
-0.693147
-0.356675
试用 Lagrange 插值多项式来计算 ln(0.6)的近似值并估计误差。
运行结果:
format long
x=[0.40 0.50 0.70];y=[-0.916291 -0.693147
-0.356675];xin=0.6;yi=lg201541110131(x,y,xin)
实验仪器:
1、支持 Intel Pentium Ⅲ及其以上 CPU,内存 256MB 以上、硬盘 1GB 以上容量的微机; 软件配
有 Windows98/2000/XP 操作系统及 MATLAB 软件等。
2、了解 MATLAB 等软件的特点及系统组成,在电脑上操作 MATLAB 等软件。
实验内容、步骤及程序: 一、Lagrange 插值函数 程序: function yi=lg201541110131(x,y,xin) n=length(x); p=zeros(1,n); for k=1:n
一阶均差
2.23144000000000 -1.83026666666667
1.68236000000000
0
0
0
二阶均差
三阶均差
-0.916291000000000
数值分析计算方法

void main(void)
{
double fa=fc(1),fb=fc(3),a=1,b=3,f,x0;
int k=0;
for(;b>a&&b-a>=pow(10,-4)*0.5;)
{
仁fc((a+b)/2);
if(仁=0)
{ x0=(a+b)/2; break;
}Байду номын сангаас
else if(fa*f<0)
{
double y;
y=pow((3*x+1),1.0/3);
return y;
}
double Derivative1(double x)
{
double y;
y=pow((3*x+1),-2.0/3);
return y;
} double Iterate2(double x) {
double y;
y=(1-x*x*x)/3.0;
1.19 817
1.23223
作五次插值,并求x1=0.46,x2=0.55,x3=0.60时的函数近似值.
1■实验目的:通过拉格朗日插值和牛顿插值的实例,了解两种求解方法,并分析 各自的优缺点。
2.算法描述:
3.源程序:
拉格朗日插值:
#include<stdio.h>
#define k2
void main()
三•实验三:分别用复化梯形公式和复化辛卜生公式计算f(x)=s in( x)/x的积分, 并与准确值比较判断精度。
1■实验目的:通过实例体会各种算法的精度。熟练掌握复化梯形,复化辛普森, 复化柯特斯求积方法的程序。
数值分析拉格朗日插值法上机实验报告

X[0]: 1
x[1]:-1
x[2]:2
y[0]:0
y[1]:-3
y[2]:4
Input xx:
x二,y=
3
拉格朗日插值模型简单,结构紧凑,是经典的插值法。但是由于拉格 朗日的插值多项式和每个节点都有关,当改变节点个数时,需要重新 计算。且当增大插值阶数时容易出现龙格现象。
在物理化学,资产价值鉴定工作和计算某一时刻的卫星坐标和钟差等 这些方面可以应用Lagrange插值。采用拉格朗日插值法计算设备等 功能重置成本,计算精度较高,方法快捷。但是这方法只能针对可比 性较强的标准设备,方法本身也只考虑了单一功能参数,它的应用范 围因此受到了一定的限制。作为一种探索,我们可以将此算法以 及其它算法集成与计算机评估分析系统中,作为传统评估分析方法的 辅助参考工具,以提高资产价值鉴定工作的科学性和准确性。
int i, j ;
float *a,yy二;/*a作为临时变量,记录拉格朗日插值多项*/
a= (f I oat*) ma I loc (n*s i zeof (f I oat));
for(i=0;i <=n-1;i++)
{
a[i]=y[i];
for(j=0;j<=n-1;j++)
if (j! = i)
{
pr i ntf (Error! The vaIue of n must in (0,20).);
getch () ; return 1 ;
}
for (i=0;i<=n-1;i++)
{
抽潼晴龙學扌追???探
scanf (%f, &x[i]);
)
数值分析大作业(牛顿下山法,拉格朗日法,切比雪夫法)及Matlab程序

课程设计课程名称:数值分析设计题目:学号:姓名:完成时间:2014.11.18题目一: 解线性方程组的直接法 设方程组Ax b =,其中250002511125555111x x x x x x A x x x ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦, 矩阵中10.1(0,1,,5)k x k k =+=,b 由相应的矩阵元素计算,使解向量(1,1,,1)T x =。
(1) A 不变,对b 的元素6b 加一个扰动410-,求解方程组;(2) b 不变,对A 的元素22a 和66a 分别加一个扰动610-,求解方程组; (3) 对上述两种扰动方程组的解做误差分析。
一.数学原理:本计算采用直接法中的列主元高斯消元法,高斯列主元消元法原理如下: 1、设有n 元线性方程组如下:1111n n nn a a a a ⎛⎫ ⎪ ⎪ ⎪⎝⎭1nx x ⎛⎫ ⎪ ⎪ ⎪⎝⎭=1nb b ⎛⎫ ⎪ ⎪ ⎪⎝⎭2、第一步:如果a11!=0, 令l i1= ai1/a11, I= 2,3,……,n用(-li1)乘第一个方程加到第i 个方程上,得同解方程组:a (1)11 a (1)12 . . . a (1)1nx 1 b (1)1 a (1)21 a (1)22 . . . a (1)2n x 2 b (1)2 . . . . . . . = . a (1)n-11 a (1)n-12 . . a (1)n-1n x n-1 b (1)n-1 a (1)n1 a (1)n2 . . . a (1)nn x n b (1)n简记为:A (2) x = b (2) 其中a (2)ij = a (1)ij – l i1 * a (1)1j , I ,j = 2,3,..,nb (2)I = b (1)I – l i1 * b (1)1 , I = 2,3,...,n 第二步:如果a (2)22 != 0,令l i2= a (2)i2/a (2)22, I= 3,……,n依据同样的原理,对矩阵进行化间(省略),依次下去,直到完成!最后,得到上三角方程组:a(1)11 a(1)12. . . a(1)1nx1b(1)10 a(1)22 . . . a(1)2nx2b(1)2. . . . . . . = .0 0 . . a(n-1)n-1n xn-1b(n-1)n-10 0 . . . a(n)nn xnb(n)n简记为:A(n) x = b(n)最后从方程组的最后一个方程进行回代求解为:Xn = b(n) / a(n)nnXi = ( b(k)k- ∑ a(k)kj x j ) / a(k)kk二.解题过程:1.由题中所给条件可求出b。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、实验3.1编制以函数{}n kk x=危机的多项式最小二乘拟合程序,并用于对表3.11中的数据作3次取权数1i w ≡,求拟合曲线3*kk k a xφ==∑中的参数{}k a 、平方误差2σ,并作离散数据{},i i x y 的拟合曲线*()y x φ=的图形。
程序代码: x0=-1:0.5:2;y0=[-4.447 -0.452 0.551 0.048 -0.447 0.549 4.552]; n=3;alph=polyfit(x0,y0,n) %参数{a k } y=polyval(alph,x0);r=(y0-y)*(y0-y)' %平方误差2σ=r y=polyval(alph,x); x=-1:0.01:2; y=plot(x,y,'k--'); xlabel('x');ylabel('y0 * and polyfit.y--'); hold on;plot(x0,y0,'*');title('离散数据的3项拟合') gridon;实验结果:拟合函数*()y x φ=的图形:拟合曲线3*kkka xφ==∑中的参数{}k a中3210,,,a a a a依次为alph中的四个数值。
alph =1.9991 -2.9977 -0.0000 0.5491平方误差2σ=r。
r =2.1762e-005实验分析:最小二乘曲线拟合是在离散情形下的最佳平方逼近,拟合的曲线很光滑,而且所有的7个数值点均在曲线上,拟合效果很好;拟合的平方误差很小,为10-5量级。
二、实验3.2编制正交化多项式最小二乘拟合程序,并用于求解上题中的3次多项式最小二乘拟合问题,作拟合曲线的图形,计算平方误差,并与上题结果进行比较。
程序代码:x=-1:0.5:2;y=[-4.447 -0.452 0.551 0.048 -0.447 0.549 4.552];n=3;result=inputdlg({'请输入权向量w:'},'charpt-3',1,{'[1 1 1 1 1 1 1]'});w=str2num(char(result));m=length(x)-1;s1=0;s2=ones(1,m+1);v2=sum(w);d(1)=y*w';c(1)=d(1)/v2;for k=1:nxs=x.*s2.^2*w';a(k)=xs/v2;if(k==1)b(k)=0;elseb(k)=v2/v1;ends3=(x-a(k)).*s2-b(k)*s1;v3=s3.^2*w';d(k+1)=y.*s3*w';c(k+1)=d(k+1)/v3;s1=s2;s2=s3;v1=v2;v2=v3;endr=y.*y*w'-c*d'alph=zeros(1,n+1)T=zeros(n+1,n+2);T(:,2)=ones(n+1,1);T(2,3)=-a(1);if(n>=2)for k=3:n+1for i=3:k+1T(k,i)=T(k-1,i)-a(k-1)*T(k-1,i-1)-b(k-1)*T(k-2,i-2);endendendfor i=1:n+1for k=i:n+1alph(n+2-i)=alph(n+2-i)+c(k)*T(k,k+2-i);endendxmin=min(x);xmax=max(x);dx=(xmax-xmin)/(25*m);t=(xmin-dx):dx:(xmax+dx);s=alph(1);for k=2:n+1s=s.*t+alph(k);endplot(x,y,'x',t,s,'-');xlabel('x');ylabel('y');grid on;disp(alph);disp(r);实验结果:拟合曲线图形:参数{}k a 中3210,,,a a a a 依次为alph 中的四个数值:1.9991 -2.9977 -0.0000 0.5491 平方误差2σ=r :2.1762e-005实验分析:比较实验3.1和3.2的结果发现:对于同一个数据表,两种方法的拟合参数、误差均是相等的,表示这两种方法的拟合效果是一样的。
因为这个数据表不是病态的法方程组,所以没有体现出正交多项式曲线拟合的优点。
根据这两个实验代码和运算时间来看,我们在做曲线拟合时可以先初步判断数据点是否病态,若否,就直接用最小二乘法拟合。
以避免不必要的程序复杂化。
三、实验5.1 常微分方程性态和R-K 法稳定性试验实验目的:考察下面微分方程右端项中函数y 前面的参数对方程性态的影响(它可以使方程为好条件的或坏条件的)和研究计算步长对R-K 法计算稳定性的影响。
实验题目:常微分方程初值问题'1,01,(0)1,y ay ax x y ⎧=-+<<⎨=⎩其中,5050a -≤≤.其精确解为()axy x e x =+。
实验要求:本实验题都用4阶经典R-K 法计算。
(1)对参数a 分别取4个不同的数值:一个大的正值,一个小的正值,一个绝对值小的负值和一个绝对值大的负值。
取步长h=0.01,分别用经典的R-K 法计算,将四组计算结果画在同一张图上,进行比较并说明相应初值的性态。
(2)取参数a 为一个绝对值不大的负值和两个计算步长,一个步长使参数ah 在经典R-K 法的稳定域内,另一个步长在经典R-K 法的稳定域外。
分别用经典R-K 法计算并比较结果。
取全域等距的10个点上的计算值,列表说明。
程序代码(1): function charp5_1 clf;result=inputdlg({'请输入参数a:'},'charpt-5',1,{'40'});a=str2num(char(result));result=inputdlg({'请输入(0 1)之间的步长:'},'实验5.1',1,{'0.01'}); h=str2num(char(result));x=0:h:1;y=x;N=length(x);y(1)=1;func=inline('1+(y-x).*a');for n=1:N-1k1=func(a,x(n),y(n));k2=func(a,x(n)+h/2,y(n)+k1*h/2);k3=func(a,x(n)+h/2,y(n)+k2*h/2);k4=func(a,x(n)+h,y(n)+k3*h);y(n+1)=y(n)+h*(k1+2*k2+2*k3+k4)/6;endy0=log(exp(a*x)+x);result=inputdlg({'请输入参数b:'},'charpt-5',1,{'10'});b=str2num(char(result));result=inputdlg({'请输入(0 1)之间的步长:'},'实验5.1',1,{'0.01'}); h=str2num(char(result));x=0:h:1;y=x;N=length(x);y(1)=1;func=inline('1+(y-x).*b');for n=1:N-1k1=func(b,x(n),y(n));k2=func(b,x(n)+h/2,y(n)+k1*h/2);k3=func(b,x(n)+h/2,y(n)+k2*h/2);k4=func(b,x(n)+h,y(n)+k3*h);y(n+1)=y(n)+h*(k1+2*k2+2*k3+k4)/6;endy1=log(exp(b*x)+x);result=inputdlg({'请输入参数c:'},'charpt-5',1,{'-10'});c=str2num(char(result));result=inputdlg({'请输入(0 1)之间的步长:'},'实验5.1',1,{'0.01'}); h=str2num(char(result));x=0:h:1;y=x;N=length(x);y(1)=1;func=inline('1+(y-x).*c');for n=1:N-1k1=func(c,x(n),y(n));k2=func(c,x(n)+h/2,y(n)+k1*h/2);k3=func(c,x(n)+h/2,y(n)+k2*h/2);k4=func(c,x(n)+h,y(n)+k3*h);y(n+1)=y(n)+h*(k1+2*k2+2*k3+k4)/6;endy2=log(exp(c*x)+x);result=inputdlg({'请输入参数d:'},'charpt-5',1,{'-40'});d=str2num(char(result));result=inputdlg({'请输入(0 1)之间的步长:'},'实验5.1',1,{'0.01'}); h=str2num(char(result));x=0:h:1;y=x;N=length(x);y(1)=1;func=inline('1+(y-x).*d');for n=1:N-1k1=func(d,x(n),y(n));k2=func(d,x(n)+h/2,y(n)+k1*h/2);k3=func(d,x(n)+h/2,y(n)+k2*h/2);k4=func(d,x(n)+h,y(n)+k3*h);y(n+1)=y(n)+h*(k1+2*k2+2*k3+k4)/6;endy3=log(exp(d*x)+x);plot(x,y0,x,y1,x,y2,x,y3);hold on;xlabel('x');ylabel('y=log(exp(a*x)+x)');legend('y0(a=40)','y1(a=10)','y2(a=-10)','y3(a=-40)');实验结果(1):注释:由于y 轴数据差异较大,所以图形中对y 值取对数。
实验分析(1):经典R-K 算法的绝对稳定区域是 2.785h 0a -≤≤,因此当h=0.01时,a 的取值范围应该是278.50a -≤≤ 但有5050a -≤≤,因此a 的稳定区域为500a -≤≤。