数值分析实验作业课题一

合集下载

数值分析课程实验设计——数值线性代数实习题

数值分析课程实验设计——数值线性代数实习题

数值分析课程实验设计——数值线性代数
实习题
1. 实验目的
本实验的主要目的是进一步加深对数值线性代数的理解,熟悉
常见矩阵分解方法,并在此基础上解决实际问题。

2. 实验内容
本次实验将任务分为两个部分,分别是矩阵分解与求解线性方
程组。

2.1 矩阵分解
首先,我们需要熟悉三种常见的矩阵分解:QR分解、LU分解
和奇异值分解。

我们需要通过Python语言实现这三种分解方法,
并利用这些方法解决实际问题。

2.2 求解线性方程组
其次,我们需要学会用矩阵分解的方法来求解线性方程组。


们将通过两个例子来进行说明,并利用Python语言实现这些方法。

3. 实验要求
本次实验要求熟悉矩阵分解的基本方法,在此基础上解决实际问题;能够运用多种方法来求解线性方程组,并分析比较它们的优缺点。

4. 实验总结
本次实验通过矩阵分解和求解线性方程组两个部分的学习,巩固了我们对于数值线性代数的知识,并在实际问题的解决中得到了应用。

感谢老师的指导,我们会在今后的学习中持续探索数值分析方面的知识。

数值分析实验报告一

数值分析实验报告一

实验报告课程名称:数值分析课题名称:比较算法专业:勘查技术与工程姓名:韩鹏洋班级: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:LU分解实验实验题目3:三次样条插值外推样条实验实验题目4:第二类Fredholm 积分方程实验实验题目5:M级显式R_K法实验题目:算法的数值稳定性实验实验内容:计算积分()10()d 1515nx I n x a x==+⎰ (n=1,2,…,20) 易得到下面递推公式()()11I n aI n n=--+并有估计式()()()()11111I n a n a n <<+++计算方法:算法一:采用下面递推公式计算:()()11I n aI n n =--+()1,2,,20n = 取初值()1160ln ln 15a I a +==算法二: 采用下面递推公式计算:()()111I n I n a n ⎡⎤-=-+⎢⎥⎣⎦()20,19,,1n =结果分析:(分析哪个好哪个不好,原因是什么) 我觉得算法二比较好, 原因一:根据式()()()()11111I n a n a n <<+++得知,I(n)不可能小于零,而算法一的计算结果有部分结果小于零。

原因二:对算法一记初始误差ε0=/I 0-I(0)/>0;则εn =/I n -I(n)/=a/I n-1-I(n-1)/=a n*ε0由此可知,当n=20时, ε20把ε0放大了a 20倍,其结果造成严重的。

而对于算法二^^11n n a εε-=,…, ^^01n n aεε=,尽管有初始误差^20ε,但随着计算的进程,这个误差的影响不断减小。

附:源程序:(把源程序附上) 算法一程序: >> format long>> a=15;I=log(16/15); for n=1:20 nI=-a*I+1/n end算法二程序: >> format long>> a=15;I=31/10080; >> for n=20:-1:1 n II=1/a*(-I+1/n); End。

数值分析第一次实验报告

数值分析第一次实验报告

数值分析实验报告(一)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、自定义函数:function y=fun1(x)y=(3*x+1)/x^2;主程序:x0=input('Please input the initial value£ºx0=');k=input('Please input the number of iterations£ºk='); x(1)=x0;i=1;while i<=kx(i+1)=fun1(x(i));i=i+1;xk=x(i);endfprintf(' x=%f\n',x);运行结果:Please input the initial value:x0=1Please input the number of iterations:k=5x=1.000000x=4.000000x=0.812500x=5.207101x=0.613018x=7.554877结论:发散2、自定义函数:function y=fun2(x)y=(x^3-1)/3;主程序:x0=input('Please input the initial value£ºx0=');k=input('Please input the number of iterations£ºk='); x(1)=x0;i=1;while i<=kx(i+1)=fun2(x(i));i=i+1;xk=x(i);endfprintf(' x=%f\n',x);运行结果:Please input the initial value:x0=1Please input the number of iterations:k=8x=1.000000x=0.000000x=-0.333333x=-0.345679x=-0.347102x=-0.347273x=-0.347294x=-0.347296x=-0.347296结论:收敛3、自定义函数:function y=fun3(x)y=(3*x+1)^(1/3);主程序:x0=input('Please input the initial value£ºx0=');k=input('Please input the number of iterations£ºk='); x(1)=x0;i=1;while i<=kx(i+1)=fun3(x(i));i=i+1;xk=x(i);endfprintf(' x=%f\n',x);运行结果:Please input the initial value:x0=1Please input the number of iterations:k=11x=1.000000x=1.587401x=1.792790x=1.854542x=1.872325x=1.877384x=1.878819x=1.879225x=1.879340x=1.879372x=1.879382x=1.879384结论:收敛4、自定义函数:function y=fun4(x)y=1/(x^2-3);主程序:x0=input('Please input the initial value£ºx0=');k=input('Please input the number of iterations£ºk='); x(1)=x0;i=1;while i<=kx(i+1)=fun4(x(i));i=i+1;xk=x(i);endfprintf(' x=%f\n',x);运行结果:Please input the initial value:x0=1Please input the number of iterations:k=9x=1.000000x=-0.500000x=-0.363636x=-0.348703x=-0.347414x=-0.347306x=-0.347297x=-0.347296x=-0.347296x=-0.347296结论:收敛5、自定义函数:function y=fun5(x)y=sqrt(3+1/x);主程序:x0=input('Please input the initial value£ºx0=');k=input('Please input the number of iterations£ºk='); x(1)=x0;i=1;while i<=kx(i+1)=fun5(x(i));i=i+1;xk=x(i);endfprintf(' x=%f\n',x);运行结果:Please input the initial value:x0=1Please input the number of iterations:k=6x=1.000000x=2.000000x=1.870829x=1.880033x=1.879336x=1.879389x=1.879385结论:收敛6、自定义函数:function y=fun6(x)y=x-1/3*((x^3-3*x-1)/(x^2-1));主程序:x0=input('Please input the initial value£ºx0=');k=input('Please input the number of iterations£ºk='); x(1)=x0;i=1;while i<=kx(i+1)=fun6(x(i));i=i+1;xk=x(i);endfprintf(' x=%f\n',x);运行结果:Please input the initial value:x0=3Please input the number of iterations:k=6x=3.000000x=2.291667x=1.965507x=1.884402x=1.879404x=1.879385x=1.879385结论:收敛要求2,输出迭代次数:自定义函数:interation.m%x0为初始值,k为最大迭代次数,e为控制精度function interation(x0,k,e)x(1)=x0;i=1;while i<=kx(i+1)=fun6(x(i));if abs(x(i+1)-x(i))<efprintf(' the number of iterations: n=%f\n',i);breakendi=i+1;endx=x(i);fprintf(' a root of the original equation: x=%8.6f\n',x);取形式6为例,运行结果:>>interation(5,24,0.00001)the number of iterations: n=7.000000a root of the original equation: x=1.879385。

数值分析实验报告

数值分析实验报告

数值分析实验报告篇一:数值分析实验报告(一)(完整)数值分析实验报告12345篇二:数值分析实验报告数值分析实验报告课题一:解线性方程组的直接方法1.实验目的:1、通过该课题的实验,体会模块化结构程序设计方法的优点;2、运用所学的计算方法,解决各类线性方程组的直接算法;3、提高分析和解决问题的能力,做到学以致用;4、通过三对角形线性方程组的解法,体会稀疏线性方程组解法的特点。

2.实验过程:实验代码:#include &quot;stdio.h&quot;#include &quot;math.h&quot;#includeiostreamusing namespace std;//Gauss法void lzy(double **a,double *b,int n) {int i,j,k;double l,x[10],temp;for(k=0;kn-1;k++){for(j=k,i=k;jn;j++){if(j==k)temp=fabs(a[j][k]);else if(tempfabs(a[j][k])){temp=fabs(a[j][k]);i=j;}}if(temp==0){cout&quot;无解\n; return;}else{for(j=k;jn;j++){temp=a[k][j];a[k][j]=a[i][j];a[i][j]=temp;}temp=b[k];b[k]=b[i];b[i]=temp;}for(i=k+1;in;i++) {l=a[i][k]/a[k][k];for(j=k;jn;j++)a[i][j]=a[i][j]-l*a[k][j]; b[i]=b[i]-l*b[k];}if(a[n-1][n-1]==0){cout&quot;无解\n;return;}x[n-1]=b[n-1]/a[n-1][n-1];for(i=n-2;i=0;i--){temp=0;for(j=i+1;jn;j++)temp=temp+a[i][j]*x[j];x[i]=(b[i]-temp)/a[i][i];}for(i=0;in;i++){printf(&quot;x%d=%lf\t&quot;,i+1,x[i]); printf(&quot;\n&quot;);}}//平方根法void pfg(double **a,double *b,int n)int i,k,m;double x[8],y[8],temp;for(k=0;kn;k++){temp=0;for(m=0;mk;m++)temp=temp+pow(a[k][m],2);if(a[k][k]temp)return;a[k][k]=pow((a[k][k]-temp),1.0/2.0);for(i=k+1;in;i++){temp=0;for(m=0;mk;m++)temp=temp+a[i][m]*a[k][m]; a[i][k]=(a[i][k]-temp)/a[k][k]; }temp=0;for(m=0;mk;m++)temp=temp+a[k][m]*y[m];y[k]=(b[k]-temp)/a[k][k];}x[n-1]=y[n-1]/a[n-1][n-1];for(k=n-2;k=0;k--){temp=0;for(m=k+1;mn;m++)temp=temp+a[m][k]*x[m];x[k]=(y[k]-temp)/a[k][k];}for(i=0;in;i++){printf(&quot;x%d=%lf\t&quot;,i+1,x[i]);printf(&quot;\n&quot;);}}//追赶法void zgf(double **a,double *b,int n){int i;double a0[10],c[10],d[10],a1[10],b1[10],x[10],y[10]; for(i=0;in;i++){a0[i]=a[i][i];if(in-1)c[i]=a[i][i+1];if(i0)d[i-1]=a[i][i-1];}a1[0]=a0[0];for(i=0;in-1;i++){b1[i]=c[i]/a1[i];a1[i+1]=a0[i+1]-d[i+1]*b1[i];}y[0]=b[0]/a1[0];for(i=1;in;i++)y[i]=(b[i]-d[i]*y[i-1])/a1[i];x[n-1]=y[n-1];for(i=n-2;i=0;i--)x[i]=y[i]-b1[i]*x[i+1];for(i=0;in;i++){printf(&quot;x%d=%lf\t&quot;,i+1,x[i]); printf(&quot;\n&quot;);}}int main(){int n,i,j;double **A,**B,**C,*B1,*B2,*B3;A=(double **)malloc(n*sizeof(double)); B=(double **)malloc(n*sizeof(double));C=(double **)malloc(n*sizeof(double));B1=(double *)malloc(n*sizeof(double));B2=(double *)malloc(n*sizeof(double));B3=(double *)malloc(n*sizeof(double));for(i=0;in;i++){A[i]=(double *)malloc((n)*sizeof(double));B[i]=(double*)malloc((n)*sizeof(double));C[i]=(double*)malloc((n)*sizeof(double)); }cout&quot;第一题(Gauss列主元消去法):&quot;endlendl; cout&quot;请输入阶数n:&quot;endl;cinn;cout&quot;\n请输入系数矩阵:\n\n&quot;;for(i=0;in;i++)for(j=0;jn;j++){篇三:数值分析实验报告(包含源程序) 课程实验报告课程实验报告。

