MatLab4数值计算(一)

合集下载

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基础首先,我们需要了解MATLAB的基本操作和语法,以便能够熟练运用。

MATLAB使用矩阵和数组来存储和处理数据,因此,熟悉矩阵和数组操作是非常重要的。

MATLAB中的矩阵和数组是通过方括号来定义的,例如:A = [1 2 3; 4 5 6; 7 8 9]表示一个3x3的矩阵A,其中每个元素由空格或分号隔开。

我们可以使用括号或索引来访问矩阵中的元素。

例如,要访问矩阵A的第二行第三列的元素,可以使用A(2,3)。

MATLAB提供了大量内置的数学函数,包括算术运算、三角函数、指数和对数函数等。

这些函数可以直接应用于矩阵和数组,简化了数值计算的过程。

三、方程求解方程求解是数值计算中的一个重要任务,MATLAB提供了多种方法来求解方程,包括代数方法和数值方法。

1. 代数方法对于一些简单的方程,例如一元一次方程或二次方程,可以直接使用MATLAB内置的解方程函数进行求解。

例如,对于一元一次方程ax + b = 0,可以使用solve函数来求解。

代码示例:syms x;eqn = a*x + b == 0;sol = solve(eqn, x);其中,syms x;指定x为符号变量,eqn为方程表达式,sol为方程的解。

2. 数值方法对于一些复杂的方程,无法用解析方法求解。

这时,可以使用数值方法来近似求解。

MATLAB提供了多种数值求解方法,包括二分法、牛顿法和割线法等。

这些方法可以通过迭代逼近的方式求解方程的根。

代码示例:f = @(x) x^2 - 4;x0 = 2;x = fzero(f, x0);其中,f为方程的表达式,x0为初始猜测值,x为方程的根。

实验四MATLAB数值计算与符号计算

实验四MATLAB数值计算与符号计算

实验四 MATLAB数值计算与符号计算一、实验目的1.掌握数据插值和曲线拟合的方法2.掌握求数值导数和数值积分的方法3.掌握代数方程数值求解的方法4.掌握常微分方程数值求解的方法5.掌握求解优化问题的方法6.掌握求符号极限、导数和积分的方法7.掌握代数方程符号求解的方法8.掌握常微分方程符号求解的方法二、实验原理1.数据插值a) 一维数据插值 Y1=interp1(X,Y,X1,’method’)b) 二维数据插值 Z1=interp2(X,Y,Z,X1,Y1,’method’)2.曲线拟合[P,S]=polyfit(X,Y,m)3.符号对象的建立(1)符号量名=sym(符号字符串):建立单个的符号变量或常量;(2)syms arg1 arg2,…,argn:建立n个符号变量或常量。

4.基本符号运算(1)基本四则运算:+,-,*,\,^(2)分子与分母的提取:[n,d]=numden(s)(3)因式分解与展开:factor(s),expand(s)(4)化简:simplify, simple(s)5.符号函数及其应用(1)求极限:limit(f,x,a)(2)求导数:diff(f,x,a);(3)求积分:int(f,v)三、实验内容1.按下表用3次样条方法插值计算0~900范围内整数点的正弦值和0~750范围内整数点的正切值,然后用5次多项式拟合方法计算相同的函数值,并将两种计算结果进行比较。

x2=0:75;y1=sin(pi.*x1./180);y2=tan(pi.*x2./180);;a=interp1(x1,y1,45,'cublic')b=interp1(x1,y1,45,'cublic')p1=polyfit(x1,y1,5)p2=polyfit(x2,y2,5)c1=polyval(p1,x1);c2=polyval(p2,x2);subplot(2,1,1);plot(x1,c1,':o',x1,y1,'r');subplot(2,1,2);plot(x2,c2,':o',x2,y2,'r');10203040506070802.(1)求函数33()sin cos f x x x =+在点,,,6432x ππππ=的数值导数。

matlab数值计算方法

matlab数值计算方法

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

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

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

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

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

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

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

