数值分析试验一
数值分析实验报告一

实验报告课程名称:数值分析课题名称:比较算法专业:勘查技术与工程姓名:韩鹏洋班级:061132班完成日期:2015 年10 月11 日实验报告一、实验名称比较两种算法收敛性及复杂度二、实验目的(1)培养编程与上机调试能力(2)观察不同算法的差异(3)评估各算法稳定性三、实验要求利用matlab计算算法,并绘图观察收敛性。
四、实验原理利用泰勒展开式逼近函数值五、实验题目求ln 2的近似值六、实验步骤(1)写出ln(1+x)展开式(2)利用Matlab编程计算(3)最后结果分析七、实验整体流程图或算法八、程序及其运行结果clear all;ticn=1:100;s=0;for i=1:100s1=(-1).^(i-1)/i;s=s+s1;y(i)=s;endplot(n,y,'ro');tocclear all;ticn=1:50;s=0;for i=1:50s1=2*(1/3).^(2*i-1)/(2*i-1);s=s+s1;y(i)=s;endhold on;plot(n,y,'b-');toc运行结果:方法1时间已过0.369496 秒。
方法2时间已过0.025252 秒。
九、实验结果分析方法一趋近速度慢,复杂度100+100+(1+2+…+99)=5150 方法二趋近快,复杂度150+3+5+7+…+99=2499选用第二种方法更好十、实验体会。
数值分析实验报告

实验一:拉格朗日插值法实验目的1学习和掌握拉格朗日插值多项式。
2.运用拉格朗日插值多项式进行计算。
2.实验过程作出插值点(1.00,0.00),(-1.00,-3.00),(2.00,4.00)算法步骤已知:某些点的坐标以及点数。
输入:条件点数以及这些点的坐标。
输出:根据给定的点求出其对应的拉格朗日插值多项式的值。
程序流程:(1)输入已知点的个数;(2)分别输入已知点的X 坐标;(3)分别输入已知点的Y 坐标;程序如下:#include <iostream>#include <conio.h>#include <malloc.h>float lagrange(float *x,float *y,float xx,int n){ int i,j; float *a,yy=0.0; /*a a=(float*)malloc(n*sizeof(float));for(i=0;i<=n-1;i++){ a[i]=y[i]; for(j=0;j<=n-1;j++)if(j!=i) a[i]*=(xx-x[j])/(x[i]-x[j]); yy+=a[i];}free(a); return yy; }int main(){ int i; int n; float x[20],y[20],xx,yy;printf("Input n:");scanf("%d",&n);if(n<=0) { printf("Error! getch();return 1; }for(i=0;i<=n-1;i++) { printf("x[%d]:",i); scanf("%f",&x[i]); }printf("\n"); for(i=0;i<=n-1;i++) { } The value of n must in (0,20).");printf("y[%d]:",i);scanf("%f",&y[i]); printf("\n"); printf("Input xx:"); scanf("%f",&xx); yy=lagrange(x,y,xx,n); printf("x=%f,y=%f\n",xx,yy); getch(); }举例如下:已知当x=1,-1,2 时f(x)=0,-3,4,求f(1.5)的值。
数值分析实验报告——方程求根

