matlab符号计算及其应用_第1页
matlab符号计算及其应用_第2页
matlab符号计算及其应用_第3页
matlab符号计算及其应用_第4页
matlab符号计算及其应用_第5页
已阅读5页,还剩93页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MATLAB

软件及其应用

ApplicationofMatlabLanguage1

MATLAB符号运算

(Symbolic)2Matlab

符号运算介绍

Matlab符号运算是通过符号数学工具箱(SymbolicMathToolbox)来实现的。Matlab符号数学工具箱是建立在功能强大的Maple软件的基础上的,当Matlab进行符号运算时,它就请求Maple软件去计算并将结果返回给Matlab。

Matlab的符号数学工具箱可以完成几乎所有得符号运算功能。主要包括:符号表达式的运算,符号表达式的复合、化简,符号矩阵的运算,符号微积分、符号作图,符号代数方程求解,符号微分方程求解等。此外,该工具箱还支持可变精度运算,即支持以指定的精度返回结果。3Matlab

符号运算特点计算以推理方式进行,因此不受计算误差累积所带来的困扰。

符号计算指令的调用比较简单,与数学教科书上的公式相近。

符号计算可以给出完全正确的封闭解,或任意精度的数值解(封闭解不存在时)。

符号计算所需的运行时间相对较长。4Matlab

符号运算举例求一元二次方程ax2+bx+c=0

的根>>

solve('a*x^2+b*x+c=0')求的根f(x)=(cos

x)2

的一次导数>>

x=sym('x');>>

diff(cos(x)^2)计算f(x)=x2

在区间[a,b]

上的定积分>>

symsabx;>>

int(x^2,a,b)5在进行符号运算时,必须先定义基本的符号对象,可以是符号常量、符号变量、符号表达式等。符号对象是一种数据结构。符号对象与符号表达式含有符号对象的表达式称为符号表达式,Matlab在内部把符号表达式表示成字符串,以与数字变量或运算相区别。符号矩阵/数组:元素为符号表达式的矩阵/数组。6

sym

函数用来建立单个符号变量,一般调用格式为:符号对象的建立:sym

和syms符号对象的建立例:>>

a=sym('a')符号变量

=

sym(A)参数A

可以是一个数或数值矩阵,也可以是字符串a

是符号变量b

是符号常量>>

b=sym(1/3)C

是符号矩阵>>

C=sym('[1ab;cd]')7符号对象的建立:sym

和syms符号对象的建立

syms

命令用来建立多个符号变量,一般调用格式为:syms符号变量1符号变量2...符号变量n例:>>

symsabc>>

a=sym('a');>>

b=sym('b');>>

c=sym('c');8符号表达式的建立:例:建立符号表达式通常有以下2种方法:(1)用sym

函数直接建立符号表达式。

(2)使用已经定义的符号变量组成符号表达式。>>

y=sym('sin(x)+cos(x)')>>x=sym('x');>>

y=sin(x)+cos(x)符号表达式的建立>>symsx;>>

y=sin(x)+cos(x)9Matlab符号运算采用的运算符和基本函数,在形状、名称和使用上,都与数值计算中的运算符和基本函数完全相同符号对象的基本运算基本运算符普通运算:+

-

*

\

/

^数组运算:.*

.\

./

.^矩阵转置:'

.'例:>>X=sym('[x11,x12;x21,x22;x31,x32]');>>

Y=sym('[y11,y12,y13;y21,y22,y23]');>>

Z1=X*Y;Z2=X'.*Y;10符号对象的基本运算sin、cos、tan、cot、sec、csc、…asin、acos、atan、acot、asec、acsc、…exp、log、log2、log10、sqrtabs、conj、real、imagrank、det、inv、eig、lu、qr、svddiag、triu、tril、expm三角函数与反三角函数、指数函数、对数函数等基本函数11查找符号表达式中的符号变量若表达式中有两个符号变量与x

的距离相等,则ASCII码大者优先。查找符号变量findsym(expr)

按字母顺序列出符号表达式expr

中的所有符号变量findsym(expr,N)

按顺序列出expr

中离x

最近的N

个符号变量常量pi,

i,

j

不作为符号变量12例:>>

f=sym('2*w-3*y+z^2+5*a')>>

findsym(f)>>

findsym(f,3)>>

findsym(f,1)findsym

举例13符号表达式的替换subs(f,x,a)用a

替换字符函数

f