matlab经典的4级4阶runge kutta法 -回复

matlab经典的4级4阶runge kutta法 -回复

matlab经典的4级4阶runge kutta法-回复使用MATLAB 实现经典的4 阶4 级Runge-Kutta 法引言:数值计算是现代科学和工程中的一个重要领域,它涉及到通过计算机模拟来解决数学问题。

在数值计算中,求解微分方程是一个常见的任务。

Runge-Kutta 法是求解微分方程的一种常见方法,它可以用于数值求解常微分方程和偏微分方程。

本文将介绍经典的4 级4 阶Runge-Kutta 法的原理,并使用MATLAB 来实现该方法。

一、原理介绍:Runge-Kutta 法是数值计算领域中最常用的方法之一。

它通过将微分方程的解逐步逼近来求解微分方程。

经典的4 级4 阶Runge-Kutta 法基于以下公式:\begin{align*}k_1 &= h f(t_n, y_n) \\k_2 &= h f(t_n + \frac{h}{2}, y_n + \frac{k_1}{2}) \\k_3 &= h f(t_n + \frac{h}{2}, y_n + \frac{k_2}{2}) \\k_4 &= h f(t_n + h, y_n + k_3) \\y_{n+1} &= y_n + \frac{1}{6}(k_1 + 2k_2 + 2k_3 + k_4)\end{align*}其中,h 是步长,t_n 是当前时间点,y_n 是当前的解,f(t, y) 是微分方程的右手函数。

二、算法实现:现在我们将使用MATLAB 实现经典的4 级4 阶Runge-Kutta 法,并解决一个简单的一阶常微分方程。

首先,我们定义一个MATLAB 函数,用于实现4 级4 阶Runge-Kutta 法。

函数接受输入参数为微分方程的右手函数f(t, y),初始时间t_0,初始解y_0,以及步长h。

函数输出为一个数组,包含了每个时间点的解。

以下是MATLAB 代码实现:matlabfunction y = runge_kutta(f, t0, y0, h, num_steps)初始化解数组y = zeros(num_steps+1, 1);y(1) = y0;循环计算每个时间点的解for i = 1:num_stepst = t0 + (i-1)*h;计算k1, k2, k3, 和k4k1 = h * f(t, y(i));k2 = h * f(t + h/2, y(i) + k1/2);k3 = h * f(t + h/2, y(i) + k2/2);k4 = h * f(t + h, y(i) + k3);计算下一个时间点的解y(i+1) = y(i) + (k1 + 2*k2 + 2*k3 + k4)/6;endend接下来,我们使用这个函数来解决一个简单的一阶常微分方程。

matlab经典的4级4阶runge kutta法

matlab经典的4级4阶runge kutta法

MATLAB是一种用于算法开发、数据分析、可视化和数值计算的高级技术计算语言和交互式环境。

作为一个强大的工具,MATLAB提供了许多数值计算方法,其中4级4阶Runge-Kutta方法就是其中之一。

1. Runge-Kutta方法简介Runge-Kutta方法是求解常微分方程(ODE)的数值方法之一。

在MATLAB中,用户可以使用内置的ode45函数来调用4级4阶Runge-Kutta方法。

具体来说,4级4阶Runge-Kutta方法是一种单步迭代方法,通过在每个步骤中计算斜率来逐步逼近解析解。

它的优点是数值稳定性好,适用于多种类型的微分方程。

2. Runge-Kutta方法的公式4级4阶Runge-Kutta方法的一般形式如下:$$k_1 = hf(t_n, y_n)$$$$k_2 = hf(t_n + \frac{1}{2}h, y_n + \frac{1}{2}k_1)$$$$k_3 = hf(t_n + \frac{1}{2}h, y_n + \frac{1}{2}k_2)$$$$k_4 = hf(t_n + h, y_n + k_3)$$$$y_{n+1} = y_n + \frac{1}{6}(k_1 + 2k_2 + 2k_3 + k_4)$$其中,$t_n$是当前的独立变量值,$y_n$是当前的解向量,h是步长,$f(t_n, y_n)$是给定点$(t_n, y_n)$处的斜率。

