文档库 最新最全的文档下载
当前位置:文档库 › 实验四 MATLAB数值计算

实验四 MATLAB数值计算

实验四 MATLAB数值计算
实验四 MATLAB数值计算

实验四 MATLAB数值计算

一、实验目的

1.掌握数据统计和分析的方法

2.掌握数据插值和曲线拟合的方法

3.掌握求数值导数和数值积分的方法

4.掌握代数方程数值求解的方法

5.掌握常微分方程数值求解的方法

二、实验内容

1.利用matlab提供的rand函数生成30,000个符合均匀分布的随机数,然后检验随机数的性质:

(1)均值和标准方差;

(2)最大元素与最小元素;

(3)大于0.5的随机数个数占总数额百分比。

>> x=rand(1,30000);

Mean=mean(x) %均值

Std=std(x,0,2)%标准方差

MAX=max(x) %最大值

MIN=min(x) %最小值

n=sum(x>0.5);

percentage=n/30000 %大于0.5的随机数个数占总数额百分比

Mean =

0.5023

Std =

0.2886

MAX =

1.0000

MIN =

2.4530e-005

percentage =

0.5063

2.按下表用3次样条方法插值计算0~900范围内整数点的正弦值和0~750范围内整数点的正切值,然后用5次多项式拟合方法计算相同的函数值,并将两种计算结果进行比较。

t1=0:15*pi/180:0.5*pi;

t2=0:15*pi/180:75*pi/180;

Sina=[0,0.2588,0.5,0.7071,0.866,0.9659,1];

Tana=[0,0.2679,0.5774,1,1.732,3.732];

x1=0:pi/180:0.5*pi; %3次样条插值

x2=0:pi/180:5/12*pi;

T1=interp1(t1,Sina,x1,'spline');

T2=interp1(t2,Tana,x2,'spline');

p1=polyfit(t1,Sina,5); %多项式拟合

disp(p1)

L1=polyval(p1,t1);

p2=polyfit(t2,Tana,5);

disp(p2)

L2=polyval(p2,t2);

x=linspace(0,2*pi,100);

subplot(2,1,1);

plot(t1,L1,':o',x1,T1,'-+',x,sin(x));

title('sin(x)');

axis([0,0.5*pi,0,1]);

subplot(2,1,2);

plot(t2,L2,'-*',x2,T2,':.',x,tan(x));

title('tan(x)')

axis([0,5/12*pi,0,4]);

sin(x)、tan(x)的5次多项式拟合的系数为:

0.0054 0.0075 -0.1745 0.0036 0.9994 0.0000 4.3197 -10.2021 9.2877 -3.2591 1.4027 0.0000

3.(1)求函数22()sin cos f x x x =+在点,,,6432

x ππππ

=

的数值导数。 x=pi*[1/6,1/4,1/3,1/2]; DX=pi*[1/6,1/12,1/12,1/6];

y=inline('sin(x).^3+cos(x).^3'); df=diff(y([0,x]))./DX

df =

-0.4306 -0.2575 0.2575 0.4306 (2)用数值方法求积分1

2