中的字符变量x

a

是可以是数/数值变量/表达式或字符变量/表达式若x

是一个由多个字符变量组成的数组或矩阵,则a

应该具有与x

相同的形状的数组或矩阵。

用给定的数据替换符号表达式中的指定的符号变量14subs举例>>

f=sym('2*u');>>

subs(f,'u',2)>>

f2=subs(f,'u','u+2')>>

a=3;>>

subs(f2,'u',a+2)>>

subs(f2,'u','a+2')>>

symsxy>>

f3=subs(f,'u',x+y)>>

subs(f3,[x,y],[1,2])ans=4f2=2*(u+2)ans=14ans=2*((a+2)+2)f3=2*x+2*yans=6例:指出下面各条语句的输出结果f=2*u15符号矩阵>>

A=sym('[1+x,sin(x);5,exp(x)]')

使用sym

函数直接生成

将数值矩阵转化成符号矩阵

符号矩阵中元素的引用和修改>>

B=[2/3,sqrt(2);5.2,log(3)];>>

C=sym(B)>>

A=sym('[1+x,sin(x);5,exp(x)]');>>

A(1,2)%引用>>

A(2,2)=sym('cos(x)')%重新赋值16六类常见符号运算因式分解、展开、合并、简化及通分等计算极限计算导数计算积分符号求和代数方程和微分方程求解17因式分解因式分解factor(f)>>

symsx;f=x^6+1;>>

factor(f)

factor

也可用于正整数的分解>>

s=factor(100)>>

factor(sym('12345678901234567890'))大整数的分解要转化成符号常量18函数展开函数展开expand(f)>>

symsx;f=(x+1)^6;>>

expand(f)

多项式展开

三角函数展开>>

symsxy;f=sin(x+y);>>

expand(f)19合并同类项合并同类项collect(f,v):按指定变量v

进行合并collect(f):按默认变量进行合并>>

symsxy;

>>

f=x^2*y+y*x-x^2+2*x;>>

collect(f)>>

collect(f,y)20函数简化函数简化y=simple(f):

对f

尝试多种不同的算法进行简化,返回其中最简短的形式[How,y]=simple(f):

y

为f

的最简短形式,How中记录的为简化过程中使用的方法。fRHOW2*cos(x)^2-sin(x)^23*cos(x)^2-1simplify(x+1)*x*(x-1)x^3-xcombine(trig)x^3+3*x^2+3*x+1(x+1)^3factorcos(3*acos(x))4*x^3-3*xexpand21函数简化函数简化y=simplify(f):

对f

进行简化>>

symsx;f=sin(x)^2+cos(x)^2;>>

simplify(f)>>

symscalphabeta;

>>

f=exp(c*log(sqrt(alpha+beta)));>>

simplify(f)22函数简化举例>>

symsx;

>>

f=(1/x^3+6/x^2+12/x+8)^(1/3);>>

y1=simplify(f)>>

g1=simple(f)>>

g2=simple(g1)多次使用simple

可以达到最简表达。例:简化23分式通分函数简化[N,D]=numden(f):

N

为通分后的分子,D

为通分后的分母>>

symsxy;

>>

f=x/y+y/x;>>

[N,D]=numden(f)>>

[n,d]=numden(sym(112/1024))24horner

多项式

horner

多项式:嵌套形式的多项式>>

symsx;

>>

f=x^4+2*x^3+4*x^2+x+1;>>

g=horner(f)例:25计算极限limit(f,x,a):计算limit(f,a):当默认变量趋向于a时的极限limit(f):计算a=0时的极限limit(f,x,a,'right'):计算右极限limit(f,x,a,'left'):计算左极限例:计算,>>

symsxhn;

>>

L=limit((log(x+h)-log(x))/h,h,0)>>

M=limit((1-x/n)^n,n,inf)26计算导数g=diff(f,v):求符号表达式

f

关于

v

的导数g=diff(f):求符号表达式

f

关于默认变量的导数g=diff(f,v,n):求

f

关于

v

n阶导数

diff>>

symsx;>>

f=sin(x)+3*x^2;>>

g=diff(f,x)27计算积分int(f,v,a,b):计算定积分int(f,a,b):计算关于默认变量的定积分int(f,v):计算不定积分int(f):计算关于默认变量的不定积分>>

symsx;f=(x^2+1)/(x^2-2*x+2)^2;>>

I=int(f,x)>>