《数值分析》实验报告实验一方程求根一、实验目的:掌握二分法、Newton法、不动点迭代法、弦截法求方程的根的各种计算方法、并实施程序调试和运行,学习应用这些算法于实际问题。
二、实验内容:二分法、Newton法、不动点迭代法、弦截法求方程的根、程序的调试和运行,给出实例的计算结果。
观察初值对收敛性的影响。
三、实验步骤:①、二分法:定义:对于区间[a,b]上连续不断且f(a)·f(b)<0的函数y=f(x),通过不断地把函数f(x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值的方法叫二分法。
实现方法:首先我们设一方程400*(x^4)-300*(x^3)+200*(x^2)-10*x-1=0,并求其在区间[0.1,1]上的根,误差限为e=10^-4。
PS:本方法应用的软件为matlab。
disp('二分法')a=0.1;b=1;tol=0.0001;n0=100;fa=400*(a.^4)-300*(a.^3)+200*(a.^2)-10*a-1;for i=1:n0 p=(a+b)/2;fp=400*(p.^4)-300*(p.^3)+200*(p.^2)-10*p-1;if fp==0||(abs((b-a)/2)<tol)disp('用二分法求得方程的根p=')disp(p)disp('二分迭代次数为:')disp(i)break;end;if fa*fp>0 a=p;else b=p;end;end;if i==n0&&~(fp==0||(abs((b-a)/2)<tol)) disp(n0) disp('次二分迭代后没有求出方程的根')end;程序调试:运行结果:用二分法求得方程的根p=0.1108二分迭代次数为:14②Newton法定义:取定初值x0,找到函数对应的点,然后通过该点作函数切线,交x轴,得到新的横坐标值,然后找函数对应的点,做切线,得到新的横坐标值,重复上述步骤,多次迭代,直到收敛到需要的精度。
数值分析实验2014

数值分析实验(2014,9,16~10,28)信计1201班,人数34人数学系机房数值分析计算实习报告册专业__________________学号_______________姓名_______________2014~2015年第一学期实验一数值计算的工具Matlab1. 解释下MATLABS序的输出结果程序:t=0.1n=1:10e=n/10-n*te 的结果:0 0 -5.5511e-017 0 0-1.1102e-016 -1.1102e-016 0 0 02. 下面MATLABS序的的功能是什么?程序:x=1;while 1+x>1,x=x/2,pause(0.02),e nd用迭代法求出x=x/2,的最小值x=1;while x+x>x,x=2*x,pause(0.02),e nd用迭代法求出x=2*x,的值,使得2x>Xx=1;while x+x>x,x=x/2,pause(0.02),e nd用迭代法求出x=x/2,的最小值,使得2x>X3. 考虑下面二次代数方程的求解问题2ax bx c = 0公式x=电上4ac是熟知的,与之等价地有_____________________________ ,对于2a-b ■ b -4aca =1,b =100000000,c =1,应当如何选择算法。
b ~4ac计算,因为b与b2— 4ac相近,两个相加减不宜应该用2a u做分母3 5 74. 函数sin(x)有幂级数展开sin x = x - x - - ■■3! 5! 7!利用幕级数计算sinx的MATLAB程序为fun cti on s=powers in(x)s=0;t=x;n=1;while s+t~=s;s=s+t ;t=-x A2/ ((n+1)*(n+2) ) *t ;n=n+2 ;endt仁cputime;pause(10);t2=cputime;t0=t2-t1(a) 解释上述程序的终止准则。
数值分析第一次实验报告

数值分析实验报告(一)2016级数学基地班尹烁翔320160928411一、问题重述:hamming级数求和二、问题分析级数为∑1k(k+x)∞k=1易知当X=1时,φ(1)=1我们可以考虑这个新级数:φ(x)−φ(1)用这个级数可以使精度更高,误差更小且迭代次数变少。
通分易得:φ(x)−φ(1)=1k(k+x)−1k(k+1)=1−xk(k+x)(k+1)我们还可以继续算得φ(2)及φ(x)−φ(2)这样精度会继续提高,且迭代次数也会减少。
下面考虑误差:由公式可得∑1−xk(k+x)(k+1)∞k=1<1k3<∫1k3∞n−1<10−10要把误差控制在范围内,需要k即迭代次数至少70001次。
三、算法实现:#include<iostream>#include<iomanip>>using namespace std;int main(){double sum;//sum为级数和double x;//x为代入的自变量int k=1;//k为迭代次数for (x=0; x<=10; x=x+0.1)//对0到10以内进行迭代运算,每次加0.1{sum=0;//每迭代完一个x,级数归零for (k=1; k<=70001; k++)//固定x并对k进行运算{sum=sum+1/(k*(k+x)*(k+1));}sum=(1-x)*sum+1.0;cout<<setiosflags(ios::fixed)<<" "<<setprecision(1)<<x;cout<<setiosflags(ios::fixed)<<" "<<setprecision(10)<<sum<<endl;}for (x=11; x<=290; x++)//对11到290以内进行迭代运算,每次加1{sum=0;for (k=1; k<=70001; k++)//固定x{sum=sum+1/(k*(k+x)*(k+1));}sum=(1-x)*sum+1.0;cout<<setiosflags(ios::fixed)<<" "<<setprecision(1)<<x;cout<<setiosflags(ios::fixed)<<" "<<setprecision(10)<<sum<<endl;}for (x=290; x<=300; x=x+0.1)//对290.1到300以内进行迭代运算,每次加0.1 {sum=0;for (k=1; k<=70001; k++)//固定x{sum=sum+1/(k*(k+x)*(k+1));}sum=(1-x)*sum+1.0;cout<<setiosflags(ios::fixed)<<" "<<setprecision(1)<<x;cout<<setiosflags(ios::fixed)<<" "<<setprecision(10)<<sum<<endl;}return 0;}四、数据结果:0.0 1.6449340667 0.1 1.5346072448 0.2 1.4408788415 0.3 1.3600825867 0.4 1.2895778007 0.5 1.2274112777 0.6 1.1721051961 0.7 1.1225193425 0.8 1.07775887270.9 1.03711091781.0 1.0000000000 1.1 0.9659560305 1.2 0.9345909181 1.3 0.9055811887 1.4 0.8786548819 1.5 0.853******* 1.6 0.8301644486 1.7 0.8082346082 1.8 0.78764591881.9 0.76827137672.0 0.7500000000 2.1 0.7327343381 2.2 0.7163884348 2.3 0.7008861540 2.4 0.6861597923 2.5 0.6721489224 2.6 0.6587994241 2.7 0.6460626684 2.8 0.63389482552.9 0.62225627673.0 0.6111111113 3.1 0.6004266954 3.2 0.5901732990 3.3 0.5803237751 3.4 0.5708532792 3.5 0.5617390263 3.6 0.5529600781 3.7 0.5444971556 3.8 0.53633247553.9 0.52844960504.0 0.5208333336 4.1 0.5134695598 4.2 0.5063451894 4.3 0.49944804604.4 0.49276679034.5 0.48629084784.6 0.48001034484.7 0.47391604974.8 0.46799932104.9 0.46225205975.0 0.45666666715.1 0.45123600545.2 0.44595336325.3 0.44081242345.4 0.43580723395.5 0.43093218145.6 0.42618196715.7 0.42155158445.8 0.41703629915.9 0.41263163046.0 0.40833333386.1 0.40413738606.2 0.40003996986.3 0.39603746096.4 0.39212641636.5 0.38830356206.6 0.38456578316.7 0.38091011406.8 0.37733372946.9 0.37383393577.0 0.37040816397.1 0.36705396157.2 0.36376898657.3 0.36055100097.4 0.35739786507.5 0.35430753177.6 0.35127804177.7 0.34830751887.8 0.34539416537.9 0.34253625788.0 0.33973214368.1 0.33698023688.2 0.33427901518.3 0.33162701648.4 0.32902283598.5 0.32646512338.6 0.32395258008.7 0.32148395698.8 0.31905805168.9 0.31667370669.0 0.31432980689.1 0.31202527809.2 0.30975908459.3 0.30753022799.4 0.30533774499.5 0.30318070609.6 0.30105821429.7 0.29896940319.8 0.29691343609.9 0.294889504210.0 0.292896826311.0 0.274534305112.0 0.258600891013.0 0.244625674714.0 0.232254453215.0 0.221215267616.0 0.211295563617.0 0.202326620618.0 0.194172672719.0 0.186723141720.0 0.179886984821.0 0.173588511822.0 0.167764240823.0 0.162360502724.0 0.157331593125.0 0.152638329626.0 0.148246914727.0 0.144128030628.0 0.140256111329.0 0.136608754530.0 0.133166240731.0 0.129911138432.0 0.126827978033.0 0.123902979834.0 0.121123826635.0 0.118479472636.0 0.115959981337.0 0.113556388138.0 0.111260583139.0 0.109065210040.0 0.106963580041.0 0.104949596342.0 0.103017690143.0 0.101162762944.0 0.099380138345.0 0.097665518246.0 0.096014944747.0 0.094424767348.0 0.092891612649.0 0.091412358750.0 0.089984111851.0 0.088604185152.0 0.087270081253.0 0.085979474654.0 0.084730197955.0 0.083520227556.0 0.082347672757.0 0.081210763958.0 0.080107843659.0 0.079037357560.0 0.077997846261.0 0.076987938262.0 0.076006343163.0 0.075051846164.0 0.074123301865.0 0.073219629966.0 0.072339810267.0 0.071482878568.0 0.070647922969.0 0.069834080070.0 0.069040532171.0 0.068266503872.0 0.067511259473.0 0.066774100374.0 0.066054362875.0 0.065351416076.0 0.064664659377.0 0.063993521278.0 0.063337457279.0 0.062695948280.0 0.062068499081.0 0.061454637382.0 0.0608539117 83.0 0.060265891284.0 0.059690163685.0 0.059126334986.0 0.058574027887.0 0.058032881288.0 0.057502549189.0 0.056982699990.0 0.056473015891.0 0.055973191792.0 0.055482935193.0 0.055001964994.0 0.054530011295.0 0.054066814696.0 0.053612125897.0 0.053165704998.0 0.052727321299.0 0.0522967526100.0 0.0518737853101.0 0.0514582132102.0 0.0510498380103.0 0.0506484683104.0 0.0502539197105.0 0.0498660140106.0 0.0494845798107.0 0.0491094512108.0 0.0487404681109.0 0.0483774760110.0 0.0480203256111.0 0.0476688725112.0 0.0473229772113.0 0.0469825047114.0 0.0466473244115.0 0.0463173100116.0 0.0459923394117.0 0.0456722940118.0 0.0453570593119.0 0.0450465242120.0 0.0447405812121.0 0.0444391259122.0 0.0441420572123.0 0.0438492771124.0 0.0435606905125.0 0.0432762052126.0 0.0429957316127.0 0.0427191829128.0 0.0424464746129.0 0.0421775249130.0 0.0419122542131.0 0.0416505852132.0 0.0413924428133.0 0.0411377539134.0 0.0408864476135.0 0.0406384549136.0 0.0403937087137.0 0.0401521437138.0 0.0399136963139.0 0.0396783048140.0 0.0394459089141.0 0.0392164502142.0 0.0389898715143.0 0.0387661174144.0 0.0385451338145.0 0.0383268679146.0 0.0381112684147.0 0.0378982853148.0 0.0376878698149.0 0.0374799743150.0 0.0372745524151.0 0.0370715590152.0 0.0368709499153.0 0.0366726822154.0 0.0364767137155.0 0.0362830036156.0 0.0360915118157.0 0.0359021994158.0 0.0357150281159.0 0.0355299609160.0 0.0353469614161.0 0.0351659940162.0 0.0349870241163.0 0.0348100178164.0 0.0346349421165.0 0.0344617645166.0 0.0342904534167.0 0.0341209780168.0 0.0339533080169.0 0.0337874138170.0 0.0336232666171.0 0.0334608381 172.0 0.0333001006 173.0 0.0331410270 174.0 0.0329835910 175.0 0.0328277666 176.0 0.0326735285 177.0 0.0325208518 178.0 0.0323697123 179.0 0.0322200861 180.0 0.0320719500 181.0 0.0319252812 182.0 0.0317800574 183.0 0.0316362566 184.0 0.0314938575 185.0 0.0313528391 186.0 0.0312131807 187.0 0.0310748622 188.0 0.0309378640 189.0 0.0308021665 190.0 0.0306677509 191.0 0.0305345985 192.0 0.0304026910 193.0 0.0302720107 194.0 0.0301425399 195.0 0.0300142615 196.0 0.029******* 197.0 0.029******* 198.0 0.029******* 199.0 0.029******* 200.0 0.029******* 201.0 0.029******* 202.0 0.029******* 203.0 0.029******* 204.0 0.028******* 205.0 0.028******* 206.0 0.028******* 207.0 0.028******* 208.0 0.028******* 209.0 0.028******* 210.0 0.028******* 211.0 0.028******* 212.0 0.028******* 213.0 0.027******* 214.0 0.027******* 215.0 0.027*******216.0 0.027*******217.0 0.027*******218.0 0.027*******219.0 0.027*******220.0 0.027*******221.0 0.027*******222.0 0.0269466153223.0 0.0268458877224.0 0.0267459700225.0 0.0266468523226.0 0.0265485248227.0 0.0264509777228.0 0.0263542015229.0 0.0262581869230.0 0.0261629247231.0 0.0260684057232.0 0.025*******233.0 0.025*******234.0 0.025*******235.0 0.025*******236.0 0.025*******237.0 0.025*******238.0 0.025*******239.0 0.025*******240.0 0.025*******241.0 0.025*******242.0 0.025*******243.0 0.024*******244.0 0.024*******245.0 0.024*******246.0 0.024*******247.0 0.024*******248.0 0.024*******249.0 0.024*******250.0 0.024*******251.0 0.024*******252.0 0.024*******253.0 0.024*******254.0 0.024*******255.0 0.024*******256.0 0.023*******257.0 0.023*******258.0 0.023*******259.0 0.023*******260.0 0.023*******261.0 0.023*******262.0 0.023*******263.0 0.023*******264.0 0.023*******265.0 0.023*******266.0 0.023*******267.0 0.023*******268.0 0.023*******269.0 0.022*******270.0 0.022*******271.0 0.022*******272.0 0.022*******273.0 0.022*******274.0 0.022*******275.0 0.022*******276.0 0.022*******277.0 0.022*******278.0 0.022*******279.0 0.022*******280.0 0.022*******281.0 0.022*******282.0 0.022*******283.0 0.021*******284.0 0.021*******285.0 0.021*******286.0 0.021*******287.0 0.021*******288.0 0.021*******289.0 0.021*******290.0 0.021*******290.1 0.021*******290.2 0.021*******290.3 0.021*******290.4 0.021*******290.5 0.021*******290.6 0.021*******290.7 0.021*******290.8 0.021*******290.9 0.021*******291.0 0.021*******291.1 0.021*******291.2 0.021*******291.3 0.021******* 291.4 0.021******* 291.5 0.021******* 291.6 0.021******* 291.7 0.021******* 291.8 0.021******* 291.9 0.021******* 292.0 0.021******* 292.1 0.021******* 292.2 0.021******* 292.3 0.021******* 292.4 0.021******* 292.5 0.021******* 292.6 0.021******* 292.7 0.021******* 292.8 0.021******* 292.9 0.021******* 293.0 0.021******* 293.1 0.021******* 293.2 0.021******* 293.3 0.021******* 293.4 0.021******* 293.5 0.021******* 293.6 0.021******* 293.7 0.021******* 293.8 0.021******* 293.9 0.021******* 294.0 0.021******* 294.1 0.021******* 294.2 0.021******* 294.3 0.021******* 294.4 0.021******* 294.5 0.021******* 294.6 0.021******* 294.7 0.021******* 294.8 0.021******* 294.9 0.021******* 295.0 0.021******* 295.1 0.021******* 295.2 0.021******* 295.3 0.021******* 295.4 0.021******* 295.5 0.021******* 295.6 0.021******* 295.7 0.021******* 295.8 0.021******* 295.9 0.021******* 296.0 0.021******* 296.1 0.021******* 296.2 0.021******* 296.3 0.021******* 296.4 0.021******* 296.5 0.021******* 296.6 0.021******* 296.7 0.021******* 296.8 0.021******* 296.9 0.021******* 297.0 0.021******* 297.1 0.021******* 297.2 0.021******* 297.3 0.021******* 297.4 0.021******* 297.5 0.021******* 297.6 0.021******* 297.7 0.021******* 297.8 0.021******* 297.9 0.021******* 298.0 0.021******* 298.1 0.021******* 298.2 0.021******* 298.3 0.021******* 298.4 0.021******* 298.5 0.021******* 298.6 0.021******* 298.7 0.021******* 298.8 0.021******* 298.9 0.021******* 299.0 0.021******* 299.1 0.020******* 299.2 0.020******* 299.3 0.020******* 299.4 0.020******* 299.5 0.020******* 299.6 0.020******* 299.7 0.020******* 299.8 0.020******* 299.9 0.020******* 300.0 0.020*******。
数值分析实验1-1

实验1_1 病态问题实验目的:研究问题本身对扰动的敏感性实验要求:1.选择充分小的ess反复进行实验,记录结果的变化并进行分析。
如果扰动项的系数ε很小,我们自然感觉方程(E.1.1)和方程(E.1.2)的解应相差很小。
计算中你有什么出乎意料的发现?表明有些解关于如此的扰动敏感性如何?2.将方程(E.1.2)中的扰动项改成18xε或其他形式,实验中又有怎样的现象出现?3.请从理论上分析产生这一问题的根源。
注意我们可以将方程(E.1.2)写成展开的形式2019=-+=p x a x ax(,)0同时将方程的解x看成是系数a的函数,考察方程的某个解关于a的扰动是否敏感?与研究它关于a的倒数的大小有何关系?为什么?你发现了什么现象,哪些根关于a的变化更敏感?程序代码:%function t_charpt1_1clcresult=inputdlg({'请输入扰动项:在[0 20]之间的整数:'},'charp 1-1',1,{'19'});Numb=str2num(char(result));if((Numb>20)||(Numb<0))errordlg('请输入正确的扰动项:【0 20】之间的整数!');end result=inputdlg({'请输入(0 1)间的扰动常数:'},'charpt 1-1',1,{'0.00001'});ess=str2num(char(result));ve=zeros(1,21);ve(21-Numb)=ess;root=roots(poly(1:20)+ve);disp(['对扰动项',num2str(Numb),'加扰动',num2str(ess),'得到的全部根为:']);disp(num2str(root));分析过程:(1)对扰动项19x 的各种扰动的实验结果如表1所示:表1 对x19的系数扰动结果分析:从表中可以看出,以下几点:第一、扰动量ess越小,根的变化也越小第二、随着扰动量ess的增加,部分根出现复数,复数的实部的绝对值在不断增大,虚部系数的绝对值也在不断增大;而值比较小的根变化幅度比值大的根变化小。
数值分析实验报告模板

数值分析实验报告模板篇一:数值分析实验报告(一)(完整)数值分析实验报告12345篇二:数值分析实验报告实验报告一题目:非线性方程求解摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。
本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。
利用二分法求解给定非线性方程的根,在给定的范围内,假设f(x,y)在[a,b]上连续,f(a)xf(b) 直接影响迭代的次数甚至迭代的收敛与发散。
即若x0 偏离所求根较远,Newton法可能发散的结论。
并且本实验中还利用利用改进的Newton法求解同样的方程,且将结果与Newton法的结果比较分析。
前言:(目的和意义)掌握二分法与Newton法的基本原理和应用。
掌握二分法的原理,验证二分法,在选对有根区间的前提下,必是收敛,但精度不够。
熟悉Matlab语言编程,学习编程要点。
体会Newton使用时的优点,和局部收敛性,而在初值选取不当时,会发散。
数学原理:对于一个非线性方程的数值解法很多。
在此介绍两种最常见的方法:二分法和Newton法。
对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b) Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式xk?1?xk?f(xk) f'(xk)产生逼近解x*的迭代数列{xk},这就是Newton法的思想。
当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。
另外,若将该迭代公式改进为xk?1?xk?rf(xk) 'f(xk)其中r为要求的方程的根的重数,这就是改进的Newton 法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。
程序设计:本实验采用Matlab的M文件编写。
其中待求解的方程写成function的方式,如下function y=f(x);y=-x*x-sin(x);写成如上形式即可,下面给出主程序。
数值分析实验报告(一)(完整)

