计算方法大作业

合集下载

计算方法大作业——龙贝格积分

计算方法大作业——龙贝格积分

3 龙贝格积分3.1 算法原理及程序框图龙贝格积分法是在复化梯形求积公式、复化辛普森求积公式和复化科茨求积公式关系的基础上,构造出的一种精度更高的数值积分方法。

对于复化梯形求积公式而言,近似积分为()2221[]41n n n n I f T T T T ≈+-=-.(11) 对于复化辛普森求积公式和复化科茨求积公式而言,也有类似的关系,如公式(12)和公式(13)。

()22221[]41n n n n I f S S S S ≈+-=- (12)()22231[]41n n n n I f C C C C ≈+-=- (13)通过对公式(11)~(13)做进一步分析,可得到公式(14)和公式(15)。

()22141n n n n S T T T =+--(14)()222141n n n n C S S S =+-- (15)根据公式(14)和公式(15)表现出来的规律,令龙贝格积分为()223141n n n n R C C C =+-- (16)其截断误差为c R h 8f (8)(η),已经具有很高的精度。

龙贝格积分法是将区间[a , b ]逐次分半进行计算,因此,对已知函数f (x )在区间[a , b ]上的龙贝格积分法的计算公式的算法如下,程序框图如图13所示。

(1) 计算T 1:[]1()()2b aT f a f b -=+;(2) 逐次计算T 2k +1:()1211221121,0,1,2222kk k k k i b a b a T T f a i k +++=--⎛⎫=++-= ⎪⎝⎭∑;(3) 逐次计算S 2k 、C 2k 和R 2k :()()()11111122222222232222141141141kk k k k k k k k k k k S T T T C S S S R C C C ++++++⎧=+-⎪-⎪⎪=+-⎨-⎪⎪=+-⎪-⎩;(4) 若122k k R R ε+-<,则取[]12k I f R +≈;否则,继续计算,直到满足精度为止。

西安交通大学计算方法B大作业

西安交通大学计算方法B大作业

计算方法上机报告姓名:学号:班级:目录题目一------------------------------------------------------------------------------------------ - 4 -1.1题目内容 ---------------------------------------------------------------------------- - 4 -1.2算法思想 ---------------------------------------------------------------------------- - 4 -1.3Matlab源程序----------------------------------------------------------------------- - 5 -1.4计算结果及总结 ------------------------------------------------------------------- - 5 - 题目二------------------------------------------------------------------------------------------ - 7 -2.1题目内容 ---------------------------------------------------------------------------- - 7 -2.2算法思想 ---------------------------------------------------------------------------- - 7 -2.3 Matlab源程序---------------------------------------------------------------------- - 8 -2.4计算结果及总结 ------------------------------------------------------------------- - 9 - 题目三----------------------------------------------------------------------------------------- - 11 -3.1题目内容 --------------------------------------------------------------------------- - 11 -3.2算法思想 --------------------------------------------------------------------------- - 11 -3.3Matlab源程序---------------------------------------------------------------------- - 13 -3.4计算结果及总结 ------------------------------------------------------------------ - 14 - 题目四----------------------------------------------------------------------------------------- - 15 -4.1题目内容 --------------------------------------------------------------------------- - 15 -4.2算法思想 --------------------------------------------------------------------------- - 15 -4.3Matlab源程序---------------------------------------------------------------------- - 15 -4.4计算结果及总结 ------------------------------------------------------------------ - 16 - 题目五----------------------------------------------------------------------------------------- - 18 -5.1题目内容 --------------------------------------------------------------------------- - 18 -5.2算法思想 --------------------------------------------------------------------------- - 18 -5.3 Matlab源程序--------------------------------------------------------------------- - 18 -5.3.1非压缩带状对角方程组------------------------------------------------- - 18 -5.3.2压缩带状对角方程组---------------------------------------------------- - 20 -5.4实验结果及分析 ------------------------------------------------------------------ - 22 -5.4.1Matlab运行结果 ---------------------------------------------------------- - 22 -5.4.2总结分析------------------------------------------------------------------- - 24 -5.5本专业算例 ------------------------------------------------------------------------ - 24 - 学习感悟-------------------------------------------------------------------------------------- - 27 -题目一1.1题目内容计算以下和式:0142111681848586n n S n n n n ∞=⎛⎫=--- ⎪++++⎝⎭∑,要求: (1)若保留11个有效数字,给出计算结果,并评价计算的算法; (2)若要保留30个有效数字,则又将如何进行计算。

计算方法大作业1 克服Runge现象

计算方法大作业1  克服Runge现象

x3
x2
x
1
S1 ( x)
-0.34685
0.2086
0.073964
0.038462
S2 (x)
S (xi 0 ) S x(i 0 )

S
'
(xi

0) S
xi' (
0 )i

S
'
'
x(i

0)S
xi' ' (
0)
1 ,n2, . . . , 1
(1)
这里共有了 3n-3 个条件,再加上条件(2)中的 n+1 个插值条件,共有 4n-2 个条件,
因此还需要 2 个方程才能确定 S (x) .通常可在区间[a, b]的端点 a x0,b xn 上各加一个边

