matlab用于计算方法的源程序(3)

2019-04-23 19:00

8、主元素的Guass消去法求解线性方程组

function x=\%主元素的Guass消去法求解线性方程组Ax=b %x=EqtsClmnPrimElemGuass(A,b) %x:解向量,列向量 %A:线性方程组的矩阵 %b:列向量 %

%应用举例:

%A=[-0.002 2 2;1 0.78125 0;3.996 5.5625 4]; %b=[0.4;1.3816;7.4178];

%x=EqtsClmnPrimElemGuass(A,b)

%检查输入参数

if size(A,1) ~= size(b,1) disp('输入参数有误!'); x=' '; return; end %(A|b) A=[A b];

%消去过程 n=size(A,1); l=zeros(n); for k=\ %换行

[a idx1]=max(abs(A(k:n,k)));%寻找绝对值最大的元素的下标 [b idx2]=min(abs(A(k:n,k)));%寻找绝对值最小的元素的下标 idx1=idx1+k-1; idx2=idx2+k-1; for j=\ c=A(idx1,j); A(idx1,j)=A(idx2,j); A(idx2,j)=c; end

for i=\

l(i,k)=A(i,k)/A(k,k); end

for i=\ for j=\

A(i,j)=A(i,j)-l(i,k)*A(k,j); end for j=\ A(i,j)=0; end end end

%回代过程 x=zeros(n,1);

x(n)=A(n,n+1)/A(n,n); for i=\ y=\ for j=\ y=y+A(i,j)*x(j); end

x(i)=(A(i,n+1)-y)/A(i,i); end return;

9、Euler法求解常微分方程

function outXY=\%简单欧拉法求解常微分方程dy/dx=f %outXY=ODEEuler(f,x0,y0,h,PointNum)

%outXY:所取点的横纵坐标。第一列为横坐标,第二列为纵坐标 %f:函数f(x,y),可利用脚本函数文件事先定义,也可利用内联函数 %x0:初始值的横坐标 %y0:初始值的纵坐标 %h:步长

%PointNum:计算步数,默认为30 %

%应用举例:

%f=inline('y-2*x/y','x','y'); %out=ODEEuler(f,0,1,0.1,10)

if nargin==4 PointNum=\end

outXY=zeros(PointNum+1,2);%初始化

outXY(1,1)=x0; outXY(1,2)=y0; for i=\

outXY(i+1,2)=outXY(i,2)+h*f(outXY(i,1),outXY(i,2));%简单Euler公式 outXY(i+1,1)=outXY(i,1)+h; end

10、二分法解非线性方程

function [x k t]=DichotomyToEquation(f,a,b,eps) %使用二分法解非线性方程

%[x k t]=DichotomyToEquation(f,a,b,eps) %x:近似解 %k:二分次数 %t:运算时间

%f:函数,定义为内联函数 %a,b:区间端点 %eps:误差限 %

%应用举例:

%f=inline('x^3+4*x^2-10');

%x=DichotomyToEquation(f,1,2,0.5e-6) %[x k]=DichotomyToEquation(f,1,2,0.5e-6) %[x k t]=DichotomyToEquation(f,1,2,0.5e-6)

%函数的最后一个参数也可以不写,默认情况下,eps=0.5e-6 %[x k t]=DichotomyToEquation(f,1,2)

if nargin==3 eps=\end tic;

if f(a)*f(b) > 0

disp('区间太大或在此区间内无零点。'); else

k=\记录二分次数

while 1 x=(b+a)/2; k=k+1;

if abs(x-a) < eps || k > 30 break; end

if f(a)*f(x) < 0 b=\ else a=\ end end t=\ x=(b+a)/2;

if k >= 30

disp('迭代次数太多。'); x=0; t=0; end end

11、弦割法求解非线性方程

function [x k t]=ChordsecantToEquation(f,x0,x1,eps) %弦割法求解非线性方程

%[x k t]=ChordsecantToEquation(f,x0,x1,eps) %x:近似解 %k:迭代次数 %t:运算时间

%f:原函数,定义为内联函数 %x0,x1:初始值 %eps:误差限 %

%应用举例:

%f=inline('x^3+4*x^2-10');

%x=ChordsecantToEquation(f,1,2,0.5e-6) %[x k]=ChordsecantToEquation(f,1,2,0.5e-6) %[x k t]=ChordsecantToEquation(f,1,2,0.5e-6)

%函数的最后一个参数也可以不写,默认情况下,eps=0.5e-6 %[x k t]=ChordsecantToEquation(f,1,2)

if nargin==3 eps=\end tic; k=0; while 1

x=\ k=\

if abs(x-x1) < eps || k > 30 break; end x0=x1; x1=x; end t=toc;

if k >= 30

disp('迭代次数太多。'); x=\ t=\end

12、阻尼Newdon法求解非线性方程组 function y=\%带阻尼因子的牛顿迭代法测试方程组 y(1,1)=x(1)^2-10*x(1)+x(2)^2+23; y(2,1)=x(1)*x(2)^2+x(1)-10*x(2)+2; return;

function y=\

%带阻尼因子的牛顿迭代法测试,方程组的Jacobi矩阵 y(1,1)=2*x(1)-10; y(1,2)=2*x(2); y(2,1)=x(2)^2+1; y(2,2)=2*x(1)*x(2)-10; return;


matlab用于计算方法的源程序(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:古诗文大赛试卷

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: