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

合集下载

matlab入门

matlab入门

MATLAB入门教程1.MA TLAB的基本知识1-1、基本运算与函数在MA TLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter 键即可。

例如:>> (5*2+1.3-0.8)*10/25ans =4.2000MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answer)并显示其数值於萤幕上。

小提示:">>"是MA TLAB的提示符号(Prompt),但在PC中文视窗系统下,由於编码方式不同,此提示符号常会消失不见,但这并不会影响到MATLAB的运算结果。

我们也可将上述运算式的结果设定给另一个变数x:x = (5*2+1.3-0.8)*10^2/25x = 42此时MATLAB会直接显示x的值。

由上例可知,MATLAB认识所有一般常用到的加(+)、减(-)、乘(*)、除(/)的数学运算符号,以及幂次运算(^)。

小提示:MA TLAB将所有变数均存成double的形式,所以不需经过变数宣告(Variable declaration)。

MA TLAB同时也会自动进行记忆体的使用和回收,而不必像C语言,必须由使用者一一指定.这些功能使的MA TLAB易学易用,使用者可专心致力於撰写程式,而不必被软体枝节问题所干扰。

若不想让MATLAB每次都显示运算结果,只需在运算式最後加上分号(;)即可,如下例:y = sin(10)*exp(-0.3*4^2);若要显示变数y的值,直接键入y即可:>>yy =-0.0045在上例中,sin是正弦函数,exp是指数函数,这些都是MA TLAB常用到的数学函数。

下表即为MATLAB常用的基本数学函数及三角函数:小整理:MATLAB常用的基本数学函数abs(x):纯量的绝对值或向量的长度angle(z):复数z的相角(Phase angle)sqrt(x):开平方real(z):复数z的实部imag(z):复数z的虚部conj(z):复数z的共轭复数round(x):四舍五入至最近整数fix(x):无论正负,舍去小数至最近整数floor(x):地板函数,即舍去正小数至最近整数ceil(x):天花板函数,即加入正小数至最近整数rat(x):将实数x化为分数表示rats(x):将实数x化为多项分数展开sign(x):符号函数(Signum function)。

Matlab中常用的数值计算方法

Matlab中常用的数值计算方法

Matlab中常用的数值计算方法数值计算是现代科学和工程领域中的一个重要问题。

Matlab是一种用于数值计算和科学计算的高级编程语言和环境,具有强大的数值计算功能。

本文将介绍Matlab中常用的数值计算方法,包括数值积分、数值解微分方程、非线性方程求解和线性方程组求解等。

一、数值积分数值积分是通过数值方法来近似计算函数的定积分。

在Matlab中,常用的数值积分函数是'quad'和'quadl'。

'quad'函数可以用于计算定积分,而'quadl'函数可以用于计算无穷积分。

下面是一个使用'quad'函数计算定积分的例子。

假设我们想计算函数f(x) = x^2在区间[0, 1]上的定积分。

我们可以使用如下的Matlab代码:```f = @(x) x^2;integral = quad(f, 0, 1);disp(integral);```运行这段代码后,我们可以得到定积分的近似值,即1/3。

二、数值解微分方程微分方程是描述自然界各种变化规律的数学方程。

在科学研究和工程应用中,常常需要求解微分方程的数值解。

在Matlab中,可以使用'ode45'函数来求解常微分方程的数值解。

'ode45'函数是采用基于Runge-Kutta方法的一种数值解法。

下面是一个使用'ode45'函数求解常微分方程的例子。

假设我们想求解一阶常微分方程dy/dx = 2*x,初始条件为y(0) = 1。

我们可以使用如下的Matlab代码:```fun = @(x, y) 2*x;[x, y] = ode45(fun, [0, 1], 1);plot(x, y);```运行这段代码后,我们可以得到微分方程的数值解,并绘制其图像。

三、非线性方程求解非线性方程是指方程中包含非线性项的方程。

在很多实际问题中,我们需要求解非线性方程的根。

MATLAB中的数学计算方法详解

MATLAB中的数学计算方法详解

MATLAB中的数学计算方法详解在科学研究和工程领域中,数学计算方法的应用是不可避免的。

MATLAB作为一种强大的数学工具,提供了丰富的数学函数和算法,为用户提供了便捷的数学计算方式。

本文将详细介绍MATLAB中常用的数学计算方法,包括数值计算、符号计算以及优化算法等。

一、数值计算方法数值计算是MATLAB中应用最广泛的数学计算方法之一。