《数值分析实验》实验

《数值分析实验》实验

数值分析实验实验1 方程求根一、实验目的:1.掌握常用的求非线性方程近似根的数值方法,用所学方法求非线性方程满足指定精度要求的数值解,比较各种方法的异同点并进行收敛性分析。

2.通过对二分法与牛顿迭代法作编程练习与上机运算,进一步体会二分法与牛顿迭代法的不同特点。

3.编写割线迭代法的程序,求非线性方程的解,并与牛顿迭代法作比较。

二、实验内容:1.用二分法求方程0104)(23=-+=x x x f 在1.5附近的根。

2.用牛顿迭代法求方程033)(23=--+=x x x x f 在1.5附近的根。

3.用简单迭代法求解非线性方程3sin )1(2=-+x x 的根。

取迭代函数)1sin 3(*5.0)(2x x x --+=ϕ,精度取2101-⨯4.(选做)用牛顿法求下列方程的根: (1)02=-x e x ; (2)01=-x xe ; (3)02lg =-+x x 。

5.(选做)编写一个弦截法程序,求解题目4中的方程。

6.(选做)Matlab 函数fzero 可用于求解非线性方程的根。

例如,fzero(@(x) x^3+4*x^2-10, 1.5)可以求解题目1。

尝试用此方法求解实验中的其他题三、实验要求:1.程序要添加适当的注释,程序的书写要采用缩进格式。

2.程序要具在一定的健壮性,即当输入数据非法时,程序也能适当地做出反应,如插入删除时指定的位置不对等等。

3.程序要做到界面友好,在程序运行时用户可以根据相应的提示信息进行操作。

四、实验步骤1.按照实验内容和实验要求编写代码 2.编译并运行代码 3.检查是否发生错误五、实验源代码与实验结果实验1源代码:运行结果:实验2源代码:运行结果:实验3源代码:运行结果:4(1)的源代码:运行结果:4(2)的源代码:运行结果:4(3)的源代码:运行结果:5(3)的源代码:运行结果:六、实验心得体会通过本次实验我加深了对二分法、简单迭代法、牛顿迭代法和弦截法算法思想的了解,并对各个不同方法的优劣有了更深的理解。

数值分析实验报告模板

数值分析实验报告模板

数值分析实验报告模板篇一:数值分析实验报告(一)(完整)数值分析实验报告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);写成如上形式即可,下面给出主程序。

《数值分析》课程设计—作业实验一...

《数值分析》课程设计—作业实验一...

《数值分析》课程设计—作业实验一1.1 水手、猴子和椰子问题:五个水手带了一只猴子来到南太平洋的一个荒岛上,发现那里有一大堆椰子。

由于旅途的颠簸,大家都很疲惫,很快就入睡了。

第一个水手醒来后,把椰子平分成五堆,将多余的一只给了猴子,他私藏了一堆后便又去睡了。

第二、第三、第四、第五个水手也陆续起来,和第一个水手一样,把椰子分成五堆,恰多一只猴子,私藏一堆,再去入睡,天亮以后,大家把余下的椰子重新等分成五堆,每人分一堆,正好余一只再给猴子,试问原先共有几只椰子?试分析椰子数目的变化规律,利用逆向递推的方法求解这一问题。

解:一、问题分析:对于本题,比较简单,我们只需要判断原来椰子的个数及每个人私藏了一份之后剩下的是否能被5除余1,直到最后分完。

二、问题求解:通过matlab 建立M 文件,有如下程序:或者对于第一个程序,n 取2000;对于第二个程序,n 取20001,就能得到我们想要的结果,即原先一共有15621个椰子,最终平均每人得4092个椰子。

