matlab中的norm函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab中的norm函数相关的知识,希望对你有一定的参考价值。

以下是一段求最值的程序,对这步 d=g1(1,1)^2+g1(2,1)^2;g1是个求出来的矩阵,我想直接用d=norm(g1)来求,该怎么求,该问题有们仁兄回答过,但他只是把d由符号转成数值了。
clc;clear
f='4*(m-5)^2+(n-6)^2';
x0=[1;1];
m=x0(1,1);n=x0(2,1);
fx=diff(f,'m');%对x求偏导数
fy=diff(f,'n');%对y求偏导数
g=[fx;fy];%梯度
g0=subs(g);%把符号变量转为数值
d0=(-g0);
for k=0:10
syms a ww
x1=x0+a*d0;
m=x1(1,1);n=x1(2,1);
a=solve(diff(subs(f)),'a');
x1=subs(x1);
m=x1(1,1);n=x1(2,1);
g1=subs(g);
c=g0(1,1)^2+g0(2,1)^2;
d=g1(1,1)^2+g1(2,1)^2;
b=d/c;
if subs(d)<0.0001
k%输出叠代次数
break;
else
d1=-g1+b*d0;
x0=x1;d0=d1;
clear a;
end
end
x1%最小点坐标
min=4*(m-5)^2+(n-6)^2

norm好像只能处理数值型的变量,符号型的不行。所以要用norm就必须把g1转换为数值型,这样反而会带来误差,还是不要用的好。

A为矩阵

norm(A)/norm(A,2),返回的是矩阵A的二范数,(二范数j就是矩阵A的2范数就是A的转置矩阵乘以A特征根 最大值的开根号)

norm(A,1),返回矩阵的1泛数,就是最大一列的和;

norm(A,'inf') 返回矩阵的无穷泛数,也就是最大一行的和;

norm(A,'fro') 返回矩阵的Frobenius范数。

扩展资料:

如果A为向量

norm(A,p)

返回向量A的p范数。即返回 sum(abs(A).^p)^(1/p),对任意 1<p<+∞.

norm(A)

返回向量A的2范数,即等价于norm(A,2)。

norm(A,inf)

返回max(abs(A))

norm(A,-inf)

返回min(abs(A))

参考资料来源:百度百科-norm()

参考技术A norm好像只能处理数值型的变量,符号型的不行。
所以要用norm就必须把g1转换为数值型,这样反而会带来误差,还是不要用的好。
参考技术B 帮你修改好了:
clc;clear
f='4*(m-5)^2+(n-6)^2';
x0=[1;1];
m=x0(1,1);n=x0(2,1);
fx=diff(f,'m');%对x求偏导数
fy=diff(f,'n');%对y求偏导数
g=[fx;fy];%梯度
g0=subs(g);%把符号变量转为数值
d0=(-g0);
for
k=0:10
syms
a
ww
x1=x0+a*d0;
m=x1(1,1);n=x1(2,1);
a=solve(diff(subs(f)),'a');
x1=subs(x1);
m=x1(1,1);n=x1(2,1);
g1=subs(g);
c=g0(1,1)^2+g0(2,1)^2;
d=g1(1,1)^2+g1(2,1)^2;%这个用NORM求解就不行,为什么,怎么改
norm(eval(d))
b=d/c;
if
subs(d)<0.0001
k%输出叠代次数
break;
else
d1=-g1+b*d0;
x0=x1;d0=d1;
clear
a;
end
end
x1%最小点坐标
min=4*(m-5)^2+(n-6)^2
这是运行结果:
ans
=
58.8353
ans
=
0
k
=
1
x1
=
5
6
min
=
0
>>
参考技术C 1、A为矩阵

norm(A)/norm(A,2),返回的是矩阵A的二范数,(二范数j就是矩阵A的2范数就是 A的转置矩阵乘以A特征根 最大值的开根号)
norm(A,1),返回矩阵的1泛数,就是最大一列的和;
norm(A,'inf') 返回矩阵的无穷泛数,也就是最大一行的和;
norm(A,'fro') 返回矩阵的Frobenius范数。
2、A为向量
norm(A,p) 返回向量A的p范数。即返回 sum(abs(A).^p)^(1/p),对任意 1<p<+∞.
norm(A) 返回向量A的2范数,即等价于norm(A,2)。
norm(A,inf) 返回max(abs(A))
norm(A,-inf) 返回min(abs(A))

matlab中的norm( )是啥函数?

norm(A)是求矩阵或者向量A的范数。
例如:
A
=
[3
4];
norm(A)
ans
=
5
然后dot()是向量乘法,
DOT(A,B)
is
the
same
as
A'*B
例如:
A
=
[3
4];
B
=
[1
1];
C
=
dot(A,B)
C
=
7
所以你的dot(norm(A))应该会少了一个dot参数,只能是相当于norm(A)

扩展资料:
matlab中norm函数的用法
格式:n=norm(A,p)
功能:norm函数可计算几种不同类型的矩阵范数,根据p的不同可得到不同的范数
1、如果A为矩阵
n=norm(A)
返回A的最大奇异值,即max(svd(A))
n=norm(A,p)
根据p的不同,返回不同的值
p:返回值
1:返回A中最大一列和,即max(sum(abs(A)))
2:返回A的最大奇异值,和n=norm(A)用法一样
inf:返回A中最大一行和,即max(sum(abs(A’)))
‘fro’
A和A‘的积的对角线和的平方根,即sqrt(sum(diag(A'*A)))
2、如果A为向量
norm(A,p)
返回向量A的p范数。即返回
sum(abs(A).^p)^(1/p),对任意
1

评论
0

0

0

加载更多
参考技术A norm(A,p)
当A是向量时
norm(A,p) Returns sum(abs(A).^p)^(1/p), for any 1 <= p <= ∞.
norm(A) Returns norm(A,2)
norm(A,inf) Returns max(abs(A)).
norm(A,-inf) Returns min(abs(A)).

当A是矩阵时
n = norm(A) returns the largest singular value of A, max(svd(A))
n = norm(A,1) The 1-norm, or largest column sum of A, max(sum(abs(A)).
n = norm(A,2) The largest singular value (same as norm(A)).
n = norm(A,inf) The infinity norm, or largest row sum of A, max(sum(abs(A')))
n = norm(A,'fro') The Frobenius-norm of matrix A, sqrt(sum(diag(A'*A))).
参考技术B 求范数的。
无穷范数或2-范数。本回答被提问者采纳
参考技术C norm( )含义是欧氏长度

以上是关于matlab中的norm函数的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB中norm函数

matlab中的norm是啥函数

matlab中的norm是啥函数

matlab 中norm函数是啥意思

常见向量范数和矩阵范数

向量与矩阵的范数及其在matlab中的用法(norm)