K=int(exp(-x^2),x,0,inf)例:计算和28符号求和>>

symsn;f=1/n^2;>>

S=symsum(f,n,1,inf)>>

S100=symsum(f,n,1,100)symsum(f,v,a,b):求和symsum(f,a,b):关于默认变量求和

例:计算级数及其前100项的部分和例:计算函数级数>>

symsnx;f=x/n^2;>>

S=symsum(f,n,1,inf)29代数方程求解solve(f,v):求方程关于指定自变量的解,f

可以是用字符串表示的方程、符号表达式或符号方程;

solve也可解方程组(包含非线性);得不到解析解时,给出数值解。30微分方程求解

dsolvey=dsolve('eq1','eq2',...,'cond1','cond2',...,'v')其中

y

为输出的解,

eq1、eq2、...为微分方程,

cond1、cond2、...为初值条件,v

为自变量例1:求微分方程的通解,并验证。>>

y=dsolve('Dy+2*x*y=x*exp(-x^2)','x')>>

symsx;diff(y)+2*x*y-x*exp(-x^2)31微分方程求解

几点说明如果省略初值条件,则表示求通解;如果省略自变量,则默认自变量为t

dsolve('Dy=2*x','x');%

dy/dx=2xdsolve('Dy=2*x');%dy/dt=2x若找不到解析解,则返回其积分形式。微分方程中用D

表示对自变量的导数,如:Dyy';

D2yy'';