n=input('input n:');forx=1:n p=5*x+1;for k=1:5 p=5*p/4+1;end if p==fix(p) break ; end enddisp([x,p]) input n:20001023 15621function fentao(n)a=cat(1,7);for j=n:-1:1 a(1)=j;i=1; while i<7a(i+1)=4*(a(i)-1)/5; i=i+1;endif a(7)==fix(a(7)) a, end end end>> fentao(20001) a =15621 12496 9996 7996 6396 5116 4092(本文档内的有些运行结果,限于篇幅,使文档结构更和谐、紧凑,已做相关的改动,程序代码没变)1.2 当0,1,2,,100n = 时,选择稳定的算法计算积分1d 10n xn xe I x e--=+⎰.解:一、问题分析:由1d 10n xn xe I x e--=+⎰知: 110101==+⎰dx I I以及: )1(110101011)1(1nnxxnxxn n n endx edx ee eI I ----+-+-==++=+⎰⎰得递推关系:⎪⎩⎪⎨⎧--=-=-+n n n I e n I I I 10)1(1101101,但是通过仔细观察就能知道上述递推公式每一步都将误差放大十倍,即使初始误差很小,但是误差的传播会逐步扩大,也就是说用它构造的算法是不稳定的,因此我们改进上述递推公式(算法)如下:⎪⎪⎩⎪⎪⎨⎧--=-=+-))1(1(101)1(101110n n n I e n I I I通过比较不难得出该误差是逐步缩小的,即算法是稳定的。

数值分析实验报告(一)(完整)

数值分析实验报告(一)(完整)
其中 有关.
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)班
主讲教师
王丹
指导教师
王丹
实验日期
专业
信息与计算科学
课程名称
数值分析
同组实验者

一、实验名称:
实验一、插值多项式的收敛性实验

数值分析实验报告

数值分析实验报告

南京信息工程大学数值分析实验报告(一)实验名称数值分析 实验日期 2016.5.13得分指导教师专业 数学与应用数学 年级 大二 班级 应用数学1班 姓名 丁晨 学号 20141323001一、 实验目的(1) 了解插值的基本原理(2) 了解拉格朗日插值,牛顿差值和样条差值的基本思想; 二、实验内容试用4次牛顿插值多项式P 4(x )及三次样条函数S (x )对数据进行插值。

用图给出{(x i,y i ),x i =0.2+0.08i,i=0,1,11,10}P 4(x)及S (x )2.在区间[1,1]上,取n=10,20用两组等距节点对龙格函数f(x)=22511x作三次样条差值,对每个n 分别画出差值函数和f (x )的图形。

3.三、实验求解 1.程序代码: clc;x1=[0.2 0.4 0.6 0.8 1.0];y1=[0.98 0.92 0.81 0.64 0.38]; 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)); end endsyms 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=pp.coefs;q1=q(1,:)*[(x-.2)^3;(x-.2)^2;(x-.2);1]; q1=vpa(collect(q1),5)q2=q(1,:)*[(x-.4)^3;(x-.4)^2;(x-.4);1]; q2=vpa(collect(q2),5)q3=q(1,:)*[(x-.6)^3;(x-.6)^2;(x-.6);1]; q3=vpa(collect(q3),5)q4=q(1,:)*[(x-.8)^3;(x-.8)^2;(x-.8);1]; q4=vpa(collect(q4),5)%求解并化简多项式运行matlab 程序结果如下:P4 =0.98*x - 0.3*(x - 0.2)*(x - 0.4) - 0.625*(x - 0.2)*(x - 0.4)*(x - 0.6) - 0.20833*(x - 0.2)*(x - 0.4)*(x - 0.8)*(x - 0.6) + 0.784q1 =- 1.3393*x^3 + 0.80357*x^2 - 0.40714*x + 1.04q2 =- 1.3393*x^3 + 1.6071*x^2 - 0.88929*x + 1.1643q3 =- 1.3393*x^3 + 2.4107*x^2 - 1.6929*x + 1.4171q4 =- 1.3393*x^3 + 3.2143*x^2 - 2.8179*x + 1.86290.10.20.30.40.50.60.70.80.910.40.50.60.70.80.911.1所以4次牛顿差值多项式4()P x =0.98*x - 0.3*(x - 0.2)*(x - 0.4) - 0.625*(x - 0.2)*(x- 0.4)*(x - 0.6) - 0.20833*(x - 0.2)*(x - 0.4)*(x - 0.8)*(x - 0.6) + 0.784三次样条差值多项式()Q x323232321.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 ⎧-+-+∈⎪-+-+∈⎪⎨-+-+∈⎪⎪-+-+∈⎩2.三次样条差值: 1.M 文件: x=-1:0.0001:1; y=1./(1+25*x.^2); x1=-1:0.2:1;y1=interp1(x,y,x1,'spline'); plot(x1,y1,'o',x,y) grid on xlabel('x') ylabel('y') y1matlab 运行结果如下: y1 =0.0385 0.0588 0.1000 0.2000 0.5000 1.0000 0.5000 0.2000 0.1000 0.05880.0385。

数值分析实验题目

数值分析实验题目

实验一:函数插值与数据拟合1.1实验目的(1)由函数()f x 的1n +个节点处函数值得出n 次Lagrange 插值函数; (2)由函数()f x 的1n +个节点处函数值得出n 次Newton 插值函数;(3)由函数()f x 的个1n +节点处函数值得出Hermite 插值函数或分段三次Hermite 函数; (4)由未知函数的离散数据(),1,2,,i f x i n = 得出最小二乘拟合函数。

1.2 实验原理(1)00,()()nnj n k k j j kk jx x L x y x x ==≠-=⋅-∑∏(2)00100120101011()()[,]()[,,]()()[,,,]()()()n n n N x f x f x x x x f x x x x x x x f x x x x x x x x x -=+-+--++---(3)222100,0,0,1[12()]()n n nn i i n k k k kk i i k i i k i i k k i k i k i x x x x H y x x y x x x x x x x x +==≠=≠=≠⎧⎫⎛⎫⎛⎫--⎪⎪'=⋅--+⋅-⎨⎬ ⎪ ⎪---⎝⎭⎝⎭⎪⎪⎩⎭∑∑∏∏(4)()()()()()()()()()()()()0001000101111101001122,,,,,,,,,,,,n n n n n n n n n na y a y a y S a a a a φφφφφφφφφφφφφφφφφφφφφφφφφ⎛⎫⎛⎫⎛⎫⎪ ⎪ ⎪⎪⎪ ⎪= ⎪ ⎪ ⎪⎪ ⎪⎪ ⎪ ⎪⎝⎭⎝⎭⎝⎭=++++1.3实验内容1.3,===用Lagrange23,===用Newton3. 给定函数21(),551f x x x=-≤≤+,取插值节点5,0,1,2,,10k x k k =-+= ,求分段三次Hermite 插值函数,并在一个坐标系中画出两函数的图形。