Newton插值伪代码:
/*输入参数
*x=(x0,x1….,xn),插值节点
*y=(y0,y1,…,yn);被插函数f(x)在插值节点处的函数值
*t求插值函数Pn(x)在t处的函数值
*返回值插值函数Pn(x)在t处的函数值
*/
procedureNewton
forj=0to n
d1jyj;
fori=j:n
d(i,j)=(d(i,j-1)-d(i-1,j-1))./(x0(i)-x0(i-j+1));%求差商表矩阵中各值
end
end
fork=1:m
z=x(k);
result=d(1,1);
temp=1;
fori=2:n
temp=temp*(z-x0(i-1));
result=result+d(i,i)*temp;
ifi≠j
li(t)li(t)*(t-xi)/(xi-xj);
endif
endfor
resultresult+yi*li(t) ;
endfor
returnresult;
end procedure
Lagrange插值子程序lagr1:
functiony=lagr1(x0,y0,x)%x0为插值点的向量,y0为插值点处的函数值向量,x为未知的点向量
数值分析实验报告
姓名
学号
系别
数学系
班级
09信息(2)班
主讲教师
王丹
指导教师
王丹
实验日期
专业
信息与计算科学
课程名称
数值分析
同组实验者
无
一、实验名称:
实验一、插值多项式的收敛性实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数值分析第一次实验报告
姓名: 学号:
实验1:
1. 实验项目的性质和任务
通过上机实验,使学生对病态问题、线性方程组求解和函数的数值逼近方法有一个初步理解。
2.教学内容和要求 1)对高阶多多项式 20
1()(1)(2)(20)()k p x x x x x k ==---=-∏
编程求下面方程的解 19()0p x x ε+=
并绘图演示方程的解与扰动量ε的关系。
(实验)
2)对2~20n =,生成对应的Hilbert 矩阵,计算矩阵的条件数;通过先确定解获得常向量b 的方法,确定方程组 n H x b =
最后,用矩阵分解方法求解方程组,并分析计算结果。
(第三章,实验题4)
3)对函数 2
1()[1,1]125f x x x =∈-+
的Chebyshev 点 (21)cos(
)
1,2,...,12(1)
k k x k n n π
-==++
编程进行Lagrange 插值,并分析插值结果。
(第四章 实验1)
项目涉及核心知识点
病态方程求解、矩阵分解和方程组求解、Lagrange插值。
重点与难点
算法设计和matlab编程。
1)a.实验方案:
先创建一个20*50的零矩阵X,然后利用Matlab中的roots()和poly()函数将50个不同的ess扰动值所产生的50个解向量分别存入X矩阵中。
然后再将ess向量分别和X的20个行向量绘图。
即可直观的看出充分小的扰动值会产生非常大的偏差。
即证明了这个问题的病态性。
b.编写程序:
>> X=zeros(20,50);
>> ve=zeros(1,21);
>> ess=linspace(0,,50);k=1;
>> while k<=50
ve(2)=ess(k);
X(1:20,k)=roots(poly(1:20)+ve);
k=k+1;
end
>> m=1;
>> while m<=20
figure(m),plot(ess,X(m,:));
m=m+1; end
C.实验结果分析和拓展
由上面的实验结果可以看出一个充分小的扰动值可以让方程的解产
生非常大的偏差,而且这个偏差随着ess的变大偏差也随即变大。
但可以看出在相对小的根处根比较稳定,也就是说这些根关于ess并不敏感,而在较大根处时,根很不稳定,即这些解关于ess的变化是敏感的。
这就说明了这个问题本身就是一个病态问题,与算法好坏无关。
若扰动在x^18处,只要把程序中的ve(2)改为ve(3)即可,其图形和此类似。
d.实验结论:
高次多项式扰动求方程解问题是一个病态问题。
2)a.实验方案:
先创建一个20*20的零矩阵A,再通过给定解x和Hilbert矩阵求出列向量b,然后通过LU分解法求出方程HX=b的解X,然后将x-X’这一行向量存入A矩阵中,形成一循环,最后,如果Hilbert矩阵非病态的话,则可输出一个20*20的对角矩阵。
b.编写程序:
>> n=2;
>> A=zeros(20,20);
>> while n<=20
x=1:n;
H=hilb(n);
b=H*x';
[L U]=lu(H);
y=L\b;X=U\y;
A(n,1:n)=x-X';
n=n+1;
end
Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = . Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = . Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = . Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = . Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = . Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = .
>> A
A =
+003 *
Columns 1 through 10
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0
0 0 0 0
0 0 0
0 0
Columns 11 through 20
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0
0 0 0 0
0 0 0
0 0
C.实验结果分析和拓展:
当Hilbert矩阵的阶数比较小时,其解X和给定解x偏差不大;但当Hilbert矩阵的阶数变大时,偏差就会变大。
这就说明了Hilbert矩阵是一组病态矩阵,从Matlab运行中的Warning可以看出,其条件数相当大。
d.实验结论:
Hilbert矩阵是一组病态矩阵,用它来做线性方程的系数矩阵时,往往会得出与精确解相差较大的解。
3)a.实验方案:
在区间【-1,1】上取点,先按Chebyshev取点,即xk=cos((2k-1)pi/2/(n+1))取点,然后再进行拉格朗日插值,绘出图和插值点。
而后再进行均匀取点再拉格朗日插值。
将两种插值结果进行比较。
b.编程实现:
for a=1:10
b=a+1;
for c=1:b
X(c)=cos((2*c-1)*pi/2/(a+1));
Y(c)=1/(1+25*X(c)^2);
x=-1::1;
end
m=length(x);
for i=1:m
z=x(i);s=0;
for k=1:b
L=1;
for j=1:b
if j~=k
L=L*(z-X(j))/(X(k)-X(j));
end
end
s=s+L*Y(k);
end
y(i)=s;
end
figure(1)
plot(x,y,'r');
hold on;
figure(2)
plot(X,Y,'b*')
hold on
end
-1
-0.8-0.6-0.4-0.200.20.40.60.81
-0.50
0.5
1
-1
-0.8
-0.6
-0.4
-0.2
0.2
0.4
0.6
0.8
1
for a=2:2:10 b=a+1;
X=linspace(-1,1,b);
Y=1./(1+25*X.^2);
x=-1::1;
m=length(x);
for i=1:m
z=x(i);s=0;
for k=1:b
L=1;
for j=1:b
if j~=k
L=L*(z-X(j))/(X(k)-X(j));
end
end
s=s+L*Y(k);
end
y(i)=s;
end
figure(1)
plot(x,y,'r');
hold on;
figure(2)
plot(X,Y,'b*')
hold on
end
-1-0.8-0.6-0.4-0.200.20.40.60.81
-1-0.5
0.5
1
1.5
2
-1-0.8-0.6-0.4-0.200.20.40.60.81
C .实验结果分析及拓展:
均匀插值时,当n 比较大时,就会出现多项式插值的Runge 现象,即当插值节点的个数n 增加时,Lagrange 插值多项式对原来函数的近似并非越来越好。
当进行非
等距节点插值时,其近似效果明显要比均匀插值是要好。
原因是非均匀插值时,在远离原点处的插值节点比较密集,所以其插值近似效果要比均匀插值时的效果要好。
d.实验结论:
利用Chebyshev点进行非等距节点插值的对原函数的近似效果要比均匀节点插值的好。