通过不断迭代上述公式,可以逐步求解微分方程的数值解。

3. MATLAB中的4级4阶Runge-Kutta方法的应用在MATLAB中,用户可以使用ode45函数调用4级4阶Runge-Kutta方法来求解常微分方程。

使用ode45函数的基本语法如下:```matlab[t, y] = ode45(odefun, tspan, y0)```其中,odefun是用户定义的ODE函数句柄,tspan指定了求解的时间范围,y0是初始条件。

Matlab学习指导第四章 数值计算


2x1-x2-x3=4
3x1+4x2-2x3=11 3x1-2x2+4x3=11
A=[ 2,-1,-1 ; 3,4,-2; 3,-2,4 ]; b=[4; 11; 11]; det(A), rank(A), rank([A,b]) x=A\b
方程组的解的三种情况:
对于方程Ax=b, A为Am×n矩阵,有三种情况: 当m=n时,此方程成为"恰定"方程,求解精确解 当m>n时,此方程成为“超定”方程,寻求最小二乘解 (直线拟
合)
1) 恰定方程组的解
当m<n时,此方程成为"欠定"方程,寻求基本解 matlab定义的除运算可以很方便地解上述三种方程 x = 方程组Ax=b (A非奇异),解为x=A\b 例4.2.1-2 求下列方程组的解 3.00 1.00 1.00
通俗地讲, 拟合就是由已知点得到一条曲线, 使该曲线 最能反映点所代表的规律.比如做欧姆定理的实验的时 候,由于实验中存在误差,最后拟合得到的曲线是一条 直线,而且肯定只有部分点落在拟合的直线上,但此时 该直线和测试点的方差最小.由拟合直线的斜率就可以 知道电阻的阻值.拟合是探测事物变化规律的办法. 插值就是根据函数上某些已知点(或实验数据),按一定 规律(插值方法)寻求未知的点,比如已知一个常用对数 y=log(x)表,是按照x=0.1:0.1:10制表的,如果按已知数 据求y=log(2.897)就可以用插值得到.表制得越密,插值 越准确.
16
对于方程组Ax=b, 采用x=A\b计算,如果方程组为yC=d, 要使用右除,即指令为y=d/C
Ax=bx'A'=b'yC=d x=A\bx'=b'/A'y=d/C 例4.2.1-1 解下列方程组 2x1+2x2+3x3=3

matlab 练习4-1 4-2和6-3

习题4-11.(2)求(2*x+3)^3-4的根。

