数值分析实验一
- 格式:docx
- 大小:44.67 KB
- 文档页数:10
实验报告课程名称:数值分析课题名称:比较算法专业:勘查技术与工程姓名:韩鹏洋班级: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,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.选择充分小的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);写成如上形式即可,下面给出主程序。
《数值分析》 课程实验指导书实验一 函数插值方法一、问题提出对于给定的一元函数)(x f y =的n+1个节点值(),0,1,,j j y f x j n ==。
试用Lagrange 公式求其插值多项式或分段二次Lagrange 插值多项式。
数据如下:(1)求五次Lagrange 多项式5L ()x ,和分段三次插值多项式,计算(0.596)f ,(0.99)f 的值。
(提示:结果为(0.596)0.625732f ≈, (0.99) 1.05423f ≈ )(2)试构造Lagrange 多项式6L ()x ,计算的(1.8)f ,(6.15)f 值。
(提示:结果为(1.8)0.164762f ≈, (6.15)0.001266f ≈ )二、要求1、 利用Lagrange 插值公式00,()n ni n k k i i k k i x x L x y x x ==≠⎛⎫-= ⎪-⎝⎭∑∏编写出插值多项式程序; 2、 给出插值多项式或分段三次插值多项式的表达式;3、 根据节点选取原则,对问题(2)用三点插值或二点插值,其结果如何;4、 对此插值问题用Newton 插值多项式其结果如何。
四、实验分析:Lagrange 插值多项式的表达式:1,,2,1,)()()(,)()(1111+=--==∏∑+≠=+=n i x x x x x l x l y x L n i j j j i j i n i i i 。
其中)(x l i 被称为插值基函数,实际上是一个n 次多项式。
)(x l i 的这种表示具有较好的对称性。
公式具有两大优点:(1)求插值多项式,不需要求解线性方程组,当已知数据点较多时,此公式更能显示出优越性。
(2)函数值可以用符号形式表示,数据点未确定的纵坐标可用多项式表示。
Newton 插值多项式如下:10010,()()[,,]()k n n j k k j j k N x f x f x x x x -==≠=+•-∑∏ 其中: 00,0()()[,,]k i k i i j j j i k f x x x f x x ==≠-=∑∏Newton 插值多项式的优点是:当每增加一个节点时,只增加一项多项式。
误差分析实验1.1(问题)实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。
对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。
通过本实验可获得一个初步体会。
数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。
病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。
问题提出:考虑一个高次的代数多项式)1.1()()20()2)(1()(201∏=-=---=k k x x x x x p显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。
现考虑该多项式的一个扰动)2.1(0)(19=+x x p ε其中ε是一个非常小的数。
这相当于是对(1.1)中19x 的系数作一个小的扰动。
我们希望比较(1.1)和(1.2)根的差别,从而分析方程(1.1)的解对扰动的敏感性。
实验内容:为了实现方便,我们先介绍两个Matlab 函数:“roots ”和“poly ”。
roots(a)u =其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。
设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程01121=+++++-n n n n a x a x a x a的全部根;而函数poly(v)b =的输出b 是一个n+1维变量,它是以n 维变量v 的各分量为根的多项式的系数。
可见“roots ”和“poly ”是两个互逆的运算函数。
;000000001.0=ess );21,1(zeros ve = ;)2(ess ve =))20:1((ve poly roots +上述简单的Matlab 程序便得到(1.2)的全部根,程序中的“ess ”即是(1.2)中的ε。
实验要求:(1)选择充分小的ess ,反复进行上述实验,记录结果的变化并分析它们。
工程数学—数值分析实验报告(一)2010年10月23日郑州轻工业学院 机电工程系制冷与低温专业 10级研究生 王哲一.实验目的通过本实验初步了解学习数值分析的课程内涵,来解决现实生活中,工程应用中的线性方程组的问题,利用高斯迭代解决线性方程组的问题,利用三角变换解决线性方程的问题等等。
主要了解掌握线性方程组的问题的消去解法、迭代解法。
掌握高斯消去法和迭代法。
培养编程与上机调试能力及应用数学软件(excel ,Matlab ,Linggo )等实现这几种方法。
二.实验内容设有线性方程组Ax = b ,其中⎪⎪⎪⎪⎪⎭⎫⎝⎛=nn n n n n a a a a a a a a a A212222111211为非奇异阵⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=n x x x x 21⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=n b bb b 21关于线性方程组的数值解法一般有两类:直接法与迭代法。
(1)直接法就是经过有限步算术运算,可求得方程组精确解的方法(若计算过程中没有舍入误差)。
但实际计算中由于舍入误差的存在和影响,这种方法也只能求得线性方程组的近似解。
(2)迭代法就是用某种极限过程去逐步逼近线性方程组精确解的方法。
迭代法具有需要计算机的存贮单元较少、程序设计简单、原始系数矩阵在计算过程中始终不变等优点,但存在收敛性及收敛速度问题。
迭代法是解大型稀疏矩阵方程组(尤其是由微分方程离散后得到的大型方程组)的重要方法。
(3)高斯(Gauss )消去法是解线性方程组最常用的方法之一。
基本思想:是通过逐步消元(行的初等变换),把方程组化为系数矩阵为三角形矩阵的同解方程组,然后用回代法解此三角形方程组(简单形式)得原方程组的解。
1.高斯消去法解线性方程组基本步骤: 1)消元将原方程组记为A (1)x =b (1),其中A (1)=(a ij (1))=(a ij ),b (1)=b ,(1)第一次消元⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡=)1()1(2)1(1)1()1(2)1(1)1(2)1(22)1(21)1(1)1(12)1(11)1()1(]|[n nnn n n nb b b a a a a a a a a a b A⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡⇒)2()2(2)1(1)2()2(2)2(2)2(22)1(1)1(12)1(1100n nnn n nb b b a a a a a a a]|[)2()2(b A = 其中:n i a a b b a a b b a a n j aa a aai i iii ji ijij,...,3,21,...,3,2)1(11)1(1)1(1)1(1)1(11)1(1)1()2()1(11)1(1)1(1)1(11)1(1)1()2(=⎪⎪⎭⎪⎪⎬⎫-==-=倍的减去—倍行的减去第—2)第k 次消元⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=)()()1(1)()()()()1(1)1(1)1(11)()(0]|[k n k k k nn k nkk knk kkn k k k b b b a a a a a a a b A]|[00)1()1()1()1(1)()1(1)1()1(1,)1(,1)1(1,1)()(1,)()1(1)1(11)1(1)1(11+++++++++++++++=⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡⇒k k k n k k k k k nnk k n k nk k k k k kn k k k k kk n k k b A b b b b a a a a a a a a a a ank k i a a b b a a bba a k n k k j aa a a a k kkk ik k k k kk kkk ikk ik i k kk k ikk ijk kk k ik k ijk ij,...,2,1,...,2,1)()()()()()()()1()()()()()()()1(++=⎪⎪⎭⎪⎪⎬⎫-=++=-=++倍的减去—倍行的减去第—注:为减少计算量,令,)()(k kkk ik ik aa l =则n k k i bl bbn k k j a l a a k kik k i k i k ij ik k ij k ij ,...,2,1,...,2,1)()()1()()()1(++=⎭⎬⎫-=++=-=++3)当k =n –1时得⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡=)()2(2)1(1)()2(2)2(22)1(1)1(12)1(11)()(]|[n n n nnn nn n b b b a a a a a a b A完成第n-1次消元后得到与原方程组等价的三角形方程组A (n)x=b (n)注:当det(A)≠0时,显然有a ii (i)≠0,(i=1,…,n),称为主元素。
数值分析实验实验报告数值分析实验实验报告引言在现代科学与工程领域,数值分析是一项重要的技术手段。
通过数值方法,我们可以利用计算机模拟和解决各种实际问题,如物理、化学、生物、经济等领域中的方程求解、优化问题、数据拟合等。
本实验旨在通过实际案例,探讨数值分析的应用和效果。
实验一:方程求解首先,我们考虑一个简单的方程求解问题。
假设我们需要求解方程f(x) = 0的根,其中f(x)是一个在给定区间[a, b]上连续且单调的函数。
为了实现这个目标,我们可以采用二分法、牛顿法、弦截法等数值方法。
在本实验中,我们选择使用二分法来求解方程f(x) = 0。
这种方法的基本思想是通过不断缩小区间[a, b]的范围,直到找到一个近似的根。
我们首先选取一个中间点c,计算f(c)的值,然后根据f(c)与0的关系,将区间[a, b]分成两部分。
重复这个过程,直到找到满足精度要求的根。
实验二:数据拟合接下来,我们考虑一个数据拟合的问题。
假设我们有一组离散的数据点,我们希望找到一个函数,使得该函数与这些数据点的拟合误差最小。
为了实现这个目标,我们可以采用最小二乘法等数值方法。
在本实验中,我们选择使用最小二乘法来进行数据拟合。
这种方法的基本思想是通过最小化数据点与拟合函数之间的误差平方和,来确定拟合函数的参数。
我们首先选择一个拟合函数的形式,如线性函数、多项式函数等。
然后,通过最小化误差平方和的方法,计算出拟合函数的参数。
实验三:优化问题最后,我们考虑一个优化问题。
假设我们需要在给定的约束条件下,找到一个使得目标函数取得最大或最小值的变量。
为了实现这个目标,我们可以采用梯度下降法、遗传算法等数值方法。
在本实验中,我们选择使用梯度下降法来解决优化问题。
这种方法的基本思想是通过迭代的方式,不断调整变量的取值,直到找到一个满足约束条件的最优解。
我们首先计算目标函数关于变量的梯度,然后根据梯度的方向和大小,更新变量的取值。
通过不断迭代,我们可以逐步接近最优解。
数值分析实验一 列主元消去法一、实验目的:1)掌握列主元消去法的基本思想。
2)了解数值计算解线性方程组的实现范围、计算公式。
3)培养上机编程及调试的能力。
二、实验设备和实验环境操作系统: Windows XP Professional 软件: MATLAB7.0或Visual C++ 6.0 三、实验内容及要求:对于线性方程组 B Ax =,记方程组的系数矩阵为:⎪⎪⎪⎪⎪⎭⎫⎝⎛=nn n n n n αααααααααΑK M M M ΛΛ212222111211 , ⎪⎪⎪⎪⎪⎭⎫⎝⎛=n b b b B M 21 , ⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=n x x x x M 21 用高斯列主元消元法求解。
并用高斯完全主元消去法和列主元消去法进行比较,同时得出高斯列主元消去法的优缺点。
四、算法描述: 1. 消元过程 对1,,1-=n k Λ (1)选主元: (a )按列选主元k p ,即确定r ,使得ik ni k rk k a a p ≤≤=≡max(b )若0=k p ,停止计算(c )若k r ≠(进行交换) ),,1,(n k k j a a rj ik Λ+=↔r k b b ↔ , det det ←(2)对:,,1n k i Λ+= ik kk ik ik a a a m ⇒=/ i k ik i b b a b ⇒-对:,,1n k j Λ+= ij kj ik ij a a a a ⇒-(3)det .det kk a ← 2.回代过程(a )若0=nn a ,输出失败信息,停止计算 (b )n nn n b a b ⇒/ det .det nn a ← (c )对1,,1Λ-=n i ∑+=⇒-ni j i iijiji b ab a b 1/)(注: 在计算程序中对0=k P 的判断用ε<k P (ε是预先设置的很小正数) 四、实验步骤与结果分析(一) 实验源程序function x=liezhuyuan(A,b) %列主元消去法% A,b 线性方程的系数矩阵 % x 求解函数向量 n=length(A); x=zeros(n,1); c=zeros(1,n); t=0; for i=1: n-1 max=abs(A(i,i));m=i; % 寻找最大主元 for j=i+1:nif max<abs(A(j,i)) max=abs(A(j,i)); m=j; end endif m~=i % 调换矩阵的两行 for k=1:n c(k)=A(i,k);A(i,k)=A(m,k);A(m,k)=c(k);endt=b(i);b(i)=b(m);b(m)=t;endfor k=i+1:n % 消元for j=i+1:nA(k,j)=A(k,j)-A(i,j)*A(k,i)/A(i,i);endb(k)=b(k)-b(i)*A(k,i)/A(i,i);A(k,i)=0;endendx(n)=b(n)/A(n,n);for i=n-1:-1:1 %迭代求解sum=0;for j=i+1:nsum=sum+A(i,j)*x(j);endx(i)=(b(i)-sum)/A(i,i);endfunction x=wanquanxiaoyuan(A,b) %完全消去法% A,b 线性方程的系数矩阵% x 求解函数向量n=length(A);x=zeros(n,1);xx=zeros(n,1);c=zeros(1,n);t=0;for i=1:nxx(i)=i;endfor i=1:n-1max=abs(A(i,i));m1=i; % 横向寻找最大主元 m2=i; % 纵向寻找最大主元 for j=i:nfor k=i:nif max<abs(A(j,k))max=abs(A(j,k));m1=j;m2=k;endendendif m1~=i % 调换矩阵的两行for k=1:nc(k)=A(i,k);A(i,k)=A(m1,k);A(m1,k)=c(k);endt=b(i);b(i)=b(m1);b(m1)=t;for q=1:nif xx(q)==m1 %记录换行的下标xx(q)=i;xx(i)=m1;endendendif m2~=ifor k=1:nc(k)=A(k,i);A(k,i)=A(k,m2);A(k,m2)=c(k);endendfor k=i+1:n % 消元for j=i+1:nA(k,j)=A(k,j)-A(i,j)*A(k,i)/A(i,i);endb(k)=b(k)-b(i)*A(k,i)/A(i,i);A(k,i)=0;endendx(n)=b(n)/A(n,n);for i=n-1:-1:1 %迭代求解sum=0;for j=i+1:nsum=sum+A(i,j)*x(j);endx(i)=(b(i)-sum)/A(i,i);endfor i=1:n % 回归x值下标的位置 for j=1:nif xx(i)==jtemp=xx(i);xx(i)=xx(j); xx(j)=temp;temp=x(i);x(i)=x(j); x(j)=temp; end end end(二) 实验数据⎪⎩⎪⎨⎧=++-=++-=++035.3643.5072.1835.2137.2623.4712.3347.1183.1555.3304.2101.0321321321x x x x x x x x x ⎪⎩⎪⎨⎧-=+--=-+-=--71912263532311321321321x x x x x x x x x MATLAB 程序如下:程序(1)程序(2)(三) 实验结果分析 结果:程序(1)运行结果:误差分析:程序(2)运行结果:误差分析:分析:高斯完全主元消去法和高斯列主元消去法相比较,每步消元过程所选主元的范围更广,故它对控制舍入误差更有效,求解结果更加精确可靠。
数值分析实验报告1数值分析上机实验报告(注:本实验报告中所有程序均为MATLAB语⾔程序)班级:姓名:学号:⼀章1、利⽤数值积分计算n I =21n x ex e -?dx (n=0,1,2,……). ⽬的:定积分数值求解原理:梯形公式法程序:clearformat long ;k=input('k=');m=input('m=');for n=1:kh=1/m;x=0:h:1;f=x.^n.*exp(x.^2);for i=1:ms(i)=(f(i)+f(i+1))*h/2;ends=sum(s);I(n)=exp(-1)*s;endI 运⾏结果:k=9m=1000I =Columns 1 through 60.3160604988 0.2309605799 0.1839401373 0.1535601302 0.1321211422 0.1161015912Columns 7 through 90.1036390735 0.0936475974 0.08544762262、利⽤秦九韶算法计算当0a =5,n a =21n a -+3;n=100,x=0.5;n=150,x=13多项式n p (x )=n a n x +…11n n a x --…1a x +0a 的值。
⽬的:通过调整程序以简化计算步骤,减少运算次数原理:秦久韶算法程序:n=input('n=');x=input('x=');a(1)=5;for k=1:n;a(k+1)=2.*a(k)+3;ends(n+1)=a(n+1);for i=n:-1:1s(i)=x.*s(i+1)+a(i);endPnx=s(1)运⾏结果:n=100x=0.5Pnx =802.0000000n=150x=13Pnx =1.4659714820e+2133、设0Y =28,按递推公式n Y = 1n Y -100Y ,500Y ≈27.982(五位有效数字),试问计算100Y 、500Y 将有多⼤的误差。
数值分析 实验一
一、实验目的
熟悉MATLAB 编程。
学习线性方程组数值解法的程序设计算法。
二、实验题目
1.给定线性方程组
(a )用LU 分解和列主元消去法求解。
输出A=LU 的分解的L 和U ,detA 以及解向量x 。
(b )将2.099999改为2.1,5.900001改为5.9.用列主元消去法求解。
输出detA 及解向量 x ,并与(a )的结果比较。
2。
线性方程组Ax=b 的A 及b 为
10 7 8 9 32
7 5 6 5 23
A= 8 6 10 9 b= 33
7 5 9 10 31
则解x=(1,1,1,1)T 用MATLAB 内部函数求detA 及A 的所有特征值和cond (A )2。
若令
⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡----15900001.582012151526099999.2310
7104321x x x x
10 7 8.1 7.2
A+δA= 7.08 5.04 6 5
8 5.98 9.89 9
6.99 5 9 9.98
求解(A+δA )(x+δx )=b,输出向量δx 和2 从理论结果和实际计算两方面分析线性方程组Ax=b 解的相对误差2 及A 的相对误差2 的关系。
三、实验原理与理论基础
1.本题用LU 分解法及列主元高斯消去法
LU 分解法原理:
解Ax=b 相当于解两个三角方程,即 Ly=b,Ux=y 分解求出x 和y 。
列主元消去法原理:
利用逐次消去未知数的方法,把线性方程组 Ax=b 化为与其等价的三角形线性方程组,求解线性方程组的方法可用回代的方法求。
2.本题通过 计算式:
)
()()(min max 2122T T AA A A A
A A cond λλ==- 来计算A 的谱子条件数。
四、实验内容
1.解:
(a )LU 分解法:
程序如下:
function [ x ] = zhijiejiefangcheng( A,b )
n=length(A);
%求出LU分解矩阵
for i=1:n
U(1,i)=A(1,i);
end
L(1,1)=A(1,1);
for i=2:n
L(i,1)=A(i,1)/U(1,1);
end
for r=2:n
for i=r:n
p=0;q=0;
for k=1:(r-1)
p=p+L(r,k)*U(k,i);
q=q+L(i,k)*U(k,r);
end
U(r,i)=A(r,i)-p;
if r<n L(i,r)=(A(i,r)-q)/U(r,r);
end
end
end
for i=1:n
for j=1:n
if i==j
L(i,j)=1;
end
end
end
L
U
%计算X的值
y(1)=b(1);
for i=2:n
e=0;
for k=1:(i-1)
e=e+L(i,k)*y(k);
end
y(i)=b(i)-e;
end
X(n)=y(n)/U(n,n);
for i=(n-1):-1:1
f=0;
for k=(i+1):n
f=f+U(i,k)*X(k);
end
X(i)=(y(i)-f)/U(i,i);
end
X
%计算detA的值
detA=det(L*U)
列主元消去法:
程序如下:
function [ x ] = gauss( A,b )
A=[10 -7 0 1;-3 2.099999 6 2;5 -1 5 -1;2 1 0 2];
b=[8;5.900001;5;1];
[n,n]=size(A);
x=zeros(n,1);
Aug=[A,b]; %增广矩阵
for k=1:n-1
[piv,r]=max(abs(Aug(k:n,k))); %找列主元所在子矩阵的行r r=r+k-1; %列主元所在矩阵的行
if r>k
temp=Aug(k,:);
Aug(k,:)=Aug(r,:);
Aug(r,:)=temp;
end
if Aug(k,k)==0,
'error';
end
for p=k+1:n
Aug(p,:)=Aug(p,:)-Aug(k,:)*Aug(p,k)/Aug(k,k);
end
end
A=Aug(:,1:n);b=Aug(:,n+1);
x(n)=b(n)/A(n,n);
for k=n-1:-1:1
x(k)=b(k);
for p=n:-1:k+1
x(k)=x(k)-A(k,p)*x(p);
end
x(k)=x(k)/A(k,k);
end
detA=det(A)
End
(b)改动数字后列主元消去法
程序如下:
function [ x ] = gauss2( A,b )
A=[10 -7 0 1;-3 2.1 6 2;5 -1 5 -1;2 1 0 2];
b=[8;5.1;5;1];
[n,n]=size(A);
x=zeros(n,1);
Aug=[A,b]; %增广矩阵
for k=1:n-1
[piv,r]=max(abs(Aug(k:n,k))); %找列主元所在子矩阵的行r
r=r+k-1; %列主元所在矩阵的行
if r>k
temp=Aug(k,:);
Aug(k,:)=Aug(r,:);
Aug(r,:)=temp;
end
if Aug(k,k)==0,
'error';
end
for p=k+1:n
Aug(p,:)=Aug(p,:)-Aug(k,:)*Aug(p,k)/Aug(k,k);
end
end
A=Aug(:,1:n);b=Aug(:,n+1);
x(n)=b(n)/A(n,n);
for k=n-1:-1:1
x(k)=b(k);
for p=n:-1:k+1
x(k)=x(k)-A(k,p)*x(p);
end
x(k)=x(k)/A(k,k);
end
detA=det(A)
end
2.解:求detA及A的所有特征值和cond(A)2的程序如下:
function [x] = jhls( A )
A=[10 7 8 7;7 5 6 5;8 6 10 9;7 5 9 10];
detA=det(A) %求A的行列式值
[D]=eig(A) %求行列式的特征值
x=cond(A,2) %求cond(A)2
end
求解(A+&A)(x+&x)=b 输出向量2x δδ和x 的程序如下:
>> A=[10 7 8.1 7.2;7.08 5.04 6 5;8 5.98 9.89 9;6.99 5 9 9.98];
>> b=[32 23 33 31]';
>> x=A\b
x =
-9.5863
18.3741
-3.2258
3.5240
>> x0=[1 1 1 1]';
>> x1=x-x0
x1 =
10.5863
17.3741
-4.2258
2.5240
>> A=[10 7 8.1 7.2;7.08 5.04 6 5;8 5.98 9.89 9;6.99 5 9 9.98];
A0=[10 7 8 7;7 5 6 5;8 6 10 9;7 5 9 10];
b=[32 23 33 31]';
x0=[1 1 1 1]';
x=A\b;
x1=x-x0;
norm(x1,2); % ||δx||2/||x||2的值
A1=A-A0; %||δA||2/||A||2的值
>> norm(x1,2)/norm(x0,2)
ans =
10.4661
>> norm(A1,2)/norm(A0,2)
ans =
0.0076
由上式计算结果可知,A相对误差为0.0076,而x的相对误差为10.4661,所以方程组是病态的,A的条件数为2984.1远大于1,当A只有很小的误差就会给结果带来很大的影响。
五、实验结果
1.(a)LU分解法
列主元消去法:
(b)改动数字后计算结果
虽然只对矩阵中两个数做了很小的改动,但是计算结果却有很大差别。
对行列式A值没有太大影响,对解向量x的影响大。
2.解:求得detA及A的所有特征值和cond(A)2的结果为:
由上式计算结果可知,A相对误差为0.0076,而x的相对误差为10.4661,所以方程组是病态的,A的条件数为2984.1远大于1,当A只有很小的误差就会给结果带来很大的影响。
六、实验结果分析与小结
通过本次试验又熟悉了MATLAB软件,来解决一些线性方程问题。
学习了用LU分解法和列主元分解法。
通过对矩阵经一系列运算进行误差分析,分析是否为病态的。
知道了很小的能造成很大的误差,所以计算要认真仔细,避免一些较大错误。