matlab程序设计实践-牛顿法解非线性方程
matlab牛顿拉夫逊法与快速分解法的实现

一、概述MATLAB是一种强大的数学软件工具,它提供了许多优秀的数值计算和数据分析功能。
其中,牛顿拉夫逊法和快速分解法是两种常用的数值计算方法,它们在解决非线性方程组和矩阵分解等问题中具有重要的应用价值。
本文将介绍如何在MATLAB中实现这两种方法,并对它们的优缺点进行详细分析。
二、牛顿拉夫逊法的实现1. 算法原理牛顿拉夫逊法是一种用于求解非线性方程组的迭代算法。
它利用函数的一阶和二阶导数信息来不断逼近方程组的解,直到满足精度要求为止。
算法原理可以用以下公式表示:公式1其中,x表示解向量,F(x)表示方程组的函数向量,J(x)表示方程组的雅可比矩阵,δx表示解的更新量。
通过不断迭代更新x,最终得到方程组的解。
2. MATLAB代码实现在MATLAB中,可以通过编写函数来实现牛顿拉夫逊法。
以下是一个简单的示例代码:在这段代码中,首先定义了方程组的函数向量和雅可比矩阵,然后利用牛顿拉夫逊法进行迭代更新,直到满足精度要求为止。
通过这种方式,就可以在MATLAB中实现牛顿拉夫逊法,并应用于各种实际问题。
三、快速分解法的实现1. 算法原理快速分解法是一种用于矩阵分解的高效算法。
它利用矩阵的特定性质,通过分解为更小的子问题来加速计算过程。
算法原理可以用以下公式表示:公式2其中,A表示要分解的矩阵,L和U分别表示矩阵的下三角和上三角分解。
通过这种分解方式,可以将原始矩阵的计算量大大减小,提高求解效率。
2. MATLAB代码实现在MATLAB中,可以利用内置函数来实现快速分解法。
以下是一个简单的示例代码:在这段代码中,利用MATLAB内置的lu函数进行LU分解,得到矩阵的下三角和上三角分解。
通过这种方式,就可以在MATLAB中实现快速分解法,并应用于各种矩阵计算问题。
四、方法比较与分析1. 算法复杂度牛顿拉夫逊法和快速分解法在计算复杂度上有所不同。
牛顿拉夫逊法的迭代次数取决于所求解问题的非线性程度,通常需要较多的迭代次数。
牛顿迭代法解非线性方程组(MATLAB版)

⽜顿迭代法解⾮线性⽅程组(MATLAB版)⽜顿迭代法,⼜名切线法,这⾥不详细介绍,简单说明每⼀次⽜顿迭代的运算:⾸先将各个⽅程式在⼀个根的估计值处线性化(泰勒展开式忽略⾼阶余项),然后求解线性化后的⽅程组,最后再更新根的估计值。
下⾯以求解最简单的⾮线性⼆元⽅程组为例(平⾯⼆维定位最基本原理),贴出源代码:1、新建函数fun.m,定义⽅程组1 function f=fun(x);2 %定义⾮线性⽅程组如下3 %变量x1 x24 %函数f1 f25 syms x1 x26 f1 = sqrt((x1-4)^2 + x2^2)-sqrt(17);7 f2 = sqrt(x1^2 + (x2-4)^2)-5;8 f=[f1 f2];2、新建dfun.m,求出⼀阶微分⽅程1 function df=dfun(x);2 f=fun(x);3 df=[diff(f,'x1');diff(f,'x2')]; %雅克⽐矩阵3、建⽴newton.m,执⾏⽜顿迭代过程1 clear;clc2 format;3 x0=[0 0]; % 迭代初始值4 eps = 0.00001; % 定位精度要求5for i = 1:106 f = double(subs(fun(x0),{'x1''x2'},{x0(1) x0(2)}));7 df = double(subs(dfun(x0),{'x1''x2'},{x0(1) x0(2)})); % 得到雅克⽐矩阵8 x = x0 - f/df;9if(abs(x-x0) < eps)10break;11 end12 x0 = x; % 更新迭代结果13 end14 disp('定位坐标:');15 x16 disp('迭代次数:');17 i结果如下:定位坐标:x =0.0000 -1.0000迭代次数:i =4。
matlab实验一:非线性方程求解-牛顿法