将其合并同类项:clc;clear;syms xy=(2*x+3)^3-4;pl=collect(y)得:pl =23+8*x^3+36*x^2+54*x求根:p=[8 36 54 23];x=roots(p)解得根为:x =-1.89685026299205 + 0.68736481849930i -1.89685026299205 - 0.68736481849930i -0.706299474015902、clear;f=[1 0 -3 2 1];g=[1 -2 5];[q1,r1]=deconv(f,g)q1=poly2sym(q1)r1=poly2sym(r1)得:q1 = 1 2 -4r1 = 0 0 0 -16 21q1 =x^2+2*x-4r1 =-16*x+21所以得到商式为:x^2+2*x-4余式为:-16*x+214、将其因式分解:clear;syms xf1=x^21-1;f2=x^4+4;f3=x^18+x^15+x^12+x^9+x^6+x^3+1;p1=factor(f1)p2=factor(f2)p3=factor(f3)得:p1 =(x-1)*(1+x^2+x)*(1+x)*(1-x+x^2)*(1+x^2)*(x^4-x^2+1)p2 =(x^2-2*x+2)*(x^2+2*x+2)p3 =(1+x^6+x^5+x^4+x^3+x^2+x)*(1-x+x^3-x^4+x^6-x^8+x^9-x^11+x^12)将其进行嵌套分解clear;syms xf1=x^12-1;f2=x^4+4;f3=x^18+x^15+x^12+x^9+x^6+x^3+1;p1=horner(f1)p2=horner(f2)p3=horner(f3)得:p1 =x^12-1p2 =x^4+4p3 =1+(1+(1+(1+(1+(1+x^3)*x^3)*x^3)*x^3)*x^3)*x^3习题4-21、(2)计算行列式:syms a b c dD=[a 1 0 0;-1 b 1 0;0 -1 c 1;0 0 -1 d;];det(D)得:ans =a*b*c*d+a*b+a*d+c*d+1化简:A=simple(ans)得:A =(a+c+a*b*c)*d+1+a*b3、解方程组:D=[5 6 0 0 0;1 5 6 0 0;0 1 5 6 0;0 0 1 5 6;0 0 0 1 5];D1=[1 6 0 0 0;0 5 6 0 0;0 1 5 6 0;0 0 1 5 6;1 0 0 1 5];D2=[5 1 0 0 0;1 0 6 0 0;0 0 5 6 0;0 0 1 5 6;0 1 0 1 5];D3=[5 6 1 0 0;1 5 0 0 0;0 1 0 6 0;0 0 0 5 6;0 0 1 1 5];D4=[5 6 0 1 0;1 5 6 0 0;0 1 5 0 0;0 0 1 0 6;0 0 0 1 5];D5=[5 6 0 0 1;1 5 6 0 0;0 1 5 6 0;0 0 1 5 0;0 0 0 1 1];x1=det(D1)/det(D);x2=det(D2)/det(D);x3=det(D3)/det(D);x4=det(D4)/det(D);x5=det(D5)/det(D);x1,x2,x3,x4,x5解得:x1 = 2.26616541353383x2 =-1.72180451127820x3 = 1.05714285714286x4 =-0.59398496240602x5 = 0.31879699248120习题6-32、hill加密在file写一个解密的程序:function z=hill3(A,y)a=mod(det(A),29);for k=1:28if rem(k*a,29)==1,bb=k;break;endendB=mod(bb*[A(2,2),-A(1,2);-A(2,1),A(1,1)],29);y2=double(y);y3=(y2-64).*(y2>64)+(y2-17).*(y2==44)+(y2-18).*(y2==46)+(y2-32).*(y2==32);y4=reshape(y3,2,length(y3)/2);y5=mod(B*y4,29);y6=y5(:)';if y6(end)==0,y6(end)==[];endy7=(y6+64).*(y6~=0&y6<27)+(y6+17).*(y6==27)+(y6+18).*(y6==46)+(y6+32).*(y6==0); z=char(y7)在命令窗口输入:A=[1 2; 0 3];y='WKV ACPEAOCIXGWIZUROQWABALOBDKCEAFCLWWCVLEMIMCC'z=hill3(A,y);可得密文的原始明文为:FWBJBONJMA VHK,K IFWYCJKJBEIKIANJDAP,UANDFNJNAA1、移位加密法:有file新建一个加密和解密的程序movenfunction y=moven(x,n)x2=double(x);x3=(x2+n);y=char(x3)y2=double(y);y3=(y2-n);z=char(y3)在命令窗口输入:moven('DONTLOOKWISE',3);可得:密文y和明文z为:y =GRQWORRNZLVHz =DONTLOOKWISE。

如何在MATLAB中进行数值计算

如何在MATLAB中进行数值计算在科学计算领域,MATLAB被广泛应用于数值计算,它提供了强大而简便的工具和函数,可以帮助科学家们进行复杂的数学计算和数据分析。

本文将介绍如何在MATLAB中进行数值计算,并探讨一些常用的技巧和技术。

MATLAB中的数值计算是通过矩阵和向量运算来实现的,因此熟悉矩阵运算和向量操作是使用MATLAB进行数值计算的关键。

首先,让我们来看看如何定义和操作矩阵和向量。

在MATLAB中,可以使用矩阵和向量来存储和操作多个数值。

矩阵是一个二维数组,而向量是一个一维数组。