数值分析实验学生版.doc

数值分析实验学生版.doc

计算机与信息工程学院数值分析实验报告计科专业2013级3班姓名:茆彩云学号:201340910348实验一:Lagrange插值法一、实验目的插值法是一个古老实用的课题,是函数逼近、数值积分微分和微分议程数值解的基础。

本实验目的是通过实验掌握Lagrange插值方法,并能用自已熟悉的语言编程求解具体的插值问题。

验证基本算法和了解基本算法在计算机上的实现过程。

二、实验题目:给出f(x)的函数表如下:x0.40.550.650.80.9 1.05f(x)0.410750.578150.696750.88811 1.02652 1.25382按Lagrange插值算法编程求出f(0.596)的近似值;三、实验原理通过n+1个节点X0<X1<...<Xn的n次插值基函数,再写出n次插值多项式。

四、实验内容与步骤先定义n次插值基函数再写出n次插值多项式五、实验程序Lagrange插值算法:Newton插值方法:六、实验结果及其分析Lagrange 插值算法:结果是0.631917 Newton 插值方法:结果是0.631918 两种算法的计算结果不完全一样对于给定的点才能用Lagrange 插值算法,需要计算出基函数教师评语: 实验成绩:_____计算机与信息工程学院数值分析实验报告实验二:最小二乘法一、 实验目的1、 掌握最小二乘法的基本思路和拟合步骤;2、 培养编程与上机调试能力。

二、 实验题目三、实验原理已知数据对()(),1,2,,j j x y j n =,求多项式0()()mii i p x a x m n ==<∑使得20110(,,,)nm i n i j j j i a a a a x y ==⎛⎫Φ=- ⎪⎝⎭∑∑为最小,这就是一个最小二乘问题四、实验内容与步骤最小二乘法计算步骤用线性函数()p x a bx =+为例,拟合给定数据(),,1,2,,i i x y i m =。

数值分析实验1-1

数值分析实验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的增加,部分根出现复数,复数的实部的绝对值在不断增大,虚部系数的绝对值也在不断增大;而值比较小的根变化幅度比值大的根变化小。

数值分析实验题答案

数值分析实验题答案

数值分析实验报告姓名:院系:能源学院热能工程学号:2014年4月习题一实验3.2编制正交化多项式最小二乘拟合程序,并用于求解3次多项式最小二乘拟合为基的多项式最小问题,作拟合曲线的图形,计算平方误差,并与以函数{}0n k kx=二乘拟合的结果作比较表1x-1.0-0.50.00.5 1.0 1.5 2.0iy-4.447-0.4520.5510.0480.4470.549 4.552 i首先使用以函数{}0n k k为基的多项式最小二乘拟合,代码如下:x=然后使用正交化多项式方法作最小二乘拟合并画图,代码如下:拟合得到的图形如下(图1):从图形来看,二者与数据点都很吻合。

计算结果为:delta1=2.1762e-05delta2=4.4701e-04为基的多项式拟合精度更高。

可以看出对于3次多项式以{}0n k kx=图1习题二 实验4.2分别用复化Simpson 公式与变步长Simpson 公式计算,要求绝对误差限为71=102ε-⨯,输出每种方法所需的节点数和积分近似值并分析比较结果。

(1)6220()10x x x dx -+⎰ (2)10⎰ (3)6220()10x x x dx -+⎰对于复化Simpson 公式,使用事前误差估计法得到所需计算节点数,有以下误差估计公式:4(4)()()()(),(,)1802n b a h R f f a b ηη-=-∈对(1)式有:(4)22max ()36144x f x x ===0.0266h ≤75.2b aN h -≥=取76N =,计算节点数为21153N N =+= 对(2)(3)式由于其4阶导数值分布极不均匀,用最大值来估计所需计算节点数造成很大浪费,尝试多次后分别取153N =和1091N =代码如下:计算结果如下:(1)计算结果用复化Simpson公式计算:节点数:153近似值:1.161904777用变步长Simpson公式计算:节点数:77近似值:1.161904766标准值:1.161904762(2)计算结果用复化Simpson公式计算:节点数:153近似值:0.400000049用变步长Simpson公式计算:节点数:33近似值:0.400000069标准值:0.400000000(3)计算结果用复化Simpson公式计算:节点数:1091近似值:23.812135331用变步长Simpson公式计算:节点数:145近似值:23.812135297标准值:23.812135292从以上计算结果可以看出,变步长simpson公式所需节点数明显减少,因为3个函数的4阶导数在积分区间内分布都部均匀,(2)(3)式更为严重,在先范围区间内导数值远大于其他区间,只需要在这些区间增加节点数就可以达到指定精度,而Simpson公式需要在全体积分限内采用较小间距才满足条件。

数值分析实验题

数值分析实验题