ln((1)

1x dx x ++?

g=inline('log(1+x)./(1+x.^2)'); I=quadl(g,0,1)

I =

0.2722

4. 求方程 3sin 0x x x e +-=在0 1.5x =附近的根。 f=inline('3*x+sin(x)-exp(x)'); fzero('fz',1.5) ans =

1.8900

5. 求函数3cos ln ()x

x x x x

f x e

++=在(0,1)内的最小值。 f=inline('(x.^3+cos(x)+x.*log(x))./exp(x)'); [x,fval]=fminbnd(f,0,1)

x =

0.5223 fval =

0.3974

6. 求微分方程的数值解,并绘制解的曲线

1

23

213

3121230.51(0)0,(0)1,(0)1

y y y

y y y y y y y y y ?'=??'=-?

'?=-?

===? 先建立函数文件sys.m

function dy=sys(t,y) dy=zeros(3,1); dy(1)=y(2)*y(3); dy(2)=-y(1)*y(3);

dy(3)=-0.51*y(1)*y(2);

取tf=20,再输入命令: t0=0; tf=20;

[t,y]=ode45('sys',[t0,tf],[0,1,1]); plot(t,y(:,1),t,y(:,2),t,y(:,3))

2

4

6

8

10

12

14

16

18

20

-1-0.8-0.6-0.4-0.200.20.40.60.8

1

三、实验收获与体会

在学习MATLAB前,我们早已学习了多门数学课如数值分析、数学分析、最优化和常微分等,各门课程里都有相关的问题、方程、函数和解决这些的方法,实验四真正地让我们学以致用,解决问题的方法都可以通过MATLAB实现来求解问题。

《应用计算方法教程》matlab作业二

6-1 试验目的计算特征值,实现算法 试验容:随机产生一个10阶整数矩阵,各数均在-5和5之间。 (1) 用MATLAB 函数“eig ”求矩阵全部特征值。 (2) 用幂法求A 的主特征值及对应的特征向量。 (3) 用基本QR 算法求全部特征值(可用MATLAB 函数“qr ”实现矩阵的QR 分解)。 原理 幂法:设矩阵A 的特征值为12n ||>||||λλλ≥???≥并设A 有完全的特征向量系12,,,n χχχ???(它们线性无关),则对任意一个非零向量0n V R ∈所构造的向量序列1k k V AV -=有11()lim ()k j k k j V V λ→∞ -=, 其中()k j V 表示向量的第j 个分量。 为避免逐次迭代向量k V 不为零的分量变得很大(1||1λ>时)或很小(1||1λ<时),将每一步的k V 按其模最大的元素进行归一化。具体过程如下: 选择初始向量0V ,令1max(),,,1k k k k k k k V m V U V AU k m +===≥,当k 充分大时1111,max()max() k k U V χλχ+≈ ≈。 QR 法求全部特征值: 111 11222 111 ,1,2,3,k k k k k A A Q R R Q A Q R k R Q A Q R +++==????==??=???? ??????==?? 由于此题的矩阵是10阶的,上述算法计算时间过长,考虑采用改进算法——移位加速。迭 代格式如下: 1 k k k k k k k k A q I Q R A R Q q I +-=?? =+? 计算k A 右下角的二阶矩阵() () 1,1 1,() (),1 ,k k n n n n k k n n n n a a a a ----?? ? ??? 的特征值()()1,k k n n λλ-,当()()1,k k n n λλ-为实数时,选k q 为()()1,k k n n λλ-中最接近(),k n n a 的。 程序

计算方法_全主元消去法_matlab程序

%求四阶线性方程组的MA TLAB程序 clear Ab=[0.001 2 1 5 1; 3 - 4 0.1 -2 2; 2 -1 2 0.01 3; 1.1 6 2.3 9 4];%增广矩阵 num=[1 2 3 4];%未知量x的对应序号 for i=1:3 A=abs(Ab(i:4,i:4));%系数矩阵取绝对值 [r,c]=find(A==max(A(:))); r=r+i-1;%最大值对应行号 c=c+i-1;%最大值对应列号 q=Ab(r,:),Ab(r,:)=Ab(i,:),Ab(i,:)=q;%行变换 w=Ab(:,c),Ab(:,c)=Ab(:,i),Ab(:,i)=w;%列变换 n=num(i),num(i)=num(c),num(c)=n;%列变换引起未知量x次序变化for j=i:3 Ab(j+1,:)=-Ab(j+1,i)*Ab(i,:)/Ab(i,i)+Ab(j+1,:);%消去过程 end end %最后得到系数矩阵为上三角矩阵 %回代算法求解上三角形方程组 x(4)=Ab(4,5)/Ab(4,4); x(3)=(Ab(3,5)-Ab(3,4)*x(4))/Ab(3,3); x(2)=(Ab(2,5)-Ab(2,3)*x(3)-Ab(2,4)*x(4))/Ab(2,2); x(1)=(Ab(1,5)-Ab(1,2)*x(2)-Ab(1,3)*x(3)-Ab(1,4)*x(4))/Ab(1,1); for s=1:4 fprintf('未知量x%g =%g\n',num(s),x(s)) end %验证如下 %A=[0.001 2 1 5 1; 3 -4 0.1 -2 2;2 -1 2 0.01 3; 1.1 6 2.3 9 4]; %b=[1 2 3 4]'; %x=A\b; %x1= 1.0308 %x2= 0.3144 %x3= 0.6267 %x4= -0.0513

(整理)matlab16常用计算方法.

常用计算方法 1.超越方程的求解 一超越方程为 x (2ln x – 3) -100 = 0 求超越方程的解。 [算法]方法一:用迭代算法。将方程改为 01002ln()3 x x =- 其中x 0是一个初始值,由此计算终值x 。取最大误差为e = 10-4,当| x - x 0| > e 时,就用x 的值换成x 0的值,重新进行计算;否则| x - x 0| < e 为止。 [程序]P1_1abs.m 如下。 %超越方程的迭代算法 clear %清除变量 x0=30; %初始值 xx=[]; %空向量 while 1 %无限循环 x=100/(2*log(x0)-3); %迭代运算 xx=[xx,x]; %连接结果 if length(xx)>1000,break ,end %如果项数太多则退出循环(暗示发散) if abs(x0-x)<1e-4,break ,end %当精度足够高时退出循环 x0=x; %替换初值 end %结束循环 figure %创建图形窗口 plot(xx,'.-','LineWidth',2,'MarkerSize',12)%画迭代线'.-'表示每个点用.来表示,再用线连接 grid on %加网格 fs=16; %字体大小 title('超越方程的迭代折线','fontsize',fs)%标题 xlabel('\itn','fontsize',fs) %x 标签 ylabel('\itx','fontsize',fs) %y 标签 text(length(xx),xx(end),num2str(xx(end)),'fontsize',fs)%显示结果 [图示]用下标作为自变量画迭代的折线。如P0_20_1图所示,当最大误差为10-4时,需要迭代19次才能达到精度,超越方程的解为27.539。 [算法]方法二:用求零函数和求解函数。将方程改为函数 100()2ln()3f x x x =-- MATLAB 求零函数为fzero ,fzero 函数的格式之一是 x = fzero(f,x0) 其中,f 表示求解的函数文件,x0是估计值。fzero 函数的格式之二是 x = fzero(f,[x1,x2])

matlab用于计算方法的源程序

1、Newdon迭代法求解非线性方程 function [x k t]=NewdonToEquation(f,df,x0,eps) %牛顿迭代法解线性方程 %[x k t]=NewdonToEquation(f,df,x0,eps) %x:近似解 %k:迭代次数 %t:运算时间 %f:原函数,定义为内联函数 ?:函数的倒数,定义为内联函数 %x0:初始值 %eps:误差限 % %应用举例: %f=inline('x^3+4*x^2-10'); ?=inline('3*x^2+8*x'); %x=NewdonToEquation(f,df,1,0.5e-6) %[x k]=NewdonToEquation(f,df,1,0.5e-6) %[x k t]=NewdonToEquation(f,df,1,0.5e-6) %函数的最后一个参数也可以不写。默认情况下,eps=0.5e-6 %[x k t]=NewdonToEquation(f,df,1) if nargin==3 eps="0".5e-6; end tic; k=0; while 1 x="x0-f"(x0)./df(x0); k="k"+1; if abs(x-x0) < eps || k >30 break; end x0=x; end t=toc; if k >= 30 disp('迭代次数太多。'); x="0"; t="0"; end

2、Newdon迭代法求解非线性方程组 function y="NewdonF"(x) %牛顿迭代法解非线性方程组的测试函数 %定义是必须定义为列向量 y(1,1)=x(1).^2-10*x(1)+x(2).^2+8; y(2,1)=x(1).*x(2).^2+x(1)-10*x(2)+8; return; function y="NewdonDF"(x) %牛顿迭代法解非线性方程组的测试函数的导数 y(1,1)=2*x(1)-10; y(1,2)=2*x(2); y(2,1)=x(2).^+1; y(2,2)=2*x(1).*x(2)-10; return; 以上两个函数仅供下面程序的测试 function [x k t]=NewdonToEquations(f,df,x0,eps) %牛顿迭代法解非线性方程组 %[x k t]=NewdonToEquations(f,df,x0,eps) %x:近似解 %k:迭代次数 %t:运算时间 %f:方程组(事先定义) ?:方程组的导数(事先定义) %x0:初始值 %eps:误差限 % %说明:由于虚参f和df的类型都是函数,使用前需要事先在当前目录下采用函数M文件定义% 另外在使用此函数求解非线性方程组时,需要在函数名前加符号“@”,如下所示 % %应用举例: %x0=[0,0];eps=0.5e-6; %x=NewdonToEquations(@NewdonF,@NewdonDF,x0,eps) %[x k]=NewdonToEquations(@NewdonF,@NewdonDF,x0,eps) %[x k t]=NewdonToEquations(@NewdonF,@NewdonDF,x0,eps) %函数的最后一个参数也可以不写。默认情况下,eps=0.5e-6 %[x k t]=NewdonToEquations(@NewdonF,@NewdonDF,x0,eps)

计算方法上机实验报告-MATLAB

《计算方法》实验报告 指导教师: 学院: 班级: 团队成员:

一、题目 例2.7应用Newton 迭代法求方程210x x --=在1x =附近的数值解 k x ,并使其满足8110k k x x ---< 原理: 在方程()0f x =解的隔离区间[],a b 上选取合适的迭代初值0x ,过曲线()y f x =的点()() 00x f x ,引切线 ()()()1000:'l y f x f x x x =+- 其与x 轴相交于点:()() 0100 'f x x x f x =-,进一步,过曲线()y f x =的 点()()11x f x , 引切线 ()()()2111: 'l y f x f x x x =+- 其与x 轴相交于点:() () 1211 'f x x x f x =- 如此循环往复,可得一列逼近方程()0f x =精确解*x 的点 01k x x x ,,,,,其一般表达式为: ()() 111 'k k k k f x x x f x ---=- 该公式所表述的求解方法称为Newton 迭代法或切线法。

程序: function y=f(x)%定义原函数 y=x^3-x-1; end function y1=f1(x0)%求导函数在x0点的值 syms x; t=diff(f(x),x); y1=subs(t,x,x0); end function newton_iteration(x0,tol)%输入初始迭代点x0及精度tol x1=x0-f(x0)/f1(x0);k=1;%调用f函数和f1函数 while abs(x1-x0)>=tol x0=x1;x1=x0-f(x0)/f1(x0);k=k+1; end fprintf('满足精度要求的数值为x(%d)=%1.16g\n',k,x1); fprintf('迭代次数为k=%d\n',k); end 结果:

数值计算方法matlab程序

function [x0,k]=bisect1(fun1,a,b,ep) if nargin<4 ep=1e-5; end fa=feval(fun1,a); fb=feval(fun1,b); if fa*fb>0 x0=[fa,fb]; k=0; return; end k=1; while abs(b-a)/2>ep x=(a+b)/2; fx=feval(fun1,x); if fx*fa<0 b=x; fb=fx; else a=x; fa=fx;

end end x0=(a+b)/2; >> fun1=inline('x^3-x-1'); >> [x0,k]=bisect1(fun1,1.3,1.4,1e-4) x0 = 1.3247 k = 7 >> 简单迭代法 function [x0,k]=iterate1(fun1,x0,ep,N) if nargin<4 N=500; end if nargin<3 ep=1e-5; end x=x0; x0=x+2*ep;

while abs(x-x0)>ep & k> fun1=inline('(x+1)^(1/3)'); >> [x0,k]=iterate1(fun1,1.5) x0 = 1.3247 k = 7 >> fun1=inline('x^3-1'); >> [x0,k]=iterate1(fun1,1.5) x0 = Inf k =

计算方法及其MATLAB实现第一章作业

计算方法作业(作者:夏云木子) 1、help linspace type linspace 2、a1=[5 12 47;13 41 2;9 6 71];a2=[12 9;6 15;7 21];B=a1*a2, C=a1(:,1:2).*a2, D=a1.^2,

E=a1(:).^2 3、a1=[5 12 47;13 41 2;9 6 71];a2=[12 9;6 15;7 21];a1(4:5,1:3)=a2.';a1([4 5],:)=a1([5 4],:);b1=a1

c1=b1(4,1),c2=b1(5,3),D=b1(3:4,:)*a2 4、a1=[5 12 47;13 41 2;9 6 71]; E=eye(3,3); S = a1 + 5*a1' - E, S1=a1^3-rot90(a1)^2+6*E 5、a1=[5 12 47;13 41 2;9 6 71];s=5;A=s-a1,B=s*a1,C=s.*a1,D=s./a1,E=a1./s

6、c=[1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16];A=c^-4,B=(c^3)^-1,C=(3*c+5*c^-1)/5

7、a=[1 i 3;9i 2-i 8;7 4 8+i];A=a.' 8、abc=[-2.57 8.87;-0.57 3.2-5.5i];m1=sign(abc),m2=round(abc),m3=floor(abc) Sign为符号函数,round表示四舍五入取整,floor表示舍去小数部分取整

9、x=[1 4 3 2 0 8 10 5]';y=[8 0 0 4 2 1 9 11]';A=dot(x,y) 10、a=[3.82 5.71 9.62];b=[7.31 6.42 2.48];A=dot(a,b),B=cross(a,b) 11、P=[5 7 8 0 1];Pf=poly(P);Px=poly2str(Pf,'x') 12、P=[3 0 9 60 0 -90];K1=polyval(P,45),K2=polyval(P,-123),K3=polyval(P,579) 13、P1=[13 55 0 -17 9];P2=[63 0 26 -85 0 105];PP=conv(P1,P2);P1P2=poly2str(PP,'x'),[Q,r]=deconv(P2,P1)

matlab计算

基本代数部分 如何用matlab求阶乘 factorial(n)求n的阶乘 如何用matlab配方 没有发现matlab有这一命令,不过我们可以调用maple的命令,调用方法如下: 首先加载maple中的student函数库,加载方法为:maple(‘with(student)’) 然后运行maple中的配方命令,格式为: maple(’completesquare(f)’)把f配方,其中f为代数表达式或代数方程maple(’completesquare(f,x)’)把f按指定的变量x配方,其中f同上maple(’completesquare(f,{x,y,...})’)把f按指定的变量x,y,...配方 maple(’completesquare(f,[x,y,...])’)把f按指定的变量x,y,...配方, 如何用matlab进行多项式运算 (1)合并同类项 syms 表达式中包含的变量 collect(表达式,指定的变量) (2)因式分解 syms 表达式中包含的变量factor(表达式) (3)展开

syms 表达式中包含的变量 expand(表达式) (4)化简 syms 表达式中包含的变量simplify(表达式) (5)变量替换 syms 表达式和代换式中包含的所有变量subs(表达式,要替换的变量或式子,代换式)我们也可在matlab中调用maple的命令进行多项式的运算,如下: 如何在matlab中调用maple 方法1: maple(’maplestatement’) 其中maplestatement 是完整的maple语句,由一条或几条命令组成,必须符合maple 的语法 方法2: maple(‘function’,arg1, arg2,…) 其中function为maple中的函数名称,arg1, arg2,…是函数function所用的参数。 如何用matlab进行分式运算 发现matlab只有一条处理分式问题的命令,其使用格式如下: [n,d]=numden(f)把符号表达式f化简为有理形式,其中分子和分母的系数为整数且分子分母不含公约项,返回结果n为分子,d为分母。注意:f必须为符号表达式

用递推公式计算定积分matlab版

用递推公式计算定积分 实验目的: 1.充分理解不稳定的计算方法会造成误差的积累,在计算过程中会导致误差的迅速增加,从而使结果产生较大的误差。 2.在选择数值计算公式来进行近似计算时,应学会选用那些在计算过程中不会导致误差迅速增长的计算公式。 3.理解不稳定的计算公式造成误差积累的来源及具体过程; 4.掌握简单的matlab语言进行数值计算的方法。 实验题目: 对n=0,1,2,…,20,计算定积分: 实验原理: 由于y(n)== – 在计算时有两种迭代方法,如下: 方法一: y(n)=– 5*y(n-1),n=1,2,3, (20) 取y(0)== ln6-ln5 ≈0.182322 方法二: 利用递推公式:y(n-1)=-*y(n),n=20,19, (1) 而且,由= * ≤≤*=

可取:y(20)≈*()≈0.008730. 实验内容: 对算法一,程序代码如下: function [y,n]=funa() syms k n t; t=0.182322; n=0; y=zeros(1,20); y(1)=t; for k=2:20 y(k)=1/k-5*y(k-1); n=n+1; end y(1:6) y(7:11) 对算法二,程序代码如下: %计算定积分; %n--表示迭代次数; %y用来存储结果; function [y,n]=f(); syms k y_20;

y=zeros(21,1); n=1; y_20=(1/105+1/126)/2; y(21)=y_20; for k=21:-1:2 y(k-1)=1/(5*(k-1))-y(k)/5; n=n+1; end 实验结果: 由于计算过程中,前11个数字太小,后9个数字比较大,造成前面几个数字只显示0.0000的现象,所以先输出前6个,再输出7—11个,这样就能全部显示出来了。 算法一结果: [y,n]=funa %先显示一y(1)—y(6) ans = 0.1823 -0.4116 2.3914 -11.7069 58.7346

东南大学计算方法实验报告matlab版

Southeast University 计算方法实验报告 学生院系: 学生姓名: 学生学号:

实验一 一、实验题目:插值法p245 二、程序设计 P245_main.m x=[0.3 0.42 0.5 0.58 0.66 0.72]; y=[1.04403 1.08462 1.11803 1.15603 1.19817 1.23223]; P245(x,y,0.46); P245(x,y,0.55); P245(x,y,0.6); P245.m function newtint( x,y,xhat ) n=length(y); c=y(:); for j=2:n for i=n:-1:j c(i)=(c(i)-c(i-1))/(x(i)-x(i-j+1)); end end yhat=c(n); for i=n-1:-1:1 yhat=yhat*(xhat-x(i))+c(i); end fprintf('N(%f)= %f' ,xhat,yhat) disp('/n' ) end 三、程序运行结果 N(0.460000)= 1.100724/n N(0.550000)= 1.141271/n N(0.600000)= 1.166194/n 2

实验二 一、实验题目:舍入误差与数值稳定性p217_4 二、程序设计 n=input('输入N=\n'); y1=0; y2=0; digits(40); format long; y=0.5*(1.5-1/n-1/(n+1)); for j=2:n y1=y1+1/(j*j-1); end fprintf('%s y1=%g\n','从小到大计算结果',y1); if floor(log10(abs(y1-y)))-log10(abs(y1-y))

MATLAB计算概率

一、实验名称 已知随机向量(X,Y)独立同服从标准正态分布,D= {(x,y)|a

b=input('\n输入值b='); c=input('\n输入值c='); d=input('\n输入值d='); e=input('\n请选择:\n1用二重积分计算语句计算概率:\n2等距网格法计算概率;\n3用分布函数计算概率;\n4蒙特卡罗法计算概率.\n5三维图像在D上表示f(x,y)\n'); while e>0&&e<6 if e==1 p=erchong(a,b,c,d) end if e==2 p=wangge(a,b,c,d); end if e==3 p=fenbu(a,b,c,d); end if e==4 p=mente(a,b,c,d); end if e==5 [X,Y]=meshgrid(-3:0.2:3); Z=1/(2*pi)*exp(-1/2*(X.^2+Y.^2)); meshz(X,Y,Z); end e=input('请选择: \n'); end % ===============================用二重积分计算 function p=erchong(a,b,c,d) syms x y; f0=1/(2*pi)*exp(-1/2*(x^2+y^2)); f1=int(f0,x,a,b); %对x积分 f1=int(f1,y,c,d); %对y积分 p=vpa(f1,9); % ================================等距网格法 function p=wangge(a,b,c,d)

MATLAB数学建模6常用计算方法

常用计算方法 1.超越方程的求解 一超越方程为 x (2ln x –3)-100=0 求超越方程的解。[算法]方法一:用迭代算法。将方程改为 0100 2ln()3 x x =-其中x 0是一个初始值,由此计算终值x 。取最大误差为e =10-4,当|x -x 0|>e 时,就用x 的值换成x 0的值,重新进行计算;否则|x -x 0|1000,break ,end %如果项数太多则退出循环 if abs(x0-x)<1e-4,break ,end %当精度足够高时退出循环 x0=x;%替换初值 end %结束循环 figure %创建图形窗口 plot(xx,'.-','LineWidth',2,'MarkerSize',12)%画迭代线 grid on %加网格 fs=16;%字体大小 title('超越方程的迭代折线','FontSize',fs)%标题 xlabel('\itn','FontSize',fs)%x标签 ylabel('\itx','FontSize',fs)%y标签 text(length(xx),xx(end),num2str(xx(end)),'FontSize',fs)%显示结果 [图示]用下标作为自变量画迭代的折线。如P0_20_1图所示,当最大误差为10-4时,需要迭代19次才能达到精度,超越方程的解为27.539。[算法]方法二:用求零函数和求解函数。将方程改为函数 100 ()2ln()3f x x x =--MATLAB 求零函数为fzero ,fzero 函数的格式之一是 x =fzero(f,x0) 其中,f 表示求解的函数文件,x0是估计值。fzero 函数的格式之二是 x =fzero(f,[x1,x2]) 其中,x1和x2表示零点的范围。

王能超 计算方法——算法设计及MATLAB实现课后代码资料

第一章插值方法 1.1Lagrange插值 1.2逐步插值 1.3分段三次Hermite插值 1.4分段三次样条插值 第二章数值积分 2.1 Simpson公式 2.2 变步长梯形法 2.3 Romberg加速算法 2.4 三点Gauss公式 第三章常微分方程德差分方法 3.1 改进的Euler方法 3.2 四阶Runge-Kutta方法 3.3 二阶Adams预报校正系统 3.4 改进的四阶Adams预报校正系统 第四章方程求根 4.1 二分法 4.2 开方法 4.3 Newton下山法 4.4 快速弦截法 第五章线性方程组的迭代法 5.1 Jacobi迭代 5.2 Gauss-Seidel迭代 5.3 超松弛迭代 5.4 对称超松弛迭代 第六章线性方程组的直接法 6.1 追赶法 6.2 Cholesky方法 6.3 矩阵分解方法 6.4 Gauss列主元消去法

第一章插值方法 1.1Lagrange插值 计算Lagrange插值多项式在x=x0处的值. MATLAB文件:(文件名:Lagrange_eval.m)function [y0,N]= Lagrange_eval(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 用法》X=[…];Y=[…]; 》x0= ; 》[y0,N]= Lagrange_eval(X,Y,x0) 1.2逐步插值 计算逐步插值多项式在x=x0处的值. MATLAB文件:(文件名:Neville_eval.m)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;

王能超-计算方法——算法设计及MATLAB实现课后代码

【 第一章插值方法 1.1Lagrange插值 1.2逐步插值 1.3分段三次Hermite插值 1.4分段三次样条插值 第二章数值积分 Simpson公式 , 变步长梯形法 Romberg加速算法 三点Gauss公式 第三章常微分方程德差分方法改进的Euler方法 四阶Runge-Kutta方法 二阶Adams预报校正系统 { 改进的四阶Adams预报校正系统 第四章方程求根 二分法 开方法 Newton下山法 快速弦截法 - 第五章线性方程组的迭代法 Jacobi迭代 Gauss-Seidel迭代 超松弛迭代 对称超松弛迭代 第六章线性方程组的直接法 追赶法 · Cholesky方法 矩阵分解方法 6.4 Gauss列主元消去法

第一章插值方法 1.1 Lagrange插值 计算Lagrange插值多项式在x=x0处的值. MATLAB文件:(文件名:) $ function [y0,N]= Lagrange_eval(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 用法》X=[…];Y=[…]; 》x0= ; 》[y0,N]= Lagrange_eval(X,Y,x0) 1.2逐步插值 / 计算逐步插值多项式在x=x0处的值. MATLAB文件:(文件名:) 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;

相关文档