通过使用方括号和逗号来定义矩阵和向量。

例如,以下是一个3x3的矩阵的定义:A = [1, 2, 3; 4, 5, 6; 7, 8, 9];可以通过使用A(i, j)的形式来访问矩阵中的元素,其中i和j分别表示行和列的索引。

例如,要访问第二行第三列的元素,可以使用A(2, 3)。

向量可以通过类似的方式定义,只需要使用一个维度。

例如,以下是一个包含5个元素的行向量的定义:v = [1, 2, 3, 4, 5];可以使用v(i)的形式来访问向量中的元素,其中i表示索引。

例如,要访问第四个元素,可以使用v(4)。

在进行数值计算时,通常需要进行一些基本的运算,如加法、减法、乘法和除法。

在MATLAB中,这些运算可以直接应用于矩阵和向量。

加法运算可以使用加号来实现。

例如,要将两个矩阵A和B相加,可以使用以下代码:C = A + B;减法运算可以使用减号来实现。

例如,要将矩阵A减去矩阵B,可以使用以下代码:D = A - B;乘法运算可以使用乘号来实现。

例如,要将矩阵A乘以矩阵B,可以使用以下代码:E = A * B;除法运算可以使用除号来实现。

例如,要将矩阵A除以矩阵B,可以使用以下代码:F = A / B;除了基本的运算,MATLAB还提供了很多其他的函数和工具箱,可以帮助进行更复杂的数值计算和数据分析。

例如,MATLAB提供了一些常用的数学函数,如幂函数、指数函数、对数函数、三角函数等等。

第3章 MATLAB数值计算1


求矩阵的最大最小值
格式: y=max(A);返回一个向量,第i个元素为第 i列的最 大元素 [y,u]=max(A);返回两个向量,y记录每列的最大 值,u为每列最大元素的行号 max(A,[],dim);dim取1或2,取1与max相 同,取2返 回一个列向量,第i个元素是A 矩阵的第i行的最大 元素 两个向量或矩阵元素的比较 u=max(A,B) ;A,B为两个同型矩阵或向量 u=max(A,n);n为标量
例:
A=[1 2 3;4 5 6;7 8 9] E=eig(A) E=
16.1168 -1.1168 -0.0000
[V,D]= eig(A,’nobalance’) V= -0.2833 -1.0000 0.5000 -0.6417 -0.1104 -1.0000 -1.0000 0.7792 0.5000 D= 16.1168 0 0 0 -1.1168 0 0 0 -0.0000
矩阵的秩
函数:rank() c=rank(A); c=
3
3.1.3矩阵的特征值与特征向量
矩阵的特征值 函数:eig 格式: E= eig(A) 求A的全部特征值构成向量E [V,D]= eig(A) 先对A作相似变换,然后求矩阵A 的全部特征值,构成对角阵D,并求它的特征向 量以构成V的列向量 [V,D]= eig(A,’nobalance’) 直接求A的特征向 量和特征值.
矩阵元素的累加和累积
设X=(x1,x2…xn),U,V是与X等长的两个向量,并且
U ( xi , xi ,... xi )
i 1 i 1 i 1 1 2 n
V ( xi , xi ... xi )
1
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MatLab & 数学建模授课:曾景峰(江西环境工程职业学院)第四讲数值计算符号数学工具箱符号表达式的运算numeric 符号到数值的转换pretty 显示悦目的符号输出subs 替代子表达式sym 建立符号矩阵或表达式symadd 符号加法symdiv 符号除法symmul 符号乘法symop 符号运算sympow 符号表达式的幂运算symrat 有理近似symsub 符号减法symvar 求符号变量符号表达式的简化collect 合并同类项expand 展开factor 因式simple 求解最简形式simplify 简化symsum 和级数符号多项式charpoly 特征多项式horner 嵌套多项式表示numden 分子或分母的提取poly2sym 多项式向量到符号的转换sym2poly 符号到多项式向量的转换符号微积分diff 微分int 积分jordan 约当标准形taylor 泰勒级数展开符号可变精度算术digits 设置可变精度vpa 可变精度计算求解符号方程compose 函数的复合dsolve 微分方程的求解finverse 函数逆linsolve 齐次线性方程组的求解Solve 代数方程的求解符号线性代数charploy 特征多项式determ 矩阵行列式的值eigensys 特征值和特征向量inverse 矩阵逆jordan 约当标准形linsolve 齐次线性方程组的解transpose 矩阵的转置一、方程求解求解单个代数方程MATLAB具有求解符号表达式的工具,如果表达式不是一个方程式(不含等号),则在求解之前函数solve将表达式置成等于0。