它通过将数值代入数学模型,利用数值逼近的方式求得近似解。

MATLAB提供了各种数值计算函数,如插值、积分、微分等。

下面我们将介绍其中几种常用的数值计算方法。

1. 插值方法插值是一种通过已知数据点来估计未知数据点的方法。

在MATLAB中,可以使用interp1函数实现一维数据的插值。

该函数支持多种插值方法,例如线性插值、样条插值等。

用户只需提供已知的数据点和插值点,即可得到插值结果。

2. 数值积分方法数值积分是计算定积分近似值的方法。

在MATLAB中,可以使用quad函数来进行一维定积分计算。

该函数采用自适应的数值积分算法,能够适应不同类型的函数。

用户只需提供被积函数和积分区间,即可得到积分结果。

3. 数值微分方法数值微分是计算函数导数的方法。

在MATLAB中,可以使用diff函数对函数进行数值微分。

该函数可以计算一阶和二阶导数,还支持多点数值微分和符号数值微分。

通过数值微分,可以方便地求得函数在给定点的导数近似值。

二、符号计算方法符号计算是指在计算过程中处理符号表达式而不是数值。

MATLAB的Symbolic Math Toolbox提供了强大的符号计算功能,可以进行代数操作、求解方程、求导、积分等。

下面我们将介绍几种常用的符号计算方法。

1. 代数操作在MATLAB中,可以使用符号计算功能进行代数操作,如多项式求解、多项式展开、多项式化简等。

通过定义符号变量和符号表达式,可以进行各种代数计算,方便用户进行复杂的代数操作。

2. 方程求解MATLAB的符号计算工具箱提供了solve函数用于求解方程。

matlab数值计算方法

matlab数值计算方法

Matlab提供了多种数值计算方法,以下是其中一些常用的方法:
1. 整数计算:Matlab中的计算方式和计算器类似,可以直接输入数值然后加上运算符进行运算。

2. 小数计算:小数计算的方式和整数相似。

3. 分数计算:Matlab可以切换至分数模式,这一点较计算器等具有较大优势。

4. 赋值运算:Matlab中除了和计算器一样直接运算,还能进行赋值运算,直接将其中一个值赋值后,带入运算即可。

5. 多重赋值运算:Matlab在数值计算的时候,还支持多重赋值计算。

这样可以很方便的求解列出的问题。

以上内容仅供参考,建议查阅Matlab官方文档获取更全面和准确的信息。

matlab牛顿迭代法求方程

matlab牛顿迭代法求方程

一、引言在数值计算中,求解非线性方程是一项常见的任务。

牛顿迭代法是一种常用且有效的方法,它通过不断逼近函数的零点来求解方程。

而在MATLAB中,我们可以利用其强大的数值计算功能来实现牛顿迭代法,快速求解各种非线性方程。

二、牛顿迭代法原理与公式推导1. 牛顿迭代法原理牛顿迭代法是一种利用函数的导数信息不断逼近零点的方法。

其核心思想是利用当前点的切线与x轴的交点来更新下一次迭代的值,直至逼近方程的根。

2. 公式推导与迭代过程假设要求解方程f(x)=0,在初始值x0附近进行迭代。

根据泰勒展开,对f(x)进行一阶泰勒展开可得:f(x) ≈ f(x0) + f'(x0)(x - x0)令f(x)≈0,则有:x = x0 - f(x0)/f'(x0)将x带入f(x)的表达式中,即得到下一次迭代的值x1:x1 = x0 - f(x0)/f'(x0)重复以上过程,直至达到精度要求或者迭代次数上限。

三、MATLAB中的牛顿迭代法实现1. 编写函数在MATLAB中,我们可以编写一个函数来实现牛顿迭代法。

需要定义原方程f(x)的表达式,然后计算其一阶导数f'(x)的表达式。

按照上述推导的迭代公式,编写循环语句进行迭代计算,直至满足精度要求或者达到最大迭代次数。

2. 调用函数求解方程在编写好牛顿迭代法的函数之后,可以通过在MATLAB命令窗口中调用该函数来求解具体的方程。

传入初始值、精度要求和最大迭代次数等参数,即可得到方程的近似根。

四、牛顿迭代法在工程实践中的应用1. 求解非线性方程在工程领域,很多问题都可以转化为非线性方程的求解问题,比如电路分析、控制系统设计等。

利用牛顿迭代法可以高效地求解这些复杂方程,为工程实践提供了重要的数值计算手段。