D3yy'''32微分方程求解例2:求微分方程满足初值条件

的特解,并画出解函数的图形。>>

y=dsolve('x*Dy+y-exp(x)=0',...

'y(1)=2*exp(1)','x')>>

ezplot(y);33微分方程求解例3:求微分方程组在初值条件下的特解,并画出解函数的图形。[x,y]=dsolve('Dx+5*x+y=exp(t)','Dy-x-3*y=0',...'x(0)=1','y(0)=0','t')ezplot(x,y,[0,1.3]);注:解微分方程组时,如果所给的输出个数与方程个数相同,则方程组的解按词典顺序输出。34其它运算反函数finverse(f,v):求f

关于指定变量v

的反函数finverse(f):求f

关于默认变量的反函数>>

symsxt;f=x^2+2*t;>>

g1=finverse(f,x)>>

g2=finverse(f,t)例:计算函数的反函数35

MATLAB应用--解线性规划

36用MATLAB优化工具箱解线性规划minz=cX

1、模型:命令:x=linprog(c,A,b)

2、模型:minz=cX

命令:x=linprog(c,A,b,Aeq,beq)注意:若没有不等式:存在,则令A=[],b=[].373、模型:minz=cX

VLB≤X≤VUB命令:[1]x=linprog(c,A,b,Aeq,beq,VLB,VUB)

[2]x=linprog(c,A,b,Aeq,beq,VLB,VUB,X0)

注意:[1]若没有等式约束:,则令Aeq=[],beq=[].[2]其中X0表示初始点4、命令:[x,fval]=linprog(…)返回最优解x及x处的目标函数值fval.38解编写M文件xxgh1.m如下:c=[-0.4-0.28-0.32-0.72-0.64-0.6];A=[0.010.010.010.030.030.03;0.02000.0500;00.02000.050;000.03000.08];b=[850;700;100;900];

Aeq=[];beq=[];

vlb=[0;0;0;0;0;0];vub=[];[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)

39解:编写M文件xxgh2.m如下:

c=[634];A=[010];b=[50];

Aeq=[111];

beq=[120];

vlb=[30,0,20];

vub=[];[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)40

MATLAB应用—

解非线性规划

41一、二次规划(QuadraticProgram)

概念42二、Matlab中求解二次规划4344转化为matlab求解格式:4546定义

如果目标函数或约束条件中至少有一个是非线性函数,则最优化问题就叫做非线性规划问题.四、非线性规划的基本概念一般形式:

(1)其中,是定义在Rn

上的实值函数()n

TnRxxxXÎ=,,,21L()()ïîïíì===³.,...,2,1

0

m;1,2,...,

0..

ljXhiXgtsji47Matlab求解非线性规划问题

其中X为n维变元向量,G(X)与Ceq(X)均为非线性函数组成的向量。48

1.首先建立M文件fun.m,用来定义目标函数F(X):functionf=fun(X);f=F(X);MATLAB求解上述问题,基本步骤分三步493.建立主程序.求解非线性规划的函数是fmincon,命令的基本格式如下:

(1)x=fmincon(‘fun’,X0,A,b)

(2)x=fmincon(‘fun’,X0,A,b,Aeq,beq)

(3)x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB)

(4)x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’)(5)x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’,options)

(6)[x,fval]=fmincon(…)

(7)[x,fval,exitflag]=fmincon(…)(8)[x,fval,exitflag,output]=fmincon(…)输出极值点M文件迭代的初值参数说明变量上下限fmincon函数可能会给出局部最优解,这与初值X0的选取有关.501.写成标准形式:

s.t.

2x1+3x26

s.t.

x1+4x25

x1,x20例512.先建立M-文件fun3.m:

functionf=fun3(x);f=-x(1)-2*x(2)+(1/2)*x(1)^2+(1/2)*x(2)^23.再建立主程序youh2.m:

x0=[1;1];A=[23;14];b=[6;5];

Aeq=[];beq=[];VLB=[0;0];VUB=[];[x,fval]=fmincon('fun3',x0,A,b,Aeq,beq,VLB,VUB)4.运算结果为:

x=0.76471.0588fval=-2.0294521.先建立M文件fun4.m定义目标函数:

functionf=fun4(x);f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);

x1+x2=0

s.t.1.5+x1x2-x1-x20

-x1x2–10

0例

2.再建立M文件mycon.m定义非线性约束:

function[g,ceq]=mycon(x)g=[x(1)+x(2);1.5+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10];533.主程序youh3.m为:x0=[-1;1];A=[];b=[];Aeq=[11];beq=[0];vlb=[];vub=[];[x,fval]=fmincon('fun4',x0,A,b,Aeq,beq,vlb,

vub,'mycon')4.运算结果为:

x=-1.22501.2250fval=1.895154例1.先建立M文件fun.m定义目标函数:functionf=fun(x);f=-2*x(1)-x(2);2.再建立M文件mycon2.m定义非线性约束:function[g,ceq]=mycon2(x)g=[x(1)^2+x(2)^2-25;x(1)^2-x(2)^2-7];

553.主程序fxx.m为:

x0=[3;2.5];VLB=[00];VUB=[510];[x,fval,exitflag,output]=fmincon('fun',x0,[],[],[],[],VLB,VUB,'mycon2')56

MATLAB应用—

微分方程解法

57要求目的主要内容2、学会用Matlab求微分方程的数值解.1、学会用Matlab求简单微分方程的解析解.1、求简单微分方程的解析解.2、求微分方程的数值解.58求微分方程的数值解(一)常微分方程数值解的定义(二)建立数值解法的一些途径(三)用Matlab软件求常微分方程的数值解返回59微分方程的解析解求微分方程(组)的解析解命令:dsolve(‘方程1’,‘方程2’,…‘方程n’,‘初始条件’,‘自变量’)结果:u=tg(t-c)60解输入命令:y=dsolve('D2y+4*Dy+29*y=0','y(0)=0,Dy(0)=15','x')结果为:y=3e-2xsin(5x)61解输入命令:

[x,y,z]=dsolve('Dx=2*x-3*y+3*z','Dy=4*x-5*y+3*z','Dz=4*x-4*y+2*z','t');

x=simple(x)%将x化简

y=simple(y)z=simple(z)结果为:x=(c1-c2+c3+c2e-3t-c3e-3t)e2t

y=-c1e-4t+c2e-4t+c2e-3t-c3e-3t+c1-c2+c3)e2tz=(-c1e-4t+c2e-4t+c1-c2+c3)e2t

62微分方程的数值解(一)常微分方程数值解的定义

在生产和科研中所处理的微分方程往往很复杂且大多得不出一般解。而在实际上对初值问题,一般是要求得到解在若干个点上满足规定精确度的近似值,或者得到一个满足精确度要求的便于计算的表达式。因此,研究常微分方程的数值解法是十分必要的。63(二)建立数值解法的一些途径1、用差商代替导数

若步长h较小,则有故有公式:此即欧拉法。642、使用数值积分对方程y’=f(x,y),两边由xi到xi+1积分,并利用梯形公式,有:实际应用时,与欧拉公式结合使用:此即改进的欧拉法。故有公式:653、使用泰勒公式

以此方法为基础,有龙格-库塔法、线性多步法等方法。4、数值公式的精度当一个数值公式的截断误差可表示为O(hk+1)时(k为正整数,h为步长),称它是一个k阶公式。k越大,则数值公式的精度越高。欧拉法是一阶公式,改进的欧拉法是二阶公式。龙格-库塔法有二阶公式和四阶公式。线性多步法有四阶阿达姆斯外插公式和内插公式。66(三)用Matlab软件求常微分方程的数值解[t,x]=solver(’f’,ts,x0,options)ode45ode23ode113ode15sode23s由待解方程写成的m-文件名ts=[t0,tf],t0、tf为自变量的初值和终值函数的初值ode23:组合的2/3阶龙格-库塔-芬尔格算法ode45:运用组合的4/5阶龙格-库塔-芬尔格算法自变量值函数值用于设定误差限(缺省时设定相对误差10-3,绝对误差10-6),命令为:options=odeset(’reltol’,rt,’abstol’,at),rt,at:分别为设定的相对误差和绝对误差.67

1、在解n个未知函数的方程组时,x0和x均为n维向量,m-文件中的待解方程组应以x的分量形式写成.

2、使用Matlab软件求数值解时,高阶微分方程必须等价地变换成一阶微分方程组.注意:68解:令y1=x,y2=y1’1、建立m-文件vdp1000.m如下:

function

dy=vdp1000(t,y)dy=zeros(2,1);dy(1)=y(2);dy(2)=1000*(1-y(1)^2)*y(2)-y(1);

2、取t0=0,tf=3000,输入命令:

[T,Y]=ode15s('vdp1000',[03000],[20]);plot(T,Y(:,1),'-')3、结果如图69解

1、建立m-文件rigid.m如下:

function

dy=rigid(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);2、取t0=0,tf=12,输入命令:

[T,Y]=ode45('rigid',[012],[011]);plot(T,Y(:,1),'-',T,Y(:,2),'*',T,Y(:,3),'+')3、结果如图图中,y1的图形为实线,y2的图形为“*”线,y3的图形为“+”线.70Matlab的应用

-----------插值和拟合71拉格朗日插值分段线性插值三次样条插值一维插值一、插值的定义二、插值的方法三、用Matlab解插值问题72一维插值的定义已知n+1个节点其中互不相同,不妨设求任一插值点处的插值节点可视为由产生,,表达式复杂,,或无封闭形式或未知73构造一个(相对简单的)函数通过全部节点,即再用计算插值,即74用MATLAB作插值计算一维插值函数:yi=interp1(x,y,xi,'method')插值方法被插值点插值节点xi处的插值结果‘nearest’

:最邻近插值‘linear’

:线性插值;‘spline’

:三次样条插值;‘cubic’

:立方插值。缺省时:分段线性插值。注意:所有的插值方法都要求x是单调的,并且xi不能够超过x的范围。75例:在1-12的11小时内,每隔1小时测量一次温度,测得的温度依次为:5,8,9,15,25,29,31,30,22,25,27,24。试估计每隔1/10小时的温度值。hours=1:12;temps=[589152529313022252724];h=1:0.1:12;t=interp1(hours,temps,h,'spline');(直接输出数据将是很多的)plot(hours,temps,'+',h,t,hours,temps,'r:')%作图xlabel('Hour'),ylabel('DegreesCelsius’)76拟合2.拟合的基本原理1.拟合问题引例77拟合问题引例1温度t(0C)20.532.751.073.095.7电阻R()7658268739421032已知热敏电阻数据:求600C时的电阻R。

R=at+ba,b为待定系数78拟合问题引例2

t(h)0.250.511.523468c(g/ml)19.2118.1515.3614.1012.899.327.455.243.01已知一室模型快速静脉注射下的血药浓度数据(t=0注射300mg)求血药浓度随时间的变化规律c(t).作半对数坐标系(semilogy)下的图形79曲线拟合问题的提法已知一组(二维)数据,即平面上n个点(xi,yi)i=1,…n,

寻求一个函数(曲线)y=f(x),

使f(x)

在某种准则下与所有数据点最为接近,即曲线拟合得最好。

+++++++++xyy=f(x)(xi,yi)ii为点(xi,yi)与曲线y=f(x)的距离80拟合与插值的关系函数插值与曲线拟合都是要根据一组数据构造一个函数作为近似,由于近似的要求不同,二者的数学方法上完全不同。实例:下面数据是某次实验所得,希望得到x和

f之间的关系?问题:给定一批数据点,需确定满足特定要求的曲线或曲面解决方案:若不要求曲线(面)通过所有数据点,而是要求它反映对象整体的变化趋势,就是数据拟合,又称曲线拟合或曲面拟合。若要求所求曲线(面)通过所给所有数据点,就是插值问题;81曲线拟合问题最常用的解法——线性最小二乘法的基本思路第一步:先选定一组函数

r1(x),r2(x),…rm(x),m<n,

f(x)=a1r1(x)+a2r2(x)+…+amrm(x)(1)其中

a1,a2,…am

为待定系数。

第二步:确定a1,a2,…am

的准则(最小二乘准则):使n个点(xi,yi)与曲线y=f(x)的距离i的平方和最小

。记

问题归结为,求

a1,a2,…am

使

J(a1,a2,…am)

最小。82线性最小二乘法的求解:预备知识超定方程组:方程个数大于未知量个数的方程组即Ra=y其中超定方程一般是不存在解的矛盾方程组。如果有向量a使得达到最小,则称a为上述超定方程的最小二乘解。

83线性最小二乘法的求解定理:当RTR可逆时,超定方程组(3)存在最小二乘解,

且即为方程组

RTRa=RTy------正则(正规)方程组的解:a=(RTR)-1RTy所以,曲线拟合的最小二乘法要解决的问题,实际上就是求以下超定方程组的最小二乘解的问题。其中Ra=y(3)84用MATLAB解拟合问题1、线性最小二乘拟合2、非线性最小二乘拟合85用MATLAB作线性最小二乘拟合1.作多项式f(x)=a1xm+…+amx+am+1拟合,可利用已有程序:a=polyfit(x,y,m)2.对超定方程组可得最小二乘意义下的解。,用3.多项式在x处的值y的计算命令:y=polyval(a,x)输出拟合多项式系数a=[a1,…,am,am+1]’

(数组)输入同长度数组X,Y拟合多项式

次数86即要求出二次多项式:中的使得:例对下面一组数据作二次多项式拟合871)输入命令:x=0:0.1:1;y=[-0.447,1.978,3.28,6.16,7.08,7.34,7.66,9.56,9.48,9.30,11.2];R=[(x.^2)',x',ones(11,1)];

A=R\y'解法1.解超定方程的方法2)计算结果:A=[-9.8108,20.1293,-0.0317]882)计算结果:A=[-9.8108,20.1293,-0.0317]解法2.用多项式拟合的命令MATLAB(zxec2)1)输入命令:x=0:0.1:1;y=[-0.447,1.978,3.28,6.16,7.08,7.34,7.66,9.56,9.48,9.30,11.2];A=polyfit(x,y,2)z=polyval(A,x);plot(x,y,'k+',x,z,'r')%作出数据点和拟合曲线的图形891.lsqcurvefit已知数据点:xdata=(xdata1,xdata2,…,xdatan)

ydata=(ydata1,ydata2,…,ydatan)用MATLAB作非线性最小二乘拟合两个求非线性最小二乘拟合的函数:lsqcurvefit、lsqnonlin。相同点和不同点:两个命令都要先建立M-文件fun.m,定义函数f(x),但定义f(x)的方式不同,请参考例题。

lsqcurvefit用以求含参量x(向量)的向量值函数F(x,xdata)=(F(x,xdata1),…,F(x,xdatan))T中的参变量x(向量),使得90输入格式:(1)x=lsqcurvefit(‘fun’,x0,xdata,ydata);(2)x=lsqcurvefit(‘fun’,x0,xdata,ydata,lb,ub);

(3)x=lsqcurvefit(‘fun’,x0,xdata,ydata,lb,ub,options);(4)[x,options]=lsqcurvefit(‘fun’,x0,xdata,ydata,…);(5)[x,options,funval]=lsqcurvefit(‘fun’,x0,xdata,ydata,…);(6)[x,options,funval,Jacob]=lsqcurvefit(‘fun’,x0,xdata,ydata,…);fun是一个事先建立的定义函数F(x,xdata)

的M-文件,自变量为x和xdata说明:x=lsqcurvefit(‘fun’,x0,xdata,ydata,options);迭代初值已知数据点选项见无约束优化91

lsqnonlin用以求含参量x(向量)的向量值函数

f(x)=(f1(x),f2(x),…,fn(x))T

中的参量x,使得

最小。其中fi(x)=f(x,xdatai,ydatai)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论