>> solve( ' a*x^2+b*x+c ' ) % solve for the roots of the eqution ans=[1/2/a*(-b+(b^2-4*a*c)^1/2)][1/2/a*(-b-(b^2-4*a*c)^1/2)]结果是符号向量,其元素是方程的2个解。

如果想对非缺省x变量求解,solve 必须指定变量。

>> solve( ' a*x^2+b*x+c ' , ' b ' ) % solve for bans=-(a*x^2+c)/x带有等号的符号方程也可以求解。

>> f=solve( ' cos(x)=sin(x) ' ) % solve for xf=1/4*pi>> t=solve( ' tan(2*x)=sin(x) ' )t=[ 0][acos(1/2+1/2*3^(1/2))][acos(1/2=1/2*3^(1/2))]并得到数值解。

>> numeric(f)ans=0.7854>> numeric(t)ans=0 + 0.8314i1.9455注意在求解周期函数方程时,有无穷多的解。

在这种情况下,solve对解的搜索范围限制在接近于零的有限范围,并返回非唯一的解的子集。

如果不能求得符号解,就计算可变精度解。

>> x=solve( ' exp(x)=tan(x) ' )x=1.306326940423079代数方程组求解可以同时求解若干代数方程,语句solve(s1,s2,.....,sn)对缺省变量求解n个方程,语句solve(s1,s2,...,sn,' v1,v2,...,vn ')对n个' v1,v2,...vn '的未知数求解n个方程。

solve(f) 解符号方程式f。

solve(f1,…,fn) 解由f1,…,fn组成的联立方程式。

我们先定义以下的方程式:>>eq1 = 'x-3=4'; % 注意也可写成'eq1=x-7'>>eq2 = 'x^2-x-6=0'; % 注意也可写成'eq2=x*2-x-6'>>eq3 = 'x2+2*x+4=0';>>eq4 = '3*x+2*y-z=10';>>eq5 = '-x+3*y+2*z=5';>>eq6 = 'x-y-z=-1';>>solve(eq1)ans=7>>solve(eq2)ans=[[3],[-2]]' % 原方程式有二个根3, -2>>solve(eq3)ans=[[-1+i*3^(1/2)],[-1-i*3^(1/2)]]' % 注意实根和虚根的表示式>>solve(eq4,eq5,eq6) % 解三个联立方程式ans=x = -2, y = 5, z = -6如何处理中小学典型的代数问题?黛安娜(Diane)想去看电影,她从小猪存钱罐倒出硬币并清点,她发现:∙10美分的硬币数加上5美分的硬币总数的一半等于25美分的硬币数。

∙1美分的硬币数比5美分、10美分以及25美分的硬币总数多10。

∙25美分和10美分的硬币总数等于1美分的硬币数加上1/4的5美分的硬币数∙25美分的硬币数和1美分的硬币数比5美分的硬币数加上8倍的10美分的硬币数多1。

如果电影票价为3.00美元,爆米花为1.00美元,糖棒为50美分,她有足够的钱去买这三样东西?首先,根据以上给出的信息列出一组线性方程,假如p,n,d和q分别表示1美分,5美分,10美分,和25美分的硬币数d n p q p n d q q d p n q p n d ++==++-+=++=+-210481然后,建立MATLAB 符号方程并对变量求解。