dn1

1
2


Mn


dn

(6)
2 1


2
2
2
1 M1 d1

M2


d2




n 1
2
n
1


M
n
1

dn1
n
n 2 M n dn
由式(1)内点拼接条件,可得
i M i1 2M i i M i1 d j i 1, 2,..., n 1
(3) (4)
其中
i

hi 1 hi1
, hi

i

hi hi 1

计算方法大作业作业((北京科技大学研究生结课考试)

计算方法大作业作业((北京科技大学研究生结课考试)

《计算方法》平时作业(2010-2011学年第一学期)学 院:_________________________ 专 业:_________________________ 姓 名:_________________________ 学 号:_________________________ 联 系 方 式:_________________________机研111班机械工程学院作业(考试前交, 给出证明或计算过程、计算程序及计算结果) 1. 对向量()12Tn x x x x = 定义1211,max ,nk k k nk x x xx x ∞≤≤====∑设A 是n n ⨯矩阵,规定1111max x A Ax ==,1max x A Ax ∞∞∞==,2221max x A Ax ==证明111112max (),max (),.n nkj jk j nj nk k T A a A a A A A λ∞≤≤≤≤=====∑∑列范数行范数是最大特征值证明:1) 证明111||||max||nijj n i A a≤≤==∑1111111111||||max ||max ||||max ||||||max ||nnn nij iiji ij ij j nj nj nj ni i i i AX a x ax a x a ≤≤≤≤≤≤≤≤=====≤≤=∑∑∑∑所以 111||||111||||max ||||max||nijx j ni A Ax a=≤≤==≤∑设 1111max||||,1,0,1,0,||||1,nnijip i ip i ip j ni i aa x a x a x ≤≤====≥=-<=∑∑取若取若则11||n nip i ip i i a x a ===∑∑且。

因此,1111111||||max ||||||max ||n nn nij i ip iip ij j nj ni i i i Ax a x ax a a ≤≤≤≤=====≥==∑∑∑∑即 111||||111||||max ||||max||nijx j ni A Ax a=≤≤==≥∑ 则 111||||m a x ||nij j ni A a ≤≤==∑2)证明11||||max||niji n j A a∞≤≤==∑11111111||||m a x ||m a x ||||m a x ||||||m a x||nnnni j j i j j i j i j i ni ni ni nj j j j A X a x a x a x a ∞∞≤≤≤≤≤≤≤≤=====≤≤=∑∑∑∑ 所以 ||||111||||m a x ||||m a x ||nij x i n j A Ax a ∞∞∞=≤≤==≤∑设 111max||||,1,0,1,0,||||1,nnijpj j pj j pj i nj j aa x a x a x ∞≤≤====≥=-<=∑∑取若取若则11||nn pj j pj j j a a ===∑∑且。

计算方法大作业

计算方法大作业

计算方法大作业班级XXXXXX 学号XXXXXXX 任课老师贺力平姓名XXX2013年12月实验一幂法与矩阵特征值1.幂法求主特征值思路幂法的主要思想就是对假设的任意初始列向量作用n次A矩阵(左乘A矩阵)后,初始向量就接近A矩阵的主特征值对应的特征向量。

由于左乘n次A矩阵有可能会造成计算量溢出,所以每次都对列向量作归一化处理。