数值分析实验报告第一题实验题1.21、实验内容实验1.2 体会稳定性在选择算法中的地位,误差扩张的算法不稳定,而误差衰竭的算法是,E n=1−nE n−1,n=2,3…和算法算法E.1.7(即稳定的。

分别采用E.1.6(即E.1.4)E1=1e,n=N−1,N−2…,3,2两种算法。

E.1.5)E n−1=1−E nn2、源程序%function t_charpt1%数值试验1.2:误差传播与算法稳定性%输入:递推公式选择与递推步数%输出:各步递推值及误差结果,以及递推值和误差与递推步数的关系图clear;clc;promps = {'请选择递推关系式,若选(1.4),请输人1,否则输入2:'};result = inputdlg(promps,'charpt 1_2',1,{'1'});Nb = str2num(char(result));if((Nb~= 1)&(Nb~= 2))errordlg('请选择递推关系式,若选(1.4),请输人1,否则输人2!');return;endresult = inputdlg({'请输人递推步数n:'},'charpt 1_2',1,{ '10'});steps = str2num(char(result));if(steps<1)errordlg('递推步数错误!');return;endresult = inputdlg({'请输入计算中所采用的有效数字位数:'},'charpt 1_2',1,{'5'});Sd = str2num(char(result));format long %设置显示精度result=zeros(1,steps) ; %存储计算结果err=result; %存储计算的绝对误差func=result; %存储用库函数quadl计算出的积分的近似值%用库函数quadl计算积分的近似值for n= 1:stepsfun=@(x) x.^n.* exp(x-1);func(n) = quadl(fun,0,1);endif(Nb==1)%用算法(1.4)计算digits(Sd); %控制有效数字位数result(1) = subs(vpa(1/exp(1)));for n=2:1:stepsresult(n)=subs(vpa(1-n * result(n-1)));enderr=abs(result-func);elseif(Nb==2)%用算法(1.5)计算digits(Sd); %控制有效数字位数result(steps)=0;for n=steps:-1:2result(n-1) = subs(vpa((1-result(n))/n));enderr=abs(result-func);endclf;%清除当前图像窗口disp('递推值:');disp(sprintf('%e ', result));disp('误差:');disp(sprintf(' %e ' ,err));plot([1:steps],result,'-','LineWidth',2);set(gca,'linewidth',0.5,'fontsize',16);grid onhold on;plot([1:steps],err,'r--','LineWidth',2);xlabel('steps n','FontSize',18);ylabel('En-and ERR n--','FontSize',18);legend('En','err(n)');title(['Algorithm (1.', num2str(Nb+3),') Significant Digits ', num2str(Sd)],'FontSize',18);% text(2,err(2),'\uparrow err(n)');% text(4,result(4),'\downarrow En');3、实验结果(1)算法E1.6,有效数字5位递推值:3.678800e-01 2.642400e-01 2.072800e-01 1.708800e-01 1.456000e-01 1.264000e-01 1.152000e-01 7.840000e-02 2.944000e-01 -1.944000e+00误差:5.588280e-07 1.117662e-06 3.352927e-06 1.341222e-056.705713e-05 4.023702e-04 2.816427e-03 2.253226e-02 2.027877e-01 2.02(2)算法E1.6,有效数字6位递推值:3.678790e-01 2.642420e-01 2.072740e-01 1.709040e-01 1.454800e-01 1.271200e-01 1.101600e-01 1.187200e-01 -6.848000e-02 1.684800e+00误差:4.411720e-07 8.823378e-07 2.647073e-06 1.058778e-055.294287e-05 3.176298e-04 2.223573e-03 1.778774e-02 1.600923e-01 1.60(3)算法E1.6,有效数字7位递推值:3.678794e-01 2.642412e-01 2.072764e-01 1.708944e-01 1.455280e-01 1.268320e-01 1.121760e-01 1.025920e-01 7.667200e-02 2.332800e-01误差:4.117197e-08 8.233779e-08 2.470726e-07 9.877761e-07 4.942873e-06 2.962984e-05 2.075730e-04 1.659738e-03 1.494029e-02 1.49(4)算法E1.7,有效数字5位递推值:3.678800e-01 2.642400e-01 2.072800e-01 1.708900e-01 1.455300e-01 1.267900e-01 1.125000e-01 1.000000e-01 1.000000e-01 0.000000e+00误差:5.588280e-07 1.117662e-06 3.352927e-06 3.412224e-06 2.942873e-06 1.237016e-05 1.164270e-04 9.322618e-04 8.387707e-03 8.38(5)算法E1.7,有效数字6位递推值:3.678800e-01 2.642410e-01 2.072770e-01 1.708930e-01 1.455360e-01 1.267860e-01 1.125000e-01 1.000000e-01 1.000000e-01 0.000000e+00误差:5.588280e-07 1.176622e-07 3.529274e-07 4.122239e-07 3.057127e-06 1.637016e-05 1.164270e-04 9.322618e-04 8.387707e-03 8.38(6)算法E1.7,有效数字7位递推值:3.678795e-01 2.642411e-01 2.072768e-01 1.708929e-01 1.455357e-01 1.267857e-01 1.125000e-01 1.000000e-01 1.000000e-01 0.000000e+00误差:5.882803e-08 1.766221e-08 1.529274e-07 5.122239e-07 2.757127e-06 1.667016e-05 1.164270e-04 9.322618e-04 8.387707e-03 8.384、结果分析采用算法E1.7(即算法E1.5)能得到更精确的结果,当然,有效数字越多,结果越准确。

数值分析实验题作业

数值分析实验题作业

数值分析实验报告姓名:魏汝明院系:土木工程与力学学院学号:M201173052一、实验1.1 (病态问题)1、实验要求:考虑一个高次的代数多项式:201()(1)(2)(20)()k p x x x x x k ==---=-∏ (E.1.1)显然该多项式的全部根为1,2,…,20,共计20个,且每个根都是单重的(也称为简单的)。

现考虑该多项式的一个扰动19()0p x xε+= (E.1.2)其中,ε是一个非常小的数。

