《matlab数值计算程序(matlab源代码)资料》由会员分享,可在线阅读,更多相关《matlab数值计算程序(matlab源代码)资料(93页珍藏版)》请在金锄头文库上搜索。
1、 MATLAB/Simulink/C+等编程援助,请访问我的博客 MATLAB/Simulink/C+等编程援助,请访问我的博客 编程博客: 我的QQ、Email、MSN等,点击联系方式,即可查看 我的QQ、Email、MSN等,点击联系方式,即可查看 联系方式: 有编程问题的朋友,请直接联系我。如果我QQ/MSN不在线, 有编程问题的朋友,请直接联系我。如果我QQ/MSN不在线,请将问题请将问题 直接发到我的邮箱直接发到我的邮箱,或者在我的博客留言,第一时间答复! 非常荣幸能够成为大家的 ,或者在我的博客留言,第一时间答复! 非常荣幸能够成为大家的QQ好友QQ好友,博客内容不断更新中,欢迎大
2、家持 续访问! ,博客内容不断更新中,欢迎大家持 续访问! 声明:声明:本资料整理于网络,仅限交流使用,切勿用做商业用途!本资料整理于网络,仅限交流使用,切勿用做商业用途! 浙江工业大学化材学院 jackdong A 目 录 第一章 插值方法1 1.1. Lagrange插值 .1 1.2. Lagrange 插值多项式2 1.3. Newton多项式3 1.4. 切比雪夫逼近.4 1.5. 逐步插值.5 1.6. 分段三次Hermite插值6 1.7. 分段三次样条插值.7 第二章 数值积分10 2.1. 复化Simpson公式.10 2.2. 变步长梯形法.12 2.3. Romberg加
3、速法14 2.4. 三点Gauss公式.16 第三章 常微分方程的差分解法17 3.1. 改进的Euler方法17 3.2. Heun方法18 3.3. 四次Taylor方法19 3.4. 四阶Runge-Kutta法19 3.5. Runge-Kutta-Fehlbrg法21 3.6. 二阶Adams预报校正系统 .24 3.7. 改进的四阶Adams预报校正系统 .25 3.8. Milne-Simpson方法27 3.9. Hamming方法.29 3.10. 微分方程组四阶Runge-Kutta解法30 3.11. 线性打靶法.31 3.12. 求解三对方程组的程序.32 3.13.
4、有限差分法.33 附:三阶、四阶、五阶Rungkuta法.35 第四章 方程求根40 4.1. 二分法.40 4.2. 开方法.41 4.3. Newton 下山法42 4.4. 快速弦截法.43 4.5. 不动点迭代法.44 4.6. 试值法或试位法.45 4.7. Steffensen加速法46 4.8. Muller法48 浙江工业大学化材学院 jackdong B 第五章 线性方程组的迭代法51 5.1. Jacobi迭代法 .51 5.2. Gauss-Seidel迭代 .53 5.3. 非线性Seidel迭代.56 5.4. 牛顿-拉夫森法 .57 5.5. 超松弛迭代.59 5.
5、6. 对超松弛迭代.60 第六章 线性方程组的直接法63 6.1. 追赶法.63 6.2. Cholesky方法.64 6.3. 矩阵分解方法.66 6.4. 消去法.69 第七章 数值优化71 7.1. 黄金分割法求极小值.71 7.2. 斐波那契法求极小值.73 7.3. 用 2 次插值求局部最小值.76 7.4. 内德-米德法求最小值 .81 7.5. 最速下降法或梯度法.86 浙江工业大学化材学院 jackdong 1 第一章第一章 插值方法插值方法 1.1. Lagrange 插值插值 功能:计算多项式在 x=x0 处的值 - function y0,N=Lagrange_eval(
6、X,Y,x0) % X,Y :已知的插值点坐标 % x0 :插值点 % y0 :Lagrange 插值多项式在 x0 处的值 % N :Lagrange 插值函数的权系数 m=length(X) N=zeros(m,1) y0=0; for i=1:m N(i)=1; for j=1:m if j=i N(i)=N(i)*(x0-X(j)/(X(i)-X(j); end end y0=y0+Y(i)*N(i); end - 浙江工业大学化材学院 jackdong 2 1.2. Lagrange 插值多项式插值多项式 功能:求基于 N+1 个点的拉格朗日多项式 - function C,L=la
7、gran(X,Y) % input - X is a vector that contains a list of abscissas % - Y is a vector that contains a list of ordinates % output - C is a matrix that contains the coefficients of the lagrange interpolatory polynomial - L is a matrix that contains the lagrange coefficients polynomial w=length(X); n=w
8、-1; L=zeros(w,w); for k=1:n+1 V=1; for j=1:n+1 if k=j V=conv(V,poly(X(j)/(X(k)-X(j); end end L(k,:)=V; end C=Y*L; - 浙江工业大学化材学院 jackdong 3 1.3. Newton 多项式多项式 功能:构造和计算通过(xk,yk)=(xk,f(xk),k=0N 的次数小于等于 N 的牛顿多项式 - function C,D=newpoly(X,Y) % input - X is a vector that contains a list of abscissas % - Y i
9、s a vector that contains a list of ordinates % output - C is a matrix that contains the coefficients of the newton interpolatory polynomial - D is the divided-difference table n=length(X); D=zeros(n,n); D(:,1)=Y; for j=2:n for k=j:n D(k,j)=(D(k,j-1)-D(k-1,j-1)/(X(k)-X(k-j-1); end end C=D(n,n); for k
10、=(n-1):-1:1 C=conv(c,poly(X(k); m=length(C); C(m)=C(m)+D(k.k); end - 浙江工业大学化材学院 jackdong 4 1.4. 切比雪夫逼近切比雪夫逼近 功能:构造并计算-1,1上的 N 次切比雪夫多项式 - function C,X,Y=cheby(fun,n,a,b) % input - fun is the string function to be approximated % -a and b are the left and right endpoints % - n is the degree of the cheb
11、yshev interpolating polynomial % output - C is the coefficient list for the polynomial - X contains the abscissas - Y contains the ordinates if nargin =2,a=1;b=1;end d=pi/(2*n+2); C=zeros(1,n+1); for k=1:n+1 X(k)=cos(2*k-1)*d); end X=(b-a)*X/2+(a+b)/2; x=X; Y=eval(fun); for k=1:n+1 z=(2*k-1)*d; for
12、j=1:n+1 C(j)=C(j)+Y(k)*cos(j-1)*z); 浙江工业大学化材学院 jackdong 5 end end C=2*C/(n+1); C(1)=C(1)/2; - 1.5. 逐步插值逐步插值 功能:计算逐步插值多项式在 x0 处的值 - function y0=neville_eval(X,Y,x0) % X,Y :已知的插值点坐标 % x0 :插值点 % y0 :neville 逐步插值多项式在 x0 处的值 m=length(X) P=zeros(m,1) P1=zeros(m,1) P=Y; for i=1:m P1=P; k=1; for j=i+1:m k=k+1; P(j)=P(j-1)+(P1(j)-P1(j-1)*(x0-X(k-1)/(X(j)-X(k-1); 浙江工业大学化材学院 jackdong 6 end if abs(P(m)-P(m-1)=X(i) break; end end a1=x0-X(k+1); 浙江工业大学化材学院 jackdong 7 a2=x0-X(k); a3=X(k)-X(k+1); y0=(a1/a3)2*(1-2*a2/a3)*Y(k)+(-a2/a3)2*(1+2*a1/a3)*Y(k+1)+(a1/a3)2*a2*DY(k)+(-a2/a3) 2*a1*DY(k+1); -