2. 优化问题的求解除了求解非线性方程外,牛顿迭代法还可以应用于优化问题的求解。

通过求解目标函数的导数等于0的方程,可以找到函数的极值点,从而解决各种优化问题。

(整理)Matlab积分.

(整理)Matlab积分.

一.数值积分的实现方法1.变步长辛普生法基于变步长辛普生法,MA TLAB给出了quad函数来求定积分。

该函数的调用格式为:[I,n]=quad('fname',a,b,tol,trace)其中fname是被积函数名。

a和b分别是定积分的下限和上限。

tol用来控制积分精度,缺省时取tol=0.001。

trace控制是否展现积分过程,若取非0则展现积分过程,取0则不展现,缺省时取trace=0。

返回参数I即定积分值,n为被积函数的调用次数。

例8-1 求定积分。

(1) 建立被积函数文件fesin.m。

function f=fesin(x)f=exp(-0.5*x).*sin(x+pi/6);(2) 调用数值积分函数quad求定积分。

[S,n]=quad('fesin',0,3*pi)S = 0.9008n = 772.牛顿-柯特斯法基于牛顿-柯特斯法,MA TLAB给出了quad8函数来求定积分。

该函数的调用格式为:[I,n]=quad8('fname',a,b,tol,trace)其中参数的含义和quad函数相似,只是tol的缺省值取10-6。

•该函数可以更精确地求出定积分的值,且一般情况下函数调用的步数明显小于quad函数,从而保证能以更高的效率求出所需的定积分值。

(1) 被积函数文件fx.m。

function f=fx(x)f=x.*sin(x)./(1+cos(x).*cos(x));(2) 调用函数quad8求定积分。

I=quad8('fx',0,pi)I = 2.4674分别用quad函数和quad8函数求定积分的近似值,并在相同的积分精度下,比较函数的调用次数。

调用函数quad求定积分:format long;fx=inline('exp(-x)');[I,n]=quad(fx,1,2.5,1e-10)I = 0.28579444254766n = 65调用函数quad8求定积分:format long;fx=inline('exp(-x)');[I,n]=quad8(fx,1,2.5,1e-10)I = 0.28579444254754n = 333.被积函数由一个表格定义在MATLAB中,对由表格形式定义的函数关系的求定积分问题用trapz(X,Y)函数。

数值计算方法matlab程序

数值计算方法matlab程序

数值计算方法matlab程序嘿,朋友们!今天咱就来聊聊数值计算方法和那厉害的 Matlab 程序呀!你说数值计算方法像不像一个神奇的魔法盒子呀,里面装满了各种奇妙的技巧和算法。

它能帮我们解决好多好多复杂的数学问题呢!不管是求解方程,还是处理数据,它都能大显身手。

而 Matlab 程序呢,就像是这个魔法盒子的钥匙!有了它,我们就能轻松地打开这个盒子,尽情地利用里面的宝贝。

你想想看呀,当我们面对那些让人头疼的数学式子,自己手动去算得算到啥时候呀。

但有了 Matlab,那可就不一样啦!它能快速又准确地给出结果,就像有个超级聪明的小助手在帮我们干活。

比如说,我们要算一个很复杂的函数的积分。

要是自己去慢慢算,可能头发都要掉光啦!可 Matlab 呢,几下子就给我们搞定了,这多厉害呀!它还能绘制各种漂亮的图形呢!我们可以用它把那些抽象的数据变成直观的图像,一下子就能看出数据的规律和特点。

这就好比把一堆乱麻整理得清清楚楚,明明白白。

而且呀,Matlab 学起来也不难哦!只要我们用心去学,多练习练习,很快就能掌握它的基本用法啦。

到时候呀,我们就可以像个小魔法师一样,轻松地运用数值计算方法和 Matlab 程序解决各种难题。

咱再说说它的实用性吧。

在很多领域,比如工程、科学研究、金融等等,都离不开数值计算方法和 Matlab 呀。

工程师们用它来设计新产品,科学家们用它来分析实验数据,金融分析师们用它来预测市场趋势。

这可不是一般的厉害呀!你难道不想拥有这样一个强大的工具吗?让它帮你在学习和工作中更加得心应手。

总之呢,数值计算方法和 Matlab 程序就像是一对好搭档,它们能让我们的数学之旅变得轻松又有趣。

别再犹豫啦,赶紧去探索这个神奇的世界吧!相信你一定会爱上它们的!怎么样,还不赶紧去试试?。