这相当于是对方程(E.1.1)中19x 的系数作一个小的扰动。

比较方程(E.1.1)和方程(E.1.2)根的差别,从而分析方程(E.1.1)的解对扰动的敏感性。

2、实验步骤与结果分析: (一) 实验源程序clcresult=inputdlg({'请输入扰动项:在[0 20]之间的整数:'},'charpt 1_1',1,{'19'});Numb=str2num(char(result));if((Numb>20)|(Numb<0))errordlg('请输入正确的扰动项:[0 20]之间的整数!');return;endresult=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);x0=real(root); y0=imag(root); plot(x0',y0', '*'); grid ontitle('根值位置图')disp(['对扰动项 ',num2str(Numb),'加扰动',num2str(ess),'得到的全部根为:']);disp(num2str(root));(二) 实验结果分析对于x19项的扰动ess ,不同的取值对应的结果如下所示: ①对扰动项 19加扰动1e-010得到的全部根为: 19.9961,19.0257,17.9085,17.1508,15.7982,15.181,13.8995,13.0571,11.9753,11.0109,9.99608,9.00111,7.99978,7.00003,6,5,4,3,2,1②对扰动项19加扰动1e-009得到的全部根为:19.952,19.2293,17.6573+0.692896i,17.6573-0.692896i,15.4524+0.875524i,15.4524-0.875524i,13.3527+0.486992i,13.3527-0.486992i,11.8578,11.0427,9.9916,9.00201,7.99952,7.00009,5.99999,5,4,3,2,1③对扰动项19加扰动1e-007得到的全部根为:20.422+0.999203i,20.422-0.999203i,18.1572+2.4702i,18.1572-2.4702i,15.3149+2.69865i,15.3149-2.69865i,12.8466+2.06246i,12.8466-2.06246i,10.9216+1.10366i,10.9216-1.10366i,9.56629,9.11508,7.99387,7.00027,6,5,4,3,2,1④对扰动项19加扰动1e-005得到的全部根为:22.5961+2.3083i,22.5961-2.3083i,18.8972+5.00563i,18.8972-5.00563i,14.9123+4.95848i,14.9123-4.95848i,12.0289+3.73551i,12.0289-3.73551i,10.059+2.33021i,10.059-2.33021i,8.63828+1.0564i,8.63828-1.0564i,7.70896,7.028,5.99942,5.00001,4,3,2,1根在复平面上的位置如图所示:图ess=1e-010 图ess=1e-009图ess= 1e-007 图ess=1e-005 从实验的图形中可以看出,当ess充分小时,方程E.1.1和方程E.1.2的解相差很小,当ess逐渐增大时,方程的解就出现了病态解,这些解都呈现复共轭性质。

数值分析实验一

数值分析实验一

数值分析实验一一、实验名称不同方案收敛速度的比较二、实验目的通过实验体会数值计算中算法选择的重要地位三、实验内容三种求Ln2的算法比较 方案一:利用级数1(1)111121234k k k Ln -∞-==-+-+=∑ ,设11(1)k n n k S k -=-=∑,则2n Ln S ≈ 方案二:对上述11(1)k nn k S k -=-=∑,按2^112()2n n n n n n n S S S S S S S ----=--+生成新数列^n S ,则Ln2^ln 2n S ≈ 方案三:级数234k k 111111...1*22*23*24*2k *2∞=++++=∑,设n k k 11k *2S ∞==∑,则n ln 2S ≈ 四、实验要求分别用三种方案求出2Ln 的近似值,要求51*102ε-=,观察比较三种计算方案的收敛速度.在MATLAB 命令窗口输入log(2)求解,并与三种方案计算结果进行比较。

五、实验结果方案一: f1 =0.69309718305996方案二: f2 =0.69314718055983方案三: f3 =0.69314718055995方案四: log(2)= f4 =0.69314718055995六、程序代码方案一:format longs=zeros(1,10001);for k=1:10000s(k+1)=s(k)+((-1)^(k-1))/k;end;f1=s(k+1)方案二:format longfor n=4:10001s1(n)=s(n)-((s(n)-s(n-1))^2)/(s(n)-2*s(n-1)+s(n-2));endf2=s1(n)方案三:format longs2=zeros(1,10001);for k=1:10000s2(k+1)=s2(k)+1/(k*2^k);endf3=s2(k+1)方案四:f4=log(2)七、实验分析由实验结果可看出方案收敛速度越来越好,方案一收敛速度最慢,方案三收敛速度最快,最接近log(2)的值,方案二居中。

数值分析(计算方法)实验一

数值分析(计算方法)实验一