matlab实验一:非线性方程求解-牛顿法实验一:非线性方程求解程序1:二分法:syms f x;f=input('请输入f(x)=');A=input(’请输入根的估计范围[a,b]=’);e=input('请输入根的误差限e=’);while (A(2)—A(1))>ec=(A(1)+A(2))/2;x=A(1);f1=eval(f);x=c;f2=eval(f);if (f1*f2)〉0A(1)=c;elseA(2)=c;endendc=(A(1)+A(2))/2;fprintf(’c=%。
6f\na=%.6f\nb=%.6f\n',c,A)用二分法计算方程:1.请输入f(x)=sin(x)—x^2/2请输入根的估计范围[a,b]=[1,2]请输入根的误差限e=0。
5e-005c=1.404413a=1。
404411b=1.4044152.请输入f(x)=x^3—x-1请输入根的估计范围[a,b]=[1,1.5]请输入根的误差限e=0.5e-005c=1。
324717a=1。
324715b=1。
324718程序2:newton法:syms f x;f=input(’请输入f(x)=');df=diff(f);x0=input('请输入迭代初值x0=’);e1=input('请输入奇异判断e1=’);e2=input('请输入根的误差限e2=');N=input('请输入迭代次数限N=’);k=1;while (k〈N)x=x0;if abs(eval(f))〈e1 fprintf(’奇异!\nx=%。
6f\n迭代次数为:%d\n’,x0,k)breakelsex1=x0—eval(f)/eval(df);if abs(x1-x0)<e2fprintf('x=%。
6f\n迭代次数为:%d\n’,x1,k)breakelsex0=x1;k=k+1;endendendif k〉=Nfprintf('失败\n')end用newton法计算方程:1.请输入f(x)=x*exp(x)—1请输入迭代初值x0=0。
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实现首先,我们需要定义非线性方程组。
假设我们要求解方程组:```f1(x1,x2)=0f2(x1,x2)=0```其中,`x1`和`x2`是未知数,`f1`和`f2`是非线性函数。
我们可以将这个方程组表示为向量的形式:```F(x)=[f1(x1,x2);f2(x1,x2)]=[0;0]```其中,`F(x)`是一个列向量。
为了实现牛顿迭代法,我们需要计算方程组的雅可比矩阵。
雅可比矩阵是由方程组的偏导数组成的矩阵。
对于方程组中的每个函数,我们可以计算其对每个变量的偏导数,然后将这些偏导数组成一个矩阵。
在MATLAB中,我们可以使用`jacobi`函数来计算雅可比矩阵。
以下是一个示例函数的定义:```matlabfunction J = jacobi(x)x1=x(1);x2=x(2);J = [df1_dx1, df1_dx2; df2_dx1, df2_dx2];end```其中,`x`是一个包含未知数的向量,`df1_dx1`和`df1_dx2`是`f1`对`x1`和`x2`的偏导数,`df2_dx1`和`df2_dx2`是`f2`对`x1`和`x2`的偏导数。
下一步是实现牛顿迭代法。
牛顿迭代法的迭代公式为:```x(k+1)=x(k)-J(x(k))\F(x(k))```其中,`x(k)`是第`k`次迭代的近似解,`\`表示矩阵的求逆操作。
在MATLAB中,我们可以使用如下代码来实现牛顿迭代法:```matlabfunction x = newton_method(x_initial)max_iter = 100; % 最大迭代次数tol = 1e-6; % 收敛阈值x = x_initial; % 初始解for k = 1:max_iterF=[f1(x(1),x(2));f2(x(1),x(2))];%计算F(x)J = jacobi(x); % 计算雅可比矩阵 J(x)delta_x = J \ -F; % 计算增量 delta_xx = x + delta_x; % 更新 xif norm(delta_x) < tolbreak; % 达到收敛条件,停止迭代endendend```其中,`x_initial`是初始解的向量,`max_iter`是最大迭代次数,`tol`是收敛阈值。
用Matlab编写二分法和Newton迭代法求解非线性函数

⽤Matlab编写⼆分法和Newton迭代法求解⾮线性函数1、⼆分法原理:若f的值在C[a, b]中,且f (a) · f (b) < 0,则f在 (a, b) 上必有⼀根。
实现算法流程:2、Newton迭代法迭代公式:⼏何意义:3、求解问题⽤Newton法和⼆分法求的解。
4、代码实现1 clear;close;clc2 a=0;b=1;%根区间3 e=10^(-6);%根的容许误差4 [X , N]=dichotomy(e,a,b);%⼆分法5 p0=0.5;%初始值6 N=15;%迭代次数7 [X1]=Newdon(p0,e,N);%Newton迭代法89 function [X , N]=dichotomy(deta,a,b)10 % 函数dichotomy:⼆分法11 %输⼊值:12 %fun:⽅程函数13 %deta:根的容许误差14 %有根区间:[a,b]15 %输出值16 %X:求解到的⽅程的根17 %N:总的迭代次数18 N=1+fix(log2((b-a)/deta));%由公式7.2求得,取整数|X_N-X*|<=(b-a)/2^N<deta,求N19 n=1;20 f1=myfunction(a);21 f2=myfunction(b);22if (f1*f2>0)23 disp('根不在输⼊的区间⾥,请重新输⼊区间');24else25while n <= N26 x=(a+b)/2;27if myfunction(a)*myfunction(x)>028 a=x;29else30 b=x;31 end32 n=n+1;33 end34 X=x;35 fprintf('第%d次⼆分法求出的⽅程的根:\n',N);36 fprintf('X=\n');37 disp(X);38 end39 end4041 function [P]=Newdon(p0,TOL,N)42 %求⽅程组的解43 %输⼊参数44 %初始值:p045 %误差容限:TOL46 %最⼤迭代次数:N47 %输出参数:48 %⽅程近似解:p49 %或失败信息“Method failed”50 format long;51 n=1;%初始迭代次数52 syms x;53while n<=N54if abs(subs(diff(myfunction(x)),x,p0))<TOL55 P=p0;56break;57else58if subs(diff(myfunction(x),2),x,p0)==059 disp('Method failed');60break;61else62 p=p0-myfunction(p0)/subs(diff(myfunction(x)),x,p0);63 p=eval(p);%将exp的值转为⼩数值64if(abs(p-p0)<TOL)65 P=p;66break;67else68 p0=p;69 end70 end71 end72 n=n+1;73 end74 % P=vpa(P,10);%将分数转为⼩数并保留8位⼩数75 fprintf('第%d次NeWton迭代法求出的⽅程的根:\n',N);76 fprintf('P=\n');77 disp(P);78 end7980 function f=myfunction(x)81 f=x*exp(x)-1;82 end5、求解结果。
牛顿法解非线性方程(MATLAB和C++)

41 end
42 time = toc;
43
44 fprintf('\nIterated times is %g.\n', times);
45 fprintf('Elapsed time is %g seconds.\n', time);
46
47 root = x_iter;
48
49 % subfunction
5
6 // 功能描述:求解非线性方程根,并输出最终解 7 // 迭代式:x(k+1) = x(k) - f(x(k))/df(x(k)). 8 // 使用:修改标出的“修改”部分即可自定义参数
9
10 // 输入:函数 fun,函数导数 dfun,初值 x0,
4
11 // 最大迭代次数 maxiter,停止精度 tol 12 // 输出:迭代数值解 x_iter2
2
Listing 1: MATLAB EXAMPLE 1 % 2013/11/20 15:14:38
2
3 f = @(x)x^2 − 2; 4 df = @(x)2*x; 5 x0 = 3; 6 root = newton(f, df, x0);
C++ 以 C++ 实现的方法并未编写成为一般可调用的方法,而作为一个独立的 文件(包含一个实例),修改部分即可求解对应的方程。具体参照 cpp 文件内 注释。
A 附录
A.1 MATLAB
Listing 2: MATLAB CODE 1 function root = newton(f, df, x0, maxiter, tol) 2 %NEWTON Newton's method for nonlinear equations. 3% 4 % NEWTON's method: x(k+1) = x(k) - f(x(k))/f'(x(k)). 5% 6 % Inputs 7 % f - nonlinear equation. 8 % df - derivative of f(x). 9 % x0 - initial value. 10 % maxiter - maximum iterated times. 11 % tol - precision. 12 % 13 % Outputs 14 % root - root of f(x) = 0.
牛顿下山法求非线性方程组解

《MATLAB 程序设计实践》课程考核1、编程实现以下科学计算算法,并举一例应用之。
(参考书籍《精通MALAB科学计算》,王正林等著,电子工业出版社,2009年)“牛顿下山法求非线性方程组解”解:算法说明:牛顿下山法的迭代公式:())()(11n n n n x F x F w x x -+-=w 的取值范围为10≤w ,为了保证收敛,还要求w 的取值使得:())(1n n x F x F +可以用作次减半法来确定w 。
为了减少计算量,还可以用差商来代替偏导数。
在MA TLAB 中编程实现的非线形方程组的牛顿下山法的函数:mulDNewton 。
功能:用牛顿下山法求非线形方程组的一个解。
调用格式:[]),0(,eps x mulDNewton n r = 其中, x0为初始迭代向量Eps 为迭代精度;r 为求出的解向量n 为迭代步数。
牛顿下山法的MATLAB 代码如下:function [r,n]=mulDNewton(x0,eps) %牛顿下山法求非线形方程组的一个解 %初始迭代向量:x0 %迭代精度:eps %解向量: r %迭代步数:n if nargin==1 eps=1.0e-4;%输入的自变量的数目为1个时,精度定为eps=1.0e-4 endr=x0-myf(x0)/dmyf(x0); %当n=1时,取w=1 n=1; tol=1;%初始n 和tol 的值 while tol>eps x0=r; ttol=1; %初始ttol 的值 w=1;%初始w 的值,w 就是下山因子alpha F1=norm(myf(x0)); while ttol>=0r=x0-w*myf(x0)/dmyf(x0); ttol=norm(myf(r))-F1; w=w/2; endtol=norm(r-x0); n=n+1; if (n>100000)disp('迭代步数太多,可能不收敛!'); return ; end end举例说明:牛顿下山法求下面方程组⎩⎨⎧=--=-+0sin 1.0cos 5.00)cos(1.0sin 5.02211211x x x x x x x 的根,其初始迭代值取(0,0)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中南大学MATLAB程序设计实践学长有爱奉献,下载填上信息即可上交,没有下载券的自行百度。
所需m文件照本文档做即可,即新建(FILE)→脚本(NEW-Sscript)→复制本文档代码→运行(会跳出保存界面,文件名默认不要修改,保存)→结果。
第一题需要把数据文本文档和m文件放在一起。
全部测试无误,放心使用。
本文档针对做牛顿法求非线性函数题目的同学,当然第一题都一样,所有人都可以用。
←记得删掉这段话班级:学号:姓名:一、《MATLAB程序设计实践》Matlab基础表示多晶体材料织构的三维取向分布函数(f=f(φ1,φ,φ2))是一个非常复杂的函数,难以精确的用解析函数表达,通常采用离散空间函数值来表示取向分布函数,是三维取向分布函数的一个实例。
由于数据量非常大,不便于分析,需要借助图形来分析。
请你编写一个matlab程序画出如下的几种图形来分析其取向分布特征:(1)用Slice函数给出其整体分布特征;"~(2)用pcolor或contour函数分别给出(φ2=0, 5, 10, 15, 20, 25, 30, 35 … 90)切面上f分布情况(需要用到subplot函数);(3) 用plot函数给出沿α取向线(φ1=0~90,φ=45,φ2=0)的f分布情况。
(备注:数据格式说明解:(1)((2)将文件内的数据按照要求读取到矩阵f(phi1,phi,phi2)中,代码如下:fid=fopen('');for i=1:18tline=fgetl(fid);endphi1=1;phi=1;phi2=1;line=0; f=zeros(19,19,19);[while ~feof(fid)tline=fgetl(fid);data=str2num(tline);line=line+1;数据说明部分,与作图无关此方向表示f随着φ1从0,5,10,15,20 …到90的变化而变化此方向表示f随着φ从0,5,10,15, 20 …到90的变化而变化表示以下数据为φ2=0的数据,即f(φ1,φ,0)if mod(line,20)==1phi2=(data/5)+1;phi=1;else~for phi1=1:19f(phi1,phi,phi2)=data(phi1);endphi=phi+1;endendfclose(fid);。
将以上代码保存为在MATLAB中运行,运行结果如下图所示:!将以下代码保存为文件:fopen('');,readdata;[x,y,z]=meshgrid(0:5:90,0:5:90,0:5:90);slice(x,y,z,f,[45,90],[45,90],[0,45])运行结果如下图所示:(2))(3)将以下代码保存为文件:fopen('');readdata;for i=1:19subplot(5,4,i)pcolor(f(:,:,i))nd)运行结果如下图所示:|将以下代码保存为文件:fopen('');readdata;for i=1:19…subplot(5,4,i)contour(f(:,:,i))end运行结果如下图所示:(3)φ1=0~90,φ=45,φ2=0所对应的f(φ1,φ,φ2)即为f(:,10,1)。
将以下代码保存为文件:fopen('');…readdata;plot([0:5:90],f(:,10,1),'-bo')text(60,6,'\phi=45 \phi2=0')运行结果如下图所示:》#;二 《MATLAB 程序设计实践》科学计算(24)班级: 学号: 姓名: >1、编程实现以下科学计算算法,并举一例应用之。
(参考书籍《精通MALAB科学计算》,王正林等著,电子工业出版社,2009年)“牛顿法非线性方程求解”解:弦截法本质是一种割线法,它从两端向中间逐渐逼近方程的根;牛顿法本质上是一种切线法,它从一端向一个方向逼近方程的根,其递推公式为:-=+n n x x 1)()('n n x f x f 初始值可以取)('a f 和)('b f 的较大者,这样可以加快收敛速度。
和牛顿法有关的还有简化牛顿法和牛顿下山法。
在MATLAB 中编程实现的牛顿法的函数为:NewtonRoot 。
功能:用牛顿法求函数在某个区间上的一个零点。
/调用格式:root=NewtonRoot )(```eps b a f其中,f为函数名;a为区间左端点;b为区间右端点eps为根的精度;root为求出的函数零点。
,—牛顿法的matlab程序代码如下:|function root=NewtonRoot(f,a,b,eps)%牛顿法求函数f在区间[a,b]上的一个零点%函数名:f%区间左端点:a%区间右端点:b%根的精度:eps》%求出的函数零点:rootif(nargin==3)eps=;endf1=subs(sym(f),findsym(sym(f)),a);f2=subs(sym(f),findsym(sym(f)),b);if (f1==0)root=a;【endif (f2==0)root=b;endif (f1*f2>0)disp('两端点函数值乘积大于0 !');return;"elsetol=1;fun=diff(sym(f)); %求导数fa=subs(sym(f),findsym(sym(f)),a);fb=subs(sym(f),findsym(sym(f)),b);dfa=subs(sym(fun),findsym(sym(fun)),a);dfb=subs(sym(fun),findsym(sym(fun)),b);if(dfa>dfb) %初始值取两端点导数较大者、root=a-fa/dfa;elseroot=b-fb/dfb;endwhile(tol>eps)r1=root;fx=subs(sym(f),findsym(sym(f)),r1);dfx=subs(sym(fun),findsym(sym(fun)),r1); %求该点的导数值、root=r1-fx/dfx; %迭代的核心公式tol=abs(root-r1);endend例:求方程3x^2-exp(x)=0的一根解:在MATLAB命令窗口输入:>> r=NewtonRoot('3*x^2-exp(x)',3,4)输出结果:X=流程图:…2、编程解决以下科学计算问题。
1)解:这个方程可用下列步骤来解(1)用eig 函数求出矩阵K-λ M 的特征值L 和特征向量U ,U 和L 满足⎥⎦⎤⎢⎣⎡===21''00****λλU K U L IU M U(2)在原始方程Mx+Kx=0两端各乘以'U 及在中间乘以对角矩阵'U *U ,得<'U *M*'U *U*'x +'U *K*'U *x=0作变量置换x U x x U z z z **'21'21=⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡=,得0*''=+z L z这是一个对角矩阵方程,即可把它分两个方程:022''211''1=+=+z z z z λλ这意味着两种振动模态可以解耦,令i i λω=2,i ω是第i 个模式的固有频率(i=1,2)。
(3)由上述的解耦模态中,给出初始条件0x ,0d x ,化为0z ,0d z ,即可求出其分量1z ,z 。
设位置和速度的初始条件分别为[]Tx x x 02010=,[]Td d d x x x 02010=,则这三个步骤得到的最后公式为[][][])sin 1cos .()(0021t Mx u t Mx u u t x i d T i ii Ti i i ωωω+=∑=【系统解耦的振动模态的MATLAB 代码如下: function erziyoudu()流程图:%输入各原始参数m1=input('m1=');m2=input('m2='); %质量k1=input('k1=');k2=input('k2='); %刚度%输入阻尼系数%c1=input('c1=');c2=input('c2=');%给出初始条件及时间向量x0=[1;0];xd0=[0;-1];.tf=50; %步数dt=; %步长%构成二阶参数矩阵M=[m1,0;0,m2];(K=[k1+k2,-k2;-k2,k2];C=[c1+c2,-c2;-c2,c2];%构成四阶参数矩阵A=[zeros(2,2),eye(2);-M\K,-M\C];】%四元变量的初始条件y0=[x0;xd0];%设定计算点,作循环计算for i=1:round(tf/dt)+1t(i)=dt*(i-1);y(:,i)=expm(A*t(i))*y0;%循环计算矩阵指数end%按两个分图绘制x1、x2曲线!subplot(2,1,1),plot(t,y(1,:)),gridxlabel('t'),ylabel('y');subplot(2,1,2),plot(t,y(2,:)),gridxlabel('t'),ylabel('y');\运行M文件,依下图所示在MATLAB命令窗口中输入数据:~即可得出该振动的两种模态$*2)解:第一步,在MATLAB命令窗口输入命令pdetool打开工具箱,调整x坐标范围为[0 4],y 坐标范围为[0 3].通过options选项的Axes Linits设定如下图所示。
第二步,设定矩形区域。
点击工具箱栏中的按钮“”,拖动鼠标画出一矩形,并双击该矩形,设定矩形大小,如下图所示。
第三步,设边界条件。
点击工具栏中的按钮“”,并双击矩形区域的相应的边线在弹出的对话框中设定边界条件。
如下图所示,分别为各边框的边界条件。
第四步,设定方程。
单击工具栏中的按钮“”,在PDE模式下选择方程类型,如下图所示,并在其中设定参数。
第五步,单击工具栏中的按钮“”,拆分区域为若干子区域,如下图所示。
第六步,单击工具栏中的按钮“”,将子区域细化,从而保证结果更精确,如下图所示。
第七步,单击工具栏中的按钮“”,设置所画曲线的特性,如下图所示,并作出其解的三维图。
第八步,单击图2-8在标出的“plot”按钮,或单击工具栏中的按钮“”,可作出解的三维图,如下图所示。