>> eq1= ' d+(n+p)/2=q ' ;>> eq2= ' p=n+d+q-10 ' ;>> eq3= ' q+d=p+n/4 ' ;>> eq4= ' q+p=n+8*d-1 ' ;>>[pennies ,nickles ,dimes ,quarters]=solve(equ1,equ2,equ3,equ4,' p ,n ,d ,q ' )pennies=16nickles=8dimes=3quarters=15所以,黛安娜有16枚1美分的硬币,8枚5美分的硬币,3枚10美分的硬币,15枚25美分的硬币,这就意味着>> money=.01*16+.05*8+.10*3+.25*15money=4.6100她就有足够的钱去买电影票,爆米花和糖棒并剩余11美分。

【例】求解二元函数方程组⎩⎨⎧=+==-=0)cos(),(0)sin(),(21y x y x f y x y x f 的零点。

(0)从三维坐标初步观察两函数图形相交情况x=-2:0.05:2;y=x;[X,Y]=meshgrid(x,y); %产生x-y 平面上网点坐标F1=sin(X-Y);F2=cos(X+Y);F0=zeros(size(X));surf(X,Y,F1),xlabel('x'),ylabel('y'),view([-31,62]),hold on,surf(X,Y,F2),surf(X,Y,F0),shading interp,hold off图 5.6.3-0 两函数的三维相交图(1)在某区域观察两函数0等位线的交点情况clear;x=-2:0.5:2;y=x;[X,Y]=meshgrid(x,y); %产生x-y平面上网点坐标F1=sin(X-Y);F2=cos(X+Y);v=[-0.2, 0, 0.2]; %指定三个等位值,是为了更可靠地判断0等位线的存在。

contour(X,Y,F1,v) %画F1的三条等位线。

hold on,contour(X,Y,F2,v),hold off %画F2的三条等位线。

图 5.6.3-1 两个二元函数0等位线的交点图(2)从图形获取零点的初始近似值在图5.6.3-1中,用ginput获取两个函数0等位线(即三线组中间那条线)交点的坐标。

[x0,y0]=ginput(2); %在图上取两个点的坐标disp([x0,y0])-0.7926 -0.78430.7926 0.7843(3)利用fsolve求精确解。

以求(0.7926,7843)附近的解为例。

本例直接用字符串表达被解函数。

注意:在此,自变量必须写成x(1), x(2)。

假如写成xy(1), xy(2),指令运行将出错。

fun='[sin(x(1)-x(2)),cos(x(1)+x(2))]'; %<12> xy=fsolve(fun,[x0(2),y0(2)])%<13>xy =0.7854 0.7854(4)检验fxy1=sin(xy(1)-xy(2));fxy2=cos(xy(1)+xy(2));disp([fxy1,fxy2])1.0e-006 *-0.0994 0.2019〖说明〗●指令<12><13>可用以下任何一组指令取代。

(A)内联函数形式指令fun=inline('[sin(x(1)-x(2)), cos(x(1)+x(2))]', 'x'); %项'x'必须有。

xy=fsolve(fun,[x0(2), y0(2)]);(B)M函数文件形式及指令先用如下fun.m表示被解函数(并在搜索路径上)[fun.m]function ff=fun(x)ff(1)=sin(x(1)-x(2));ff(2)=cos(x(1)+x(2));然后运行指令xy=fsolve('fun',[x0(2),y0(2)]) 。

●第四步检验中的结果表明:所找零点处的函数值小于610 ,是一个十分接近零的小数。

该精度由options.TolFun控制。

options.TolFun的缺省值是1.0000e-006。

它可以用下列指令看到options=optimset('fsolve');options.TolFunans =1.0000e-006线性方程求解a= [ 7 2 1 -29 15 3 -2-2 -2 11 51 32 13]b=[4 7 -1 0]'x=a\bx =0.49790.14450.0629-0.0813单个微分方程常微分方程有时很难求解,MATLAB提供了功能强大的工具,可以帮助求解微分方程。

相关文档
最新文档