第四章_MATLAB的数值计算功能

第四章_MATLAB的数值计算功能

第四章MATLAB 的数值计算功能Chapter 4: Numerical computation of MATLAB数值计算是MATLAB最基本、最重要的功能,是MATLAB最具代表性的特点。

MATLAB在数值计算过程中以数组和矩阵为基础。

数组是MATLAB运算中的重要数据组织形式。

前面章节对数组、矩阵的特征及其创建与基本运算规则等相关知识已作了较详尽的介绍,本章重点介绍常用的数值计算方法。

一、多项式(Polynomial)`多项式在众多学科的计算中具有重要的作用,许多方程和定理都是多项式的形式。

MATLAB提供了标准多项式运算的函数,如多项式的求根、求值和微分,还提供了一些用于更高级运算的函数,如曲线拟合和多项式展开等。

1.多项式的表达与创建(Expression and Creating of polynomial)(1) 多项式的表达(expression of polynomial)_Matlab用行矢量表达多项式系数(Coefficient)和根,系数矢量中各元素按变量的降幂顺序排列,如多项式为:P(x)=a0x n+a1x n-1+a2x n-2…a n-1x+a n则其系数矢量(V ector of coefficient)为:P=[a0 a1… a n-1 a n]如将根矢量(V ector of root)表示为:ar=[ ar1 ar2… ar n]则根矢量与系数矢量之间关系为:(x-ar1)(x- ar2) … (x- ar n)= a0x n+a1x n-1+a2x n-2…a n-1x+a n(2)多项式的创建(polynomial creating)a,系数矢量的直接输入法利用poly2sym函数直接输入多项式的系数矢量,就可方便的建立符号形式的多项式。

例1:创建给定的多项式x3-4x2+3x+2poly2sym([1 -4 3 2])ans =x^3-4*x^2+3*x+2也可以用poly2str.求一个方阵对应的符号形式的多项式。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

常用计算方法1.超越方程的求解一超越方程为x (2ln x – 3) -100 = 0求超越方程的解。

[算法]方法一:用迭代算法。

将方程改为01002ln()3x 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])其中,x1和x2表示零点的范围。

另外MATLAB还有求解函数solve,计算非线性方程和方程组的符号解。

[程序]P1_2fzero.m如下。

%超越方程的求法clear %清除变量x=10:0.1:100; %自变量向量f=inline('2*log(x)-3-100./x') %定义内线函数用的是字符窜figure %创建图形窗口plot(x,f(x),'LineWidth',2) %画曲线grid on%加网格x0=fzero(f,[20,30]); %求方程的零点%x0=fzero(f,20); %求方程的零点hold on%保持图像plot(x0,f(x0),'.') %画零点title('超越方程的解','fontsize',16) %标题xlabel('\itx','fontsize',16) %x标签ylabel('\itf','fontsize',16) %y标签text(x0,0,num2str(x0),'fontsize',16) %标记零点x0=solve('2*log(x)-3-100./x') %求超越方程的符号解plot(double(x0),0,'o') %再画零点(double是把字符转化成数字)P1_1图 P1_2图2.导数的计算正弦函数y= sin x的导数是余弦函数y'= cos x,余弦函数的导数是负的正弦函数,用MATLAB的数值导数和符号导数求正弦函数的一阶和二阶导数,并与其解析解进行比较。

[程序]P2diff.m如下。

%正弦函数导数的计算方法clear %清除变量dx=0.01*2*pi; %间隔x=0:dx:2*pi; %自变量向量y=sin(x); %原函数f1=diff(y)/dx; %通过差分求导数f1=[f1(1),(f1(1:end-1)+f1(2:end))/2,f1(end)];%求平均值figure %创建图形窗口plot(x,cos(x),x,f1,'.') %画一阶导数和数值差分曲线%plot(x,cos(x),x(1:end-1),f1,'.') %数值导数(点)偏左%plot(x,cos(x),x(2:end),f1,'.') %数值导数(点)偏右syms sx %定义符号变量y=sin(sx); %建立符号函数dy_dx=diff(y); %求符号导数df1=subs(dy_dx,sx,x); %符号替换数值hold on %保持图像plot(x,df1,'ro') %画符号导数曲线grid on %加网格legend('解析导数','数值差分','符号导数',4)%图例title('正弦函数的一阶导数','FontSize',16)%加标题f2=diff(f1)/dx; %通过差分求导数f2=[f2(1),(f2(1:end-1)+f2(2:end))/2,f2(end)];%求平均值d2y_dx2=diff(y,2); %求二阶符号导数df2=subs(d2y_dx2,sx,x); %符号替换数值figure %创建图形窗口plot(x,-sin(x),x,f2,'.',x,df2,'o') %画二阶导数和差分以及符号导数曲线grid on %加网格legend('解析导数','数值差分','符号导数',4)%图例title('正弦函数的二阶导数','FontSize',16)%加标题[图示](1)如P2a 图所示,正弦函数的一阶导数的数值解(点)与解析解(线)符合得很好。

(2)如P2b 图所示,正弦函数的二阶导数的数值解(点)和符号解(圈)与解析解(线)符合得很好,不过二阶数值导数在端点与精确值有一点偏离。

P2a 图 P2b 图3.积分的计算求证:函数y = e ax sin bx 的积分为221e (sin cos )ax S a bx b bx C a b=-++ 其中a = -0.5,b = 2。

积分下限为0。

上限为x ,画出定积分的函数曲线。

[证明]利用分部积分得11e sin d sin de {e sin e cos d }ax ax ax ax S bx x bx bx b bx x a a===-⎰⎰⎰ 11{e sin cos de }{e sin [e cos e sin d ]}ax ax ax ax ax b b bx bx bx bx b bx x a a a a =-=-+⎰⎰ 即 2221e (sin cos )ax b S a bx b bx S a a=-- 由此可证不定积分。

当x = 0时,S 应该为零,所以22b C a b=+ 因此,从0开始的积分为 221e (sin cos )ax S a bx b bx b a b=-++ 利用复数积分的方法更简单。

由于 i i i 221i e d e e i ax bx ax bx ax bx a b x C C a b a b +++-''=+=+++⎰ 其中C'表示复常数。

根据欧拉公式e i x = cos x + isin x ,上式两边取虚部即可证明同一结果。

上式两边取实部还可证明221e cos d e (sin cos )ax ax bx x b bx a bx C a b=+++⎰ [算法]设被积函数为y = f (x ),取间隔为Δx ,取上限为x = n Δx ,则积分可用求和公式近似表示1()ni i S f x x ==∆∑积分既能用上式近似计算,也能用积分的解析式计算,还能用数值积分和符号积分计算。

[程序]P3quad.m 如下。

%数值积分和符号积分方法clear %清除变量a=-0.5; %指数的常数b=2; %正弦函数的常数dx=0.1; %间隔xm=6; %上限x=0:dx:xm; %自变量向量s1=(exp(a*x).*(-b*cos(b*x)+a*sin(b*x))+b)/(a^2+b^2);%积分的解析解y=exp(a*x).*sin(b*x); %被积函数s2=cumtrapz(y)*dx; %梯形法积分figure %创建图形窗口plot(x,s1,x,s2,'.') %画积分曲线grid on %加网格s=['exp(',num2str(a),'*x).*sin(',num2str(b),'*x)'];%被积分函数字符串f=inline(s); %化为内线函数,才可以被调用(画成) s3=0; %第1个积分值for i=2:length(x) %按自变量循环s3=[s3,quad(f,0,x(i))]; %连接积分 quad 对f 积分 下限0,上限x (i ) end %结束循环hold on %保持图像plot(x,s3,'or') %画数值积分曲线syms sa sb sx %定义符号变量ss=exp(sa*sx)*sin(sb*sx); %被积符号函数sy=int(ss,sx) %对sx 进行符号积分ssy=subs(sy,{sa,sb},{a,b}); %替换常数s4=subs(ssy,sx,x); %替换向量 因为sx 与sa ,sb 的长度不一样,不能同时替代 plot(x,s4-s4(1),'ko','MarkerSize',10) %画符号积分曲线tit=['\ity\rm=e^{',num2str(a),'}\it^x\rmsin',num2str(b),'\itx'];%形成数学公式:^表示上标title([tit,'\rm 的积分'],'FontSize',16) %标题legend('公式法','梯形法','数值法','符号法',4)%加图例(4表示右下角,0表示电脑选择最佳位置,-1把图例放到外面)[图示]如P3图所示,梯形法积分(点)与积分的解析解(线)符合得很好,4.微分方程的求解方法(1)求一阶微分方程的解d 2d 1y y x x =+ 当x = 0时,y = 2,这是初始条件。

相关文档
最新文档