《数值分析》 课程实验指导书实验一 函数插值方法一、问题提出对于给定的一元函数)(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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

迭代格式的比较
1、
自定义函数:
function y=fun01(x)
y=(3*x+1)/x^2;
主程序:
clc
clear
x0=input('输入初始值x0=');
k=input('输入迭代次数k=');
x(1)=x0;
for i=1:k
x(i+1)=fun01(x(i));
i=i+1;
end
disp(x);
运行结果:
输入初始值x0=1
输入迭代次数k=5
Columns 1 through 5
1.0000 4.0000 0.8125 5.2071 0.6130 Columns 6
7.5549
结论:发散
2、
自定义函数:
function y=fun02(x)
y=(x^3-1)/3;
主程序:
clc
clear
x0=input('输入初始值x0=');
k=input('输入迭代次数k=');
x(1)=x0;
for i=1:k
x(i+1)=fun02(x(i));
i=i+1;
end
disp(x);
运行结果:
输入初始值x0=1
输入迭代次数k=9
Columns 1 through 5
1.0000 0 -0.3333 -0.3457 -0.3471 Columns 6 through 10
-0.3473 -0.3473 -0.3473 -0.3473 -0.3473 结论:收敛
3、
自定义函数:
function y=fun03(x)
y=(3*x+1)^(1/3);
主程序:
clc
clear
x0=input('输入初始值x0=');
k=input('输入迭代次数k=');
x(1)=x0;
for i=1:k
x(i+1)=fun03(x(i));
i=i+1;
end
disp(x);
运行结果:
输入初始值x0=1
输入迭代次数k=12
Columns 1 through 5
1.0000 1.5874 1.7928 1.8545 1.8723 Columns 6 through 10
1.8774 1.8788 1.8792 1.8793 1.8794 Columns 11 through 13
1.8794 1.8794 1.8794
结论:收敛
4、
自定义函数:
function y=fun04(x)
y=1/(x^2-3);
主程序:
clc
clear
x0=input('输入初始值x0=');
k=input('输入迭代次数k=');
x(1)=x0;
for i=1:k
x(i+1)=fun04(x(i));
i=i+1;
end
disp(x);
运行结果:
输入初始值x0=1
输入迭代次数k=11
Columns 1 through 5
1.0000 -0.5000 -0.3636 -0.3487 -0.3474 Columns 6 through 10
-0.3473 -0.3473 -0.3473 -0.3473 -0.3473 Columns 11 through 12
-0.3473 -0.3473
5、
自定义函数:
function y=fun05(x)
y=sqrt(3+1/x);
主程序:
clc
clear
x0=input('输入初始值x0=');
k=input('输入迭代次数k=');
x(1)=x0;
for i=1:k
x(i+1)=fun05(x(i));
i=i+1;
end
disp(x);
输入初始值x0=1
输入迭代次数k=7
Columns 1 through 5
1.0000
2.0000 1.8708 1.8800 1.8793 Columns 6 through 8
1.8794 1.8794 1.8794
结论:收敛
6、
自定义函数:
function y=fun06(x)
y=x-1/3*((x^3-3*x-1)/(x^2-1));
主程序:
clc
clear
x0=input('输入初始值x0=');
k=input('输入迭代次数k=');
x(1)=x0;
for i=1:k
x(i+1)=fun06(x(i));
i=i+1;
end
disp(x);
运行结果:
输入初始值x0=4
输入迭代次数k=7
Columns 1 through 5
4.0000 2.8667 2.2221 1.9422 1.8821 Columns 6 through 8
1.8794 1.8794 1.8794
结论:收敛
要求2,输出迭代次数:
自定义函数:diedai.m
2、
%x0为初始值,k为最大迭代次数,e为控制精度function diedai(x0,k,epsilon)
for i=1:k
x(i+1)=fun02(x(i));
if abs(x(i+1)-x(i))<epsilon
fprintf(' 迭代次数: n=%f\n',i) break
end
i=i+1;
end
x=x(i);
fprintf(' 原方程的一个根为: x=%8.6f\n',x); 运行结果:
精度为0.0001
>> diedai(1,20,0.0001)
迭代次数为: n=6.000000
原方程的一个根为: x=-0.347273
精度为0.00000001
>> diedai(1,20,0.00000001)
迭代次数为: n=10.000000
原方程的一个根为: x=-0.347296
3、
%x0为初始值,k为最大迭代次数,e为控制精度
function diedai(x0,k,epsilon)
x(1)=x0;
for i=1:k
x(i+1)=fun03(x(i));
if abs(x(i+1)-x(i))<epsilon
fprintf(' 迭代次数: n=%f\n',i) break
end
i=i+1;
end
x=x(i);
fprintf(' 原方程的一个根为: x=%8.6f\n',x);
运行结果:
>> diedai(1,20,0.0001)
迭代次数为: n=9.000000
原方程的一个根为: x=1.879340
4、
%x0为初始值,k为最大迭代次数,e为控制精度
function diedai(x0,k,epsilon)
x(1)=x0;
for i=1:k
x(i+1)=fun06(x(i));
if abs(x(i+1)-x(i))<epsilon
fprintf(' 迭代次数: n=%f\n',i) break
end
i=i+1;
end
x=x(i);
fprintf(' 原方程的一个根为: x=%8.6f\n',x);
运行结果为:
>> diedai(1,20,0.0001)
迭代次数为: n=6.000000
原方程的一个根为: x=-0.347306
5、
%x0为初始值,k为最大迭代次数,e为控制精度
function diedai(x0,k,epsilon)
x(1)=x0;
for i=1:k
x(i+1)=fun06(x(i));
if abs(x(i+1)-x(i))<epsilon
fprintf(' 迭代次数: n=%f\n',i) break
end
i=i+1;
end
x=x(i);
fprintf(' 原方程的一个根为: x=%8.6f\n',x);
运行结果为:
>> diedai(1,20,0.0001)
迭代次数为: n=5.000000
原方程的一个根为: x=1.879336
6、
%x0为初始值,k为最大迭代次数,e为控制精度
function diedai(x0,k,epsilon)
x(1)=x0;
for i=1:k
x(i+1)=fun06(x(i));
if abs(x(i+1)-x(i))<epsilon
fprintf(' 迭代次数: n=%f\n',i) break
end
i=i+1;
end
x=x(i);
fprintf(' 原方程的一个根为: x=%8.6f\n',x);
运行结果为:
diedai(4,20,0.00001)
迭代次数为: n=6.000000
原方程的一个根为: x=1.879391。

相关文档
最新文档