2.程序代码function [ ] = mifa( A,v )%UNTITLED Summary of this function goes here % Detailed explanation goes hereA =[ 1 21 2 334 5 2 154 2 6 42 2 59 0];v=[1 1 1 1]';u(:,1)=v(:,1);fori=1:100v(:,i+1)=A*u(:,i);if abs(max(v(:,i+1))-max(v(:,i)))<10^-4breakendu(:,i+1)=v(:,i+1)/max(v(:,i+1));enddisp(u(:,i));disp(max(v(:,i)));k=u(:,i)'*A*u(:,i)/(u(:,i)'*u(:,i));disp(k);[x,c]=eig(A);disp(c);disp(x);disp(i);end3.结果比较和结论初始矩阵A =[ 1 21 2 334 5 2 154 2 6 42 2 59 0];初始向量v=[1 1 1 1]';幂法求得特征向量12.514714.914025.693539.6330归一化后特征向量0.31580.37630.64831.0000列向量最大值近似主特征值39.6330Rayleigh商求出主特征值39.6330用eig()函数算出的特征值和特征向量39.6331 0 0 00 -18.2401 + 7.4985i 0 00 0 -18.2401 - 7.4985i 00 0 0 8.8471-0.2450 -0.0471 + 0.0965i -0.0471 - 0.0965i -0.0574 -0.2919 0.1147 - 0.0939i 0.1147 + 0.0939i -0.1747 -0.5029 0.2862 - 0.1187i 0.2862 + 0.1187i 0.1535 -0.7758 -0.9330 -0.9330 0.9709 达到精度要求所需次数:17结论:可以看出初始列向量经过多次迭代后,用幂法求出的特征值和用eig()函数求出的A的特征值,满足计算精度在,并且特征向量也具有数乘关系。

数值计算方法大作业

数值计算方法大作业

数值计算方法大作业
嘿,咱今儿来聊聊数值计算方法大作业呀!这可真是个有趣又有点
头疼的事儿呢!
你想想看,数值计算方法就像是一把神奇的钥匙,能打开好多好多
知识的大门。

做数值计算方法大作业的时候,那感觉就好像在探索一
个神秘的宝藏岛,每一步都充满了未知和挑战。

比如说吧,遇到一个复杂的公式,就像是在森林里碰到了一团乱麻,得耐心地一点点解开。

有时候可能会觉得,哎呀,这可咋整呀,咋这
么难呢!但别急呀,咱得静下心来,仔细琢磨。

这不就跟咱平时解一
道特别难的谜题一样嘛,刚开始觉得毫无头绪,可一旦找到那个关键点,嘿,豁然开朗啦!
在做这个大作业的过程中,可千万不能马虎哟!每一个数据都得像
宝贝一样对待,要是不小心弄错了一个,那可能整个结果都跑偏啦!
这就好比盖房子,一块砖没放好,那房子说不定就歪了呀。

而且呀,团队合作也很重要呢!大家一起讨论,一起想办法,那可
比一个人闷头苦干强多啦。

就好像一群小伙伴一起去冒险,每个人都
能发挥自己的长处,互相帮助,多有意思呀!
还有啊,别忘了多检查几遍自己的成果。

这就跟出门前照镜子一样,得看看自己有没有哪里不妥当。

可别嫌麻烦,这可是关乎最后成果好
不好的关键一步呢!
数值计算方法大作业,它既是挑战,也是机会呀!通过完成它,我们能学到好多好多实用的知识和技能,以后遇到类似的问题,咱就可以轻松应对啦,这多棒呀!所以呀,别害怕它,勇敢地去面对,去探索,去享受这个过程吧!咱肯定能把它完成得漂漂亮亮的,让别人都竖起大拇指,你说是不是呢?。

计算方法大作业——三次样条插值

计算方法大作业——三次样条插值
8
计算方法上机报告
此完成所有数据的输入。继续按 Enter 键会出现提示“选择封闭方程组的边界条件: 第 一类边界条件输入 1,第二类边界条件输入 2,第三类边界条件输入 3。 ”根据已知情况 选择相应的边界条件,若为自然三次样条插值,则选 1,并将插值区间两端点的二阶导 数值设置为 0。输入完成之后按 Enter 开始求解,程序运行结束后命令窗口会显示要求 的三次样条插值函数,同时会出现该插值函数以及插值节点的图像,便于直接观察。 2.3 算例及计算结果 (1) 《数值分析》课本第 137 页的例题 4.6.1,已知函数 y=f(x)的数值如下表,求它 的自然三次样条插值函数。 xi yi -3 7 -1 11 0 26 3 56 4 29
2 三次样条插值
2 三次样条插值
2.1 算法原理及程序框图 设在区间[a, b]上给定 n+1 个节点 xi(a ≤ x0 < x1 < … < xn ≤ b),在节点 xi 处的函数 值为 yi = f(xi) (i = 0,1,…,n)。若函数 S(x)满足以下三个条件: (1) 在每个子区间[xi-1, xi] (i = 0,1,…,n)上,S(x)是三次多项式; (2) S(xi) = yi (i = 0,1,…,n); (3) 在区间[a, b]上,S(x)的二阶导数 S”(x)连续, 则称 S(x)为函数 yi = f(x) 在区间[a, b]上的三次样条插值函数。 由定义可知 S(x)共有 4n 个待定参数,根据条件(3)可得如下 3n-3 个方程,
S x
x x i
6hi
3
M i 1
x xi 1
6hi
3
x x hi2 M i yi 1 M i 1 i 6 hi

计算方法大作业

计算方法大作业

计算方法大作业
1、试探法证明方程0128423=++-x x x 有三个实根,并确定三个根所在区间(区间长度不超过1).
2、方程0123=--x x 在5.10=x 附近有根, 将方程作三种改写,可得三种迭代式: (1) 21211,11k
k x x x x +=+=+; (2) 321231,1k k x x x x +=+=+; (3) 11,1112-=-=+x x x x k .
判断各迭代式在5.10=x 附近的收敛性;选一种收敛最快的迭代式,计算5.10=x 附近的根,准确的4位小数.
3、用牛顿法于方程0n x a -=和1/0n a x -=
的迭代公式。

已知0 1.3x ≈=,问用这种迭代公式迭代一、二次能得几位小数准确的近似值(已
1.31607401=⋅⋅⋅)?
4、用雅可比迭代法与赛德尔迭代法解方程组 ⎪⎩⎪⎨⎧=-+=+-=++-7416518321
321321x x x x x x x x x ,取初值T x )0,0,0()0(=,准确到两位小数。

5、设有方程组
⎪⎩⎪⎨⎧=++=++=++.251084,118104,134410321
321321x x x x x x x x x ,写出雅可比迭代、赛德尔、2.1=ω的SOR 迭代算式。

三种迭代是否收敛?为什么?
6、设有方程组1231231231.25 3.6912.370.58,10.019.050.12 1.43,1.22 4.33 2.76 3.22.x x x x x x x x x --=⎧⎪-++=⎨⎪-+=⎩
写出收敛的迭代格式,说明收敛的理由。

西安交大计算方法B2017大作业

西安交大计算方法B2017大作业

计算方法B上机报告某某:学号:班级:学院:任课教师:2017年12月29日题目一:1.1题目内容某通信公司在一次施工中,需要在水面宽度为20米的河沟底部沿直线走向铺设一条沟底光缆。

在铺设光缆之前需要对沟底的地形进展初步探测,从而估计所需光缆的长度,为工程预算提供依据。

已探测到一组等分点位置的深度数据(单位:米)如下表所示:(1)请用适宜的曲线拟合所测数据点;(2)估算所需光缆长度的近似值,并作出铺设河底光缆的曲线图;1.2 实现题目的思想与算法依据首先在题目〔1〕中要实现的是数据的拟合,显然用到的是我们在第三章中数据近似的知识内容。

多项式插值时,这里有21个数据点,如此是一个20次的多项式,但是多项式插值随着数据点的增多,会导致误差也会随之增大,插值结果会出现龙格现象,所以不适用于该题目中点数较多的情况。

为了防止结果出现大的误差,同时又希望尽可能多地使用所提供的数据点,提高数据点的有效使用率,这里选择分段插值方法进展数据拟合。

分段插值又可分为分段线性插值、分段二次插值和三次样条插值。

由于题目中所求光缆的现实意义,而前两者在节点处的光滑性较差,因此在这里选择使用三次样条插值。

根据课本SPLINEM 算法和TSS 算法,采用第三种真正的自然边界条件,在选定边界条件和选定插值点等距分布后,可以先将数据点的二阶差商求出并赋值给右端向量d ,再根据TSS 解法求解三对角线线性方程组从而解得M 值。

求出M 后,对区间进展加密,计算200个点以便于绘图以与光缆长度计算。

对于问题〔2〕,使用以下的公式:20=()L f x ds ⎰20(f x =⎰191(k kk f x +==∑⎰1.3 算法结构1.For n i ,,2,1,0⋅⋅⋅=1.1 i i M y ⇒2. For 2,1=k2.1 For k n n i ,,1, -=2.1.1 i k i i i i M x x M M ⇒----)/()(13. 101h x x ⇒-4. For 1-,,2,1n i =4.1 11++⇒-i i i h x x4.2 b a c c h h h i i i i i i ⇒⇒-⇒+++2;1;)/(11 4.3 i i d M ⇒+165. 0000;;c M d M d n n ⇒⇒⇒λn n n b a b ⇒⇒⇒2;;20μ6. 1111,γμ⇒⇒d b7. For m k ,,3,2 =! 获取M 的矩阵元素个数,存入m7.1 k k k l a ⇒-1/μ 7.2 k k k k c l b μ⇒⋅-1- 7.3 k k k k l d γγ⇒⋅-1- 8. m m m M ⇒μγ/9. For 1,,2,1 --=m m k9.1 k k k k k M M c ⇒⋅-+μγ/)(1 10. k ⇒1! 获取x 的元素个数存入s 11. For 1,,2,1-=s i11.1 if i x x ≤~ then k i ⇒;breakelse k i ⇒+112. xx x x x x h x x k k k k ˆ~;~;11⇒-⇒-⇒--- y h x h M y x h M y x M x M k k k k k k ~/]ˆ)6()6(6ˆ6[2211331⇒-+-++---1.4 matlab 源程序n=20; x=0:n;y=[9.01 8.96 7.96 7.97 8.02 9.05 10.13 11.18 12.26 13.28 13.32 12.61 11.29 10.22 9.15 7.90 7.95 8.86 9.81 10.80 10.93];M=y; %用于存放差商,此时为零阶差商 h=zeros(1,n+1); c=zeros(1,n+1); d=zeros(1,n+1); a=zeros(1,n+1); b=2*ones(1,n+1); h(2)=x(2)-x(1);for i=2:n %书本110页算法SPLINEM h(i+1)=x(i+1)-x(i); c(i)=h(i+1)/(h(i)+h(i+1)); a(i)=1-c(i); enda(n+1)=-2; %计算边界条件c(0),a(n+1),采用的是第三类边界条件 c(1)=-2;for k=1:3 %计算k 阶差商for i=n+1:-1:k+1M(i)=(M(i)-M(i-1))/(x(i)-x(i-k));endif(k==2) %计算2阶差商d(2:n)=6*M(3:n+1); %给d赋值endif(k==3)d(1)=(-12)*h(2)*M(4); %计算边界条件d(0),d(n),采用的是第三类边界条件 d(n+1)=12*h(n+1)*M(n+1);endendl=zeros(1,n+1);r=zeros(1,n+1);u=zeros(1,n+1);q=zeros(1,n+1);u(1)=b(1);r(1)=c(1);q(1)=d(1);for k=2:n+1 %利用书本49页算法TSS求解三对角线性方程组r(k)=c(k);l(k)=a(k)/u(k-1);u(k)=b(k)-l(k)*r(k-1);q(k)=d(k)-l(k)*q(k-1);endp(n+1)=q(n+1)/u(n+1);for k=n:-1:1p(k)=(q(k)-r(k)*p(k+1))/u(k);endfprintf('三对角线性方程组的解为:');disp(p);%求拟合曲线x1=0:0.1:20; %首先对区间进展加密,增加插值点n1=10*n;x2=zeros(1,n1+1);x3=zeros(1,n1+1);s=zeros(1,n1+1);for i=1:n1+1for j=1:nif x1(i)>=x(j)&&x1(i)<=x(j+1) %利用书本111页算法EVASPLINE求解拟合曲线s(x)h(j+1)=x(j+1)-x(j);x2(i)=x(j+1)-x1(i);x3(i)=x1(i)-x(j);s(i)=(p(j).*(x2(i)).^3/6+p(j+1).*(x3(i)).^3/6+(y(j)-p(j).*((h(j+1)).^2/6)).*x2( i)+...(y(j+1)-p(j+1).*(h(j+1)).^2/6).*x3(i))/h(j+1);endendendplot(x,-y,'x') %画出插值点hold onplot(x1,-s) %画出三次样条插值拟合曲线hold ontitle('三次样条插值法拟合电缆曲线');xlabel('河流宽度/m');ylabel('河流深度/m');Length=0;for i=1:n1L=sqrt((x1(i+1)-x1(i))^2+(s(i+1)-s(i))^2); %计算电缆长度 Length=Length+L;endfprintf('电缆长度(m)=');disp(Length);1.5 结果与说明由上图可以看出,所得到的曲线光滑,能够较好得反映实际的河沟底部地势形貌。

2019-2020学年第一学期期末考试《计算方法》大作业答案

2019-2020学年第一学期期末考试《计算方法》大作业答案

吉林大学网络教育学院2019-2020学年第一学期期末考试《计算方法》大作业答案学生姓名专业层次年级学号学习中心成绩年月日作业完成要求:大作业要求学生手写,提供手写文档的清晰扫描图片,并将图片添加到word文档内,最终wod文档上传平台,不允许学生提交其他格式文件(如JPG,RAR等非word文档格式),如有雷同、抄袭成绩按不及格处理。

一、解线性方程(每小题8分,共80分)1、用矩阵的LU分解算法求解线性方程组X1+2X2+3X3= 02X1+2X2+8X3= -4-3X1-10X2-2X3= -11答:2、用矩阵的Doolittle分解算法求解线性方程组X1+2X2+3X3= 12X1– X2+9X3= 0-3X1+ 4X2+9X3= 1答:3、用矩阵的Doolittle分解算法求解线性方程组2X1+X2+X3= 46X1+4X2+5X3=154X1+3X2+6X3= 13答:4、用高斯消去法求解线性方程组2X1- X2+3X3= 24X1+2X2+5X3= 4-3X1+4X2-3X3= -3答:5、用无回代过程消元法求解线性方程组2X1- X2+3X3= 24X1+2X2+5X3= 4-3X1+4X2-3X3= -3答:6、用主元素消元法求解线性方程组2X1- X2+3X3= 24X1+2X2+5X3= 4-3X1+4X2-3X3= -3答:7、用高斯消去法求解线性方程组1231231232344272266x x x x x x x x x -+=++=-++=答:8、利用Doolittle 分解法解方程组Ax=b ,即解方程组12341231521917334319174262113x x x x -⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥--⎢⎥⎢⎥⎢⎥--⎣⎦⎣⎦⎣⎦ 答:9、利用Doolittle 分解法解方程组Ax=b ,即解方程组123421111443306776081011112x x x x ⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥-⎣⎦⎣⎦⎣⎦ 答:10、用高斯消元法解方程组1237811351341231x x x -⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥-=-⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦答案:二、计算(每小题10分,共20分)1、已知节点x1,x2及节点处函数值f(x1),f(x2),构造线性插值多项式p1(x). 答:2、设f(xi)=i(i=0,1,2),构造二次式p2(x),使满足: p2(xi)=f(xi)(i=0,1,2)答:。

计算方法大作业讲解

计算方法大作业讲解

计算方法大作业一、计算方法学后感计算方法学习主要内容为函数逼近论,数值微分,数值积分,误差分析等。

常用方法有迭代法、差分法、插值法、有限元素法等,印象深刻的是三次样条差值函数,大概是做了作业的缘故。

计算也称数值分析,数学不好的人也没有学会太多东西,不过还是有些小体会的:1>主要矛盾和次要矛盾之间的关系。

现实问题中有很多约束条件,需要我们有侧重的保留摒弃,辨析主要矛盾和次要矛盾,从而提出合理假设;2>尺有所短寸有所长。

没有完美无缺的算法,虽然我们看到有不断地改进优化算法,但这些往往都是以牺牲某些优点为代价的。

比如提高精度,往往会导致格式复杂,产生较大运算量;3>原则不能变。

算法也是要讲原则的,比如要谈算法的优劣性前提是要保证算法的可靠性(相容、收敛、稳定等)。

门外汉的感受也就这水准了。

至于计算方法思想在实际生活中的应用,我想来想去就这些了。

(1)天气预报:天气会受各种因素的影响,稍微一些因素发生改变就会产生很大的变化,所以天气预报其实是一件比较困难的工作。

古代人们用占卜或者经验总结等方式来预计天气状况,这倒更像是统计学。

而有了计算机,我们就可以通过数值模拟来预报天气。

具体过程就是:首先根据大气运动列出数学物理方程(偏微分),其次对空间进行网格划分,然后通过观测数据给出初值条件,最后通过数值方法求解这些偏微分方程得到网格点处的数值解。

这也是为什么主持人总是说大概在...地区,大致在...时段,可能有...量级的降水...因为时空是连续的,而网格划分不可能无限密,所得的数值解也存在误差。

(2)等离子体:对等离子体现有的理论描述中,磁流体力学、符拉索夫方程、福克-普朗克方程等都是微分方程,包含很多参量,如果要求出解析解,物理模型往往需要过分简化以至于无法精确和全面的包罗各种效应,所以需要数值计算,这也是等离子体物理学研究中很重要的一个方面。

比如最简单的单粒子模型,它的牛顿洛伦兹方程是这样:。

数值计算方法大作业

数值计算方法大作业

目录第一章非线性方程求根 (3)1.1迭代法 (3)1.2牛顿法 (4)1.3弦截法 (5)1.4二分法 (6)第二章插值 (7)2.1线性插值 (7)2.2二次插值 (8)2.3拉格朗日插值 (9)2.4分段线性插值 (10)2.5分段二次插值 (11)第三章数值积分 (13)3.1复化矩形积分法 (13)3.2复化梯形积分法 (14)3.3辛普森积分法 (15)3.4变步长梯形积分法 (16)第四章线性方程组数值法 (17)4.1约当消去法 (17)4.2高斯消去法 (18)4.3三角分解法 (20)4.4雅可比迭代法 (21)4.5高斯—赛德尔迭代法 (23)第五章常积分方程数值法 (25)5.1显示欧拉公式法 (25)5.2欧拉公式预测校正法 (26)5.3改进欧拉公式法 (27)5.4四阶龙格—库塔法 (28)数值计算方法第一章非线性方程求根1.1迭代法程序代码:Private Sub Command1_Click()x0 = Val(InputBox("请输入初始值x0"))ep = Val(InputBox(请输入误差限ep))f = 0While f = 0X1 = (Exp(2 * x0) - x0) / 5If Abs(X1 - x0) < ep ThenPrint X1f = 1Elsex0 = X1End IfWendEnd Sub例:求f(x)=e2x-6x=0在x=0.5附近的根(ep=10-10)1.2牛顿法程序代码:Private Sub Command1_Click()b = Val(InputBox("请输入被开方数x0"))ep = Val(InputBox(请输入误差限ep))f = 0While f = 0X1 = x0 - (x0 ^ 2 - b) / (2 * b)If Abs(X1 - x0) < ep ThenPrint X1f = 1Elsex0 = X1End IfWendEnd Sub例:求56的值。

2018-2019学年第二学期期末考试《计算方法》大作业参考答案

2018-2019学年第二学期期末考试《计算方法》大作业参考答案

吉林大学网络教育学院2018-2019学年第二学期期末考试《计算方法》大作业学生姓名专业层次年级学号学习中心成绩年月日一、构造次数不超过三次的多项式P3(X),使满足:(10分)P3(0)= 1;P3(1)=0;P3′(0)=P3′(1)=0。

二、设f(x i)=i(i=0,1,2),构造二次式p2(x),使满足:(10分) p2(x i)=f(x i)(i=0,1,2)三、设节点x i=i(i=0,1,2,3),f(0)=1,f(1)=0,f(2)=-7,f(3)=26,构造次数不超过3次的多项式p3(x),满足p3(x i)=f(x i),i=0,1,2,3 (10分)四、对于上题的问题,构造Newton插值多项式。

(10分)五、构造三次多项式P 3(X )满足:P 3(0)= P 3(1)=0,P 3′(0)=P 3′(1)=1。

(10分)六、利用Doolittle 分解法解方程组Ax=b 即解方程组 (15分) 12341231521917334319174262113x x x x -⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥--⎢⎥⎢⎥⎢⎥--⎣⎦⎣⎦⎣⎦解:用公式七、基于迭代原理证明(10分)+++=22 (22)八、构造二次多项式2()x p 满足: (10分)'010222()1;()0;()1p p p x x x ===九、构造一个收敛的迭代法求解方程3210x x --=在[1.3,1.6]内的实根。

合理选择一个初值,迭代一步,求出1x 。

(15分)作业完成要求:大作业要求学生手写,提供手写文档的清晰扫描图片,并将图片添加到word 文档内,最终word文档上传平台,不允许学生提交其他格式文件(如JPG,RAR等非word 文档格式),如有雷同、抄袭成绩按不及格处理。

计算方法

计算方法

SHANGHAI JIAO TONG UNIVERSITY论文题目:计算方法大作业多方法求解数值积分****: ***学生学号: ************专业: 机械工程****: ***学院(系): 机械与动力工程学院多方法求解数值积分具体题目要求:用不同数值方法计算积分49xdx=-⎰(1) 取不同的步长h,分别用复合梯形及复合辛普森公式计算积分,给出误差中关于h的函数,并与积分精确值比较两个公式的精度,是否存在一个最小的h,使得精度不能再被改善?(2) 用龙贝格求积计算完成问题(1);(3) 用自适应辛普森积分,使其精度达到410-。

一.设计目的由积分学基本理论,定积分可由Newton Leibniz-公式计算,但是对于一些无法找到原函数的函数(如2xe-等)不能通过牛顿—莱布尼兹公式计算,就必须得另寻它法。

因此需要我们能够熟练地应用常用的数值积分计算方法(如机械求积、Newton Cotes-公式等)并掌握结合数值计算软件(Matlab、Lingo 等)及计算机高级语言()c java、进行对应算法实现的技能。

熟练数学软件求解数学问题,掌握各种数学问题的求解方法。

本设计主要是通过多种复合求积公式求解积分,主要包括复化梯度法、复化辛普森法、龙贝格以及自适应辛普森法等求解方法,利用C#语言编写相对应的算法进行求解,并用Matlab作图分析,大大地提高了解题的速度。

二.积分算法1.复合梯形公式、复合辛普森公式算法当积分区间[a,b]的长度较大,而节点数n+1固定时,直接使用牛顿-柯特斯公式的余项将会较大,而如果增加节点个数,即n+1增加时,公式的舍入误差又很难得到控制。

为了提高公式的精度,又使算法简单易行,往往使用复合方法,即将积分区间[a,b]分成若干个子区间,然后在每个小区间上的积分的近似值相加将定积分∫f(x)dxba的积分区间[a,b]分割n等分,各节点为x k=a+kℎ,k=0,1⋯n ℎ=b−an在子区间[x k ,x k+1] (k =0,1⋯n −1 )上使用牛顿-柯特斯公式将[x k ,x k+1]分割为l 等份,步长为ℎl ,节点为x k ,x k +ℎl ,x k +2ℎl ,⋯,x k +lℎl=x k+1记为x k ,x k+1l,x k+2l,⋯,xk+ll=x k+1在[x k ,x k+1]上作f(x)的l 阶牛顿-柯特斯公式∫f(x)dx x k+1x k≈I i (k )=(x k+1−x k )∑C i (l )f (xk+i l)li=0=ℎ∑C i (l )f(xk+i l)li=0由积分的区间可加性,可得∫f(x)dx b a=∑∫f(x)dx x k+1x kn−1k=0≈∑I i (k )n−1k=0=ℎ∑∑C i (l )f(xk+i l)li=0=I n n−1k=0l =1时,可得复合梯形求积公式∫f(x)dx ba≈T n =ℎ∑12n−1k=0[f (x k )+f (x k+1)]即复合梯形公式T n =b −a2n[f (a )+2∑f (x k )n−1k=1+f (b )] 2()12b a E h f η-''=-[,]a b η∈ l =2时,可得复合辛普森求积公式∫f(x)dx ba≈S n =ℎ∑16n−1k=0[f (x k )+4f (x k+12)+f (x k+1)]即复合辛普森公式S n =b −a6n [f (a )+4∑f (x k+12)n−1k=0+2∑f (x k )n−1k=1+f (b )]4(4)()1802b a h E f η-⎛⎫=- ⎪⎝⎭[,]a b η∈算法流程图如下:2.龙贝格算法这里,梯形公式显得算法简单,具有如下递推关系121021()22n n n i i h T T f x -+==+∑因此,很容易实现从低阶的计算结果推算出高阶的近似值,而只需要花费较少的附加函数计算。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
k=i;
for(j=i+1;j<=n-1;j++)
if(fabs(*(c+j*(n+1)+i))>(fabs(*(c+k*(n+1)+i))))
k=j;
if(k!=i)
for(j=i;j<=n;j++)
{
p=*(c+i*(n+1)+j);
*(c+i*(n+1)+j)=*(c+k*(n+1)+j);
计算方法上机报告
班级:学号:姓名:成绩:
1舍入误差及稳定性
一、实验目的
(1)通过上机编程,复习巩固以前所学程序设计语言及上机操作指令;
(2)通过上机计算,了解舍入误差所引起的数值不稳定性
二、实验内容
1、用两种不同的顺序计算 ,分析其误差的变化
2、已知连分数 ,利用下面的算法计算 :
写一程序,读入 计算并打印
d[i]=b[i]+a[i+1]/d[i+1];
printf("\nf=%f\n",d[0]);
}
(3)实验结果
程序运行结果:
3、给出一个有效的算法和一个无效的算法计算积分
(1)实验步骤
利用C语言编写程序,分别使用数值稳定的和数值不稳定的计算公式所建立的递推公式进行计算。
(2)程序设计
#include<stdio.h>
void main()
{
double i;
int j;
double sum=0;
for(i=10000,j=10000;i>=M;i--,j--)
{
sum=sum+(1/(i*i));
if(j%1000==0)
if(j%2000)
printf("sum[%d]=%f\n",j,sum);
else printf("sum[%d]=%-20f",j,sum);
#include<stdio.h>
#include<math.h>
#define M 1000
void main()
{
int i,n;
float a[M],b[M],d[M];
printf("输入n=");
scanf("%d",&n);
printf("\n输入a[1]到a[n]:\n");
for(i=1;i<=n;i++)
4、设 ,已知其精确值为
(1)实验步骤
先编程按从大到小的顺序计算 的程序,再编程按从小到大的顺序计算 的程序,然后按两种顺序分别计算 。
(2)程序设计
#include<stdio.h>
main()
{
int N;
double SN[30000];
SN[30000]=(3.0/2.0-1.0/30000.0-1/30001.0)/2.0;
(2)程序设计:
a.顺序计算
#include<stdio.h>
#include<math.h>
#define M 10000
void main()
{
double i;
int j;
double sum=0;
for(i=1,j=1;i<=M;i++,j++)
{
sum=sum+(1/(i*i));
if(j%1000==0)
*(c+k*(n+1)+j)=p;
}
for(j=i+1;j<=n-1;j++)
{
p=(*(c+j*(n+1)+i))/(*(c+i*(n+1)+i));
for(t=i;t<=n;t++)
*(c+j*(n+1)+t)-=p*(*(c+i*(n+1)+t));
}
}
for(i=n-1;i>=0;i--)
{
while(1)
{
y_1=1.0/(4*n)+y_0/(-4.0);
printf("y[%d]=%-20f",n,y_1);
if(n>=10) break;
y_0=y_1;
n++;
if(n%3==0) printf("\n");
}
printf("\n无效算法的输出结果:\n");
printf("y[10]=%-20f",y_2);
3、给出一个有效的算法和一个无效的算法计算积分
4、设 ,已知其精确值为
(1)编制按从大到小的顺序计算 的程序
(2)编制按从小到大的顺序计算 的程序
(3)按两种顺序分别计算 并指出有效位数
三、实验步骤、程序设计、实验结果及分析
1、用两种不同的顺序计算 ,分析其误差的变化
(1)实验步骤:
分别从1~10000和从10000~1两种顺序进行计算,应包含的头文件有stdio.h和math.h
ColPivot(c[0],4,x);
for(i=0;i<=3;i++)
printf("x[%d]=%f\n",i,x[i]);
}
(2)实验结果及分析
(1)题
(2)题
2、用LU分解法解方程组
(1)程序设计
#include<stdio.h>
void main()
{
float x[4];
int i;
float a[4][5]={48,-24,0,-12,4,
-24,24,12,12,4,
0,6,20,2,-2,
-6,6,2,16,-2
};
void DirectLU(float*,int,float[]);
DirectLU(a[0],4,x);
for(i=0;i<=3;i++)printf("x[%d]=%f\n",i,x[i]);
}
void DirectLU(float*u,int n,float x[])
3 线性方程组数值解法
一、实验目的
(1)熟悉求解线性方程组的有关理论和方法;
(2)会编制列主元消去法,LU分解法,雅可比及高斯-赛德尔迭代法的程序;
(3)通过实际计算,进一步了解各种方法的优缺点,选择合适的数值方法。
二、实验内容
1、用列主元消去法解方程组
2、用LU分解法解方程组
三、实验步骤、程序设计、实验结果及分析
return 0;
}
void main()
{
printf("x*x-exp(x),\n");
answer(ff1);
printf("x*exp(x)-1,\n");
answer(ff2);
printf("lg(x)+x-2,\n");
answer(ff3);
}(3)实验结果及分析
2、割线法
(1)程序设计
程序运行结果:
结果分析:不同顺序计算所得结果是一样的。
四、总结
通过这次上机,学习了解了舍入误差在不同算法时对结果的影响不同,稳定的算法才能获得正确的结果。
2 方程求根
一、实验目的
(1)通过对二分法与牛顿迭代法做编程练习和上机运算,进一步体会二分法和牛顿法的不同。
(2)编写割线迭代法的程序,求非线性方程的解,并与牛顿迭代法作比较。
float ff1(float x)
{
return x*x-exp(x);
}
float ff2(float x)
{
return x*exp(x)-1;
}
float ff3(float x)
{
return log(x)+x-2;
}
float answer(float(*p)(float))
{
int k=2;
while(1)
{
y_3=1.0/n-4.0*y_2;
printf("y[%d]=%-20f",m-1,y_3);
if(m<=1) break;
y_2=y_3;
m--;
if(m%2==0) printf("\n");
}
}
(3)实验结果及分析
程序运行结果:
结果分析:无效算法数值不稳定,误差造成的影响特别大
#include<stdio.h>
#include<math.h>
float gexian(float,float);
float f(float);
main()
{
int i,j;
float x1=2.2;
float x2=2,x3;
scanf("%d",&i);
if(i==1) printf("%f",x1);
#include<math.h>
main()
{
double y_0=(1/4.0)*log(5),y_1;
double y_2=(1.0/55.0+1.0/11.0)/2,y_3;
int n=1,m=10;
printf("有效算法输出结果:\n");
相关文档
最新文档