收藏 分享(赏)

数值分析编程总结.doc

上传人:精品资料 文档编号:10665730 上传时间:2019-12-16 格式:DOC 页数:14 大小:37.40KB
下载 相关 举报
数值分析编程总结.doc_第1页
第1页 / 共14页
数值分析编程总结.doc_第2页
第2页 / 共14页
数值分析编程总结.doc_第3页
第3页 / 共14页
数值分析编程总结.doc_第4页
第4页 / 共14页
数值分析编程总结.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、11. LU 分解:L U=lu(A);2. 追赶法function x=zhuiganfa(A,b)n,n=size(A); for i=1:nif(i=1)l(i)=A(i,i);y(i)=b(i)/l(i);else l(i)=A(i,i)-A(i,i-1)*u(i-1);y(i)=(b(i)-y(i-1)*A(i,i-1)/l(i);endif(in=101;c1=ones(1,n-1);a1=diag(c1,-1); 这个-1 说明行位置-1c2=12*ones(1,n);2a2=diag(c2); c3=ones(1,n-1);a3=diag(c3,1); a=a1+a2+a3;3

2、. 拉格朗日插值function yh=lage(x,y,xh)n=length(x);m=length(xh);yh=zeros(1,m);c1=ones(n-1,1);c2=ones(1,m);for i=1:nxp=x(1:i-1 i+1:n);yh=yh+y(i)*prod(c1*xh-xp*c2)./(x(i)-xp*c2);endend x=11,12; y=2,4; xh=11.75; lage(x,y,xh)ans =3.50004 最小二乘法1. 最小二乘的 xi 和 yi 为:xi 1953 1964 1982 1990 2000yi 5.82 6.95 10.08 11.

3、34 12.66要拟合的函数为:y=a+bx-cxy 注意不是多项式2. 编程函数为:function z = erchen(x,y)x1=ones(5,1); A=x1,x,-x.*y; 注意点乘z=Ay; 注意左除a=z(1);b=z(2);c=z(3);end 输入: x=1953 1964 1982 1990 2000; y=5.82 6.95 10.08 11.34 12.66;3 erchen(x,y)ans =2.9456 =a-0.0014 =b-0.0005 =c1. 最小二乘的 xi 和 yi 为:xi 0 0.25 0.5 0.75 1yi 1 1.284 1.6487

4、2.1170 2.7183要拟合的函数为:y=a+bx+cx 2 是多项式2. 编程函数为:function z = erchen2(x,y)x1=ones(5,1); A=x1,x,x.2;z=Ay;a=z(1);b=z(2);c=z(3);end输入: x=0 0.25 0.5 0.75 1.00; y=1.00 1.284 1.6487 2.1170 2.7183; erchen2(x,y)ans =1.00510.86420.8437最小二乘多项式拟合的简单函数方法: x=0 0.25 0.5 0.75 1.00; y=1.00 1.284 1.6487 2.1170 2.7183;

5、P=polyfit(x,y,2) 要拟合成 4 次,则 2 改成 4 就可以了P =0.8437 0.8642 1.0051 注意此内置函数输出的结果 c,b,a 是反的45 复合辛普森公式求解积分先定义函数:function v=f(x)v=sin(x); “若定义有除数要点除,分母有 0时要特殊定义 ”end定义程序:function I=fsps(f,a,b,n)h=(b-a)/n;x=linspace(a,b,2*n+1);y=feval(f,x);I=(h/6)*(y(1)+2*sum(y(3:2:2*n-1)+4*sum(y(2:2:2*n)+y(2*n+1);end fsps(f

6、 ,0,1,4)ans =0.45976.不动点迭代思路不动点迭代常常有好几个迭代的不动点函数,所以要分别定义这些函数是很困难的,如是乎使用SWITCH内置函数进行切换 ,叫切换函数.1.先定义函数后进行编程的方法先需要定义不动点函数:function v=f(x)v=x3-x-1;end再定义编程:function it,x=fixpnt1(f,a,maxit,tol)it=0;x=feval(f,a);while ittol,it=it+1;a=x;x=feval(f,a);end此函数的调用: fixpnt1(f,2,100,1e-5)ans =153.利用切换函数SWITCH的方法(多

7、个不动点迭代函数)function x,it=fixpnt(np,a,maxit,tol)switch np,case 1,phi=inline(3*x+10)(1/5);case 2,phi=inline(sin(10*x)+2*cos(x)-3);case 3,phi=inline(3-atan(x);case 4,phi=inline(-2-1/log(x2+x+1);endit=0;x=phi(a);while ittol,it=it+1;a=x;x=phi(a);end使用与输入: fixpnt(2,1,100,1e-5)ans =-4.26967. 雅可比迭代function x

8、it=jacobi(A,b,tol)D=diag(diag(A);L=D-tril(A);U=D-triu(A);x=zeros(size(b);for it=1:500x=D(b+L*x+U*x);error=norm(b-A*x)/norm(b);if (errortol, it=it+1;x=a/2+b/2;fx=feval(f,x);if sign(fx)=sign(fa), a=x;fa=fx;7elseb=x;fb=fx;endend11. 牛顿法:1.先定义函数后进行编程的方法先需要定义不动点函数需要计算的函数ffunction v = f( x )v=x5-3*x-10;end

9、需要计算的函数的导数gfunction v = g( x )v=5*x4-3;end2. 再定义编程:function v = newton(a,f,g,maxit,tol)it=0;x=a;while ittol,it=it+1;x=x-feval(f,x)/feval(g,x);endv=x,it;end12. 牛顿下山法:1.先定义函数后进行编程的方法先需要定义不动点函数需要计算的函数ffunction v = f(x)v=x2+sin(10*x)-1end需要计算的函数的导数gfunction v =g(x)v = 2*x+10*cos(10*x)end2. 再定义编程1:8funct

10、ion v = newtonxiashang(x0,f,g,maxit,tol)x=x0;it=0;while ittol,it=it+1;d=-feval(f,x)/feval(g,x);lambda=1;isdone=0;while isdone,xn=x+lambda*d;if abs(feval(f,xn)tol,it=it+1;d=-feval(f,x)/feval(g,x);lambda=1;while abs(feval(f,x+lambda*d)=abs(feval(f,x),lambda=0.5*lambda;endx=x+lambda*d;endv=x,it;end13.

11、割线法1.先定义函数后进行编程的方法先需要定义函数需要计算的函数ffunction v = f( x )9v=x5-3*x-10;end2. 再定义编程:function v = gexian(a,b,f,maxit,tol)it=0;x0=a;x=b;while ittol,it=it+1;xt=x-feval(f,x)/(feval(f,x)-feval(f,x0)*(x-x0);x0=x;x=xt; endv=x,it;end输入: gexian(1,2,f,100,1e-5)ans =1.7226 7.000014. 乘幂法function t,y = chenmifa( a,xini

12、t,ep )v0=xinit;tv ti= max(abs(v0);lam0=v0(ti);u0=v0/lam0;flag=0;while (flag=0)v1=a*u0;tv ti= max(abs(v1);lam1=v1(ti);u0=v1/lam1;if (abs(lam0-lam1) a=2,3,2;10,3,4;3,6,1; xinit=1 1 1; ep=0.0001; t y=chenmifa(a,xinit,ep)t =11.0000y =0.50001.00000.750015. 反幂法function t y =fanmifa( a,xinit,ep )v0=xinit;t

13、v ti= max(abs(v0);lam0=v0(ti);u0=v0/lam0;flag=0;while (flag=0)v1=a-1*u0;tv ti= max(abs(v1);lam1=v1(ti);u0=v1/lam1;if (abs(lam0-1-lam1-1) a=12 6 -6;6 16 2;-6 2 16;xinit=1 -0.5 0.5; t y =fanmifa( a,xinit,0.0001 )t =4.4560y =1.0000-0.6287110.628716. 结合原点平移反幂法function t y =yuandian( a,p,xinit,ep )n n=si

14、ze(a);v0=xinit;tv ti= max(abs(v0);lam0=v0(ti);u0=v0/lam0;flag=0;while (flag=0)v1=(a-p*eye(n)-1*u0;tv ti= max(abs(v1);lam1=v1(ti);u0=v1/lam1;if (abs(lam0-1-lam1-1) a=6 2 1;2 3 1;1 1 1; p=6; ep=0.0001; xinit=1 1 1; t y=yuandian(a,p,xinit,ep)t =7.2880y =1.00000.52290.242217. 欧拉公式初值问题1. 先定义导数函数 f:functi

15、on v = f( x,y)v=-y+x+1;end2. 定义欧拉公式编程:12function x,y = oula( f,y0,a,b,n )y(1)=y0;h=(b-a)/n;x=a:h:b;for i=1:n;y(i+1)=y(i)+h*feval(f,x(i),y(i);endend18. 改进的欧拉公式初值问题1. 先定义导数函数f:function v = f( x,y)v=-y+x+1;end要先运行一下。2. 定义欧拉公式编程:function x,y =gaijingoula(f,y0,a,b,n)y(1)=y0;h=(b-a)/n;x=a:h:b;for i=1:n;yp

16、=y(i)+h*feval(f,x(i),y(i);yc=y(i)+h*feval(f,x(i+1),yp);y(i+1)=0.5*(yc+yp);endend19. 梯形公式初值问题1. 先定义导数函数f:function v = f( x,y)v=-y+x+1;end要先运行一下。2. 定义欧拉公式编程:function x,y = tixing( f,y0,a,b,n )y(1)=y0;h=(b-a)/n;x=a:h:b;for i=1:n;y(i+1)=1/(0.5*h+1)*(y(i)+0.5*h*(feval(f,x(i),y(i)+x(i+1)+1);end13end20. 标准

17、四阶四段龙格库塔公式初值问题1. 先定义导数函数f:function v = f( x,y)v=y+x;end要先运行一下。2. 定义欧拉公式编程:function x,y = longgekuta(f,y0,a,b,n)y(1)=y0;h=(b-a)/n;x=a:h:b;for i=1:n,k1=h*feval(f,x(i),y(i);k2=h*feval(f,x(i)+0.5*h,y(i)+0.5*k1);k3=h*feval(f,x(i)+0.5*h,y(i)+0.5*k2);k4=h*feval(f,x(i)+h,y(i)+k3);y(i+1)=y(i)+(k1+2*k2+2*k3+k4)/6;endend21. 基本问题1. 特征值: eig(A)2. 数值显示位数: format long format short3. 左除和右除:AX=B,则X=AB; 左除XB=A,则X=A/B; 右除/ (右除是真除)4. 特殊符号In(x)=log(x)根号用sqrt(x)5.绘图功能Plot(x,y,style)x=0:0.5:10;y=x;hold on;plot(x,y,g+:)后面style的意义:14y,g,r,b分别指颜色黄色、绿色、红色、蓝色;o * + p 代表节点的形状,圆形、*号、+号、五角星;-、-、:代表线型,分别为虚线、线段、点线

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报