声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1556|回复: 8

[编程技巧] 形如 f(x)=(x1-x2)^2+(x2-x3)^2+......+(x200-x201)^2 的函数如何表示

[复制链接]
发表于 2007-10-12 20:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我刚自学matlab,遇到以下问题:
f(x)=(x1-x2)^2+(x2-x3)^2+......+(x200-x201)^2这种函数怎么在matlab中写出来!
请高人指教!:'(

[ 本帖最后由 eight 于 2007-10-12 23:08 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-10-12 20:55 | 显示全部楼层
看上去怎么有点像正定矩阵的多项式展开

好像这样x*A*x'=x1^2+x2^2+...+xn^2
 楼主| 发表于 2007-10-13 09:24 | 显示全部楼层
那如果是这样的式子呢:f(x)=1/((x1-x2)^2+(y1-y2)^2)+1/((x2-x3)^2+(y2-y3)^2)+......+1/((x200-x201)^2+(y200-y201)^2)
发表于 2007-10-13 18:08 | 显示全部楼层
  1. n=201;%定义变量个数
  2. x=sym(ones(1,n));y=sym(ones(1,n));%给符号变量矩阵x,y赋初值
  3. for ii=1:n
  4.     x(ii)=['x' num2str(ii)];%定义符号变量的形式为x1,...,xn
  5. end
  6. for ii=1:n
  7.     y(ii)=['y' num2str(ii)];%定义符号变量的形式为y1,...,yn
  8. end
  9. fx=1/(x(1)-x(2))^2+1/(y(1)-y(2))^2;%给符号变量fx赋初值
  10. %利用循环表示出f(x)=1/((x1-x2)^2+(y1-y2)^2)+1/((x2-x3)^2+(y2-y3)^2)+......+1/((x200-x201)^2+(y200-y201)^2)
  11. for ii=2:200
  12.     fx=fx+1/(x(ii)-x(ii+1))^2+1/(y(ii)-y(ii+1))^2;
  13. end
复制代码

参看我昨天发的帖子:http://www.chinavib.com/forum/thread-53077-1-1.html

[ 本帖最后由 ling0 于 2007-10-13 18:09 编辑 ]

评分

1

查看全部评分

 楼主| 发表于 2007-10-14 17:14 | 显示全部楼层
我已经写出来了,和楼上的差不多。
谢谢大家的帮助!
发表于 2007-10-14 22:02 | 显示全部楼层

回复 #5 pingpang 的帖子

最好能把你写的结果帖上来和大家分享:@)
 楼主| 发表于 2007-10-15 10:26 | 显示全部楼层
我的编完这个样子的。
n=108;              %定义变量个数
x=sym(ones(1,n));   %给符号变量矩阵x,y,z,f赋初值
y=sym(ones(1,n));
z=sym(ones(1,n));
f=sym(ones(1,n));
for ii=1:n;
    x(ii)=['x' num2str(ii)];
    y(ii)=['y' num2str(ii)];)];     %定义符号变量的形式
    z(ii)=['z' num2str(ii)];
end
for kk=1:107;
         f(kk)=1/((x(kk)-x(kk+1)).^2+(y(kk)-y(kk+1)).^2+ (z(kk)-z(kk+1)).^2)^12-1/((x(kk)-x(kk+1)).^2+(y(kk)-y(kk+1)).^2+ (z(kk)-z(kk+1)).^2)^6;
end
fxyz=sum(f);
我现在不知道继续该怎么办了,因为一开始我是要用steepest descent方法,在给定初值的情况下求这个函数的局部极小值(现在是符号形式),感觉是满头雾水,请高人指点一下,我是不是走错方向了?
发表于 2007-10-23 11:50 | 显示全部楼层
利用subs,符号形式都可以用来计算数值解。
举个简单的例子:

  1. syms x y z
  2. fx=x^2+1/y+sin(z);
  3. fx_value=subs(fx,{x,y,z},{1,2,3});
复制代码

上面的代码求的是x^2+1/y+sin(z)在x=1,y=2,z=3的函数值。
你上面得到了fxyz的符号形式,如果知道了x,y,z的值,就可以求fxyz的值

评分

1

查看全部评分

发表于 2007-10-23 13:09 | 显示全部楼层

回复 #7 pingpang 的帖子

要相信自己,思路不错方向一般也不会错。只是走没走弯路的问题
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-18 16:44 , Processed in 0.082874 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表