matlab experiment<4>

目录

 1,多项式计算

1,polyval求值

2,roots求根

3,conv多项式乘法

求下列多项式的所有根,并进行验算。(请按题号标注习题解答)

 2,求函数零点

0,函数的定义

1,inline创建内联函数

2,fzero求非线性函数零点

2,范围零点

 3,fsolve

 3,求解非线性方程组

 4,求极值点

1,fminbnd查找单变量函数在定区间上的最小值

2,fminsearch使用无导数法计算无约束的多变量函数的最小值

5,曲线拟合 

向量模计算mol=norm(v)

polyfit


 1,多项式计算

1,polyval求值

y=polyval(p,x)

p:多项式系数;x:x的取值

2,roots求根

r=roots(p)

3,conv多项式乘法

p1=conv(p,q)//p*q=p1

求下列多项式的所有根,并进行验算。(请按题号标注习题解答)

 

 

 

p=[1 1 1];
//求根
     x=roots(p)
//验算
     polyval(p,x) 
(2)roots([3 0 -4 0 2 -1])
(3)p=zeros(1,24);

     p([1 17 18 22])=[5 -6 8 -5]; %这样比直接写24个系数简短。

     x=roots(p)
polyval(p,x) %验算,结果应为零
(4)p1=[2 3];

     p2=conv(p1, p1);

     p3=conv(p1, p2);

     p3(end)=p3(end)-4; %原p3最后一个分量-4

     x=roots(p3)

     polyval(p3,x) %验算,结果应为零

 2,求函数零点

0,函数的定义

fun=@(x)表达式;

1,inline创建内联函数

clc,clear
x=1;alpha=pi/6
f = inline('sin(alpha*x)')
f(x,alpha)
>>f =
     Inline function:
     f(alpha,x) = sin(alpha*x)

>>ans=0.5

2,fzero求非线性函数零点

可以通过plot画图求出零点大概位置

1,附近零点

fun = @cos; % function
x0 = 3; % 3附近零点
x = fzero(fun,x0)

2,范围零点

fun = @cos; % function

x0 = [1 2]; % initial interval

x = fzero(fun,x0)

 3,fsolve

和fzero 用法几乎一致

部分不可导的函数不能使用fzero这时候可以使用fsolve

[x,fvalue,exitflag]=fsolve(fun,[0 0 0])  

 

2. 求方程

的正根

 

 

clear all;clc;

fun=@(x)x.*log(sqrt(x.^2-1)+x)-sqrt(x.^2-1)-0.5*x;

fplot(fun,[1,3]);

grid on;
//看图可知零点在2.1附近

x= fsolve(fun,2.1)

 法二:

fun=inline('x*log(sqrt(x^2-1)+x)-sqrt(x^2-1)-0.5*x');

fzero(fun,2.1) %注意定义域,初值须大于1

 3,求解非线性方程组

 

5. 求解下列非线性方程组在原点附近的根

    

 

 

fun=inline('[9*x(1)^2+36*x(2)^2+4*x(3)^2-36;x(1)^2-2*x(2)^2-20*x(3);16*x(1)-x(1)^3-2*x(2)^2-16*x(3)^2]','x');

[x,fvalue,exitflag]=fsolve(fun,[0 0 0])

 4,求极值点

1,fminbnd查找单变量函数在定区间上的最小值

 [x,fval] = fminbnd(fun,x1,x2)

在[x1,x2]之间求解fun的局部最小值

2,fminsearch使用无导数法计算无约束的多变量函数的最小值

 [x,fval] = fminsearch(fun,x0)

在x0附近求解fun的局部最小值

8. 作出下列函数图形,观察所有的局部极大, 局部极小和全局最大, 全局最小值点的粗略位置; 并用MATLAB函数fminbnd和fminsearch求各极值点的确切位置

 

 

clear;clc;
fun = @(x)x.^2.*sin(x.^2-x-2);
fplot(fun,[-2,2]);grid on;
//观察得局部极大的粗略位置x0=-1.5,0
//局部极小粗略位置x0=-2,-0.5,1.5
//全局最大粗略位置x0=-1.5
//全局最小的粗略位置x0=-2
[x(1),f(1)] = fminbnd(fun,-2,-1.5);//局部极小值
[x(2),f(2)] = fminsearch(fun,-0.7);//局部极小值
[x(3),f(3)] = fminsearch(fun,1.5);//局部极小值
fun2 = @(x)-x.^2.*sin(x.^2-x-2);
//用函数取负的方法同理求出极大值
[x(4),f(4)] = fminbnd(fun,-1.7,-1.2);//局部极大值
[x(5),f(5)] = fminsearch(fun,0);//局部极大值
%输出部分
disp([x(1),x(2),x(3)]);//局部极小值
disp([x(4),x(5)]);//局部极小值
//从极值中进一步筛选
x(find(f==min(f)))//全局最小值
x(find(f==max(f)))//全局最大值

9. 考虑函数

(1)作出

在的图,观察极值点的位置; 

(2) 用MATLAB函数fminsearch求极值点和极值。

 

close;

x=-2:0.1:1;y=-7:0.1:1;

[x,y]=meshgrid(x,y);

z=y.^3/9+3*x.^2.*y+9*x.^2+y.^2+x.*y+9;

mesh(x,y,z);grid on;%作图观察, 可看到[0 0]附近极小值,[0 -5]附近极大值

fun=@(x)x(2)^3/9+3*x(1)^2*x(2)+9*x(1)^2+x(2)^2+x(1)*x(2)+9;

x=fminsearch(fun,[0 0])%求极小值

fun2=inline('-(x(2)^3/9+3*x(1)^2*x(2)+9*x(1)^2+x(2)^2+x(1)*x(2)+9)');

x=fminsearch(fun2,[0 -5])%求极大值

[

x(1):x

x(2):y

]

5,曲线拟合 

向量模计算mol=norm(v)

polyfit

p= polyfit(x,y,n) 返回次数为 n 的多项式 p(x) 的系数

10. 假定某天的气温变化记录如第二章习题5,试用最小二乘方法找出这一天的气温变化规律。考虑下列类型函数, 作图比较效果,并比较误差平方和的大小。

(1) 二次函数;

(2) 三次函数;

(3) 钟形函数

 

 

 (1)

clear;
t=0:24;

c=[15 14 14 14 14 15 16 18 20 22 23 25 28 ...

    31 32 31 29 27 25 24 22 20 18 17 16];
p2=polyfit(t,c,2)

norm(c-polyval(p2,t))^2%误差平方和,反映拟合效果

 (4)

%第(4)小题

fun2=@(b,t)b(1)*sin(pi/12*t+b(2))+20;

b=lsqcurvefit(fun2,[0 0],t,c)%初值可以试探,这里用a=0, b=0试探

figure

f2=feval(fun2, b,t);

norm(f2-c)^2%拟合效果

plot(t,c,'o',t,f2) %作图检验

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值