声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2467|回复: 7

[分形与混沌] 求助:用什么命令可以解决方程个数比未知量多的情形

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

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

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

x
多谢!
回复
分享到:

使用道具 举报

发表于 2007-2-9 12:31 | 显示全部楼层
超定方程,一般求最小二乘解

不知道你说的命令是什么意思?
 楼主| 发表于 2007-2-9 15:42 | 显示全部楼层

回复 #2 MVH 的帖子

solve命令可以解未知数和方程个数相等的方程组,但是若不相等,就会出现报错信息。
所以我是想问一下有没有那样的命令,可以直接解这种情形。

用最小二乘法怎么做?谢谢你!
 楼主| 发表于 2007-2-11 11:19 | 显示全部楼层

回复 #3 zcf20066 的帖子

请问对方程个数有限制吗?我看了论坛里以前介绍的最小二乘法,可是换成我的问题就不行了,
我那个问题有13个方程,12个未知数,是不是因为太多了。
程序如下,望高手赐教:
function myfun(x)

h=zeros(1,14);
h(1)=0.003792658534;h(2)=-0.001481225915;h(3)=-0.017870431651;h(4)=0.043155452582;
h(6)=-0.070078291222;h(7)=0.024665659489;h(8)=0.758162601964;h(9)=1.085782709814;
h(5)=0.096014767936;h(10)=0.408183939725;h(11)=-0.198056706807;h(12)=-0.152463871896;
h(13)=0.005671342686;h(14)=0.014521394762;
g=zeros(1,14);a=zeros(1,13);
g=sqrt(2)/2*h;
for n=1:13
    for i=1:14-n
        a(n)=a(n)+2*g(i)*g(i+n);
    end
end
F=[2*(x(2)+1/2*(a(1)*(x(1)+x(3))+a(3)*(x(5)-x(1))+a(5)*(x(7)-x(3))+a(7)*(x(9)-x(5))+a(9)*(x(11)-x(7))+a(11)*(-x(9))+a(13)*(-x(11))))-x(1);
2*(x(4)+1/2*(a(1)*(x(3)+x(5))+a(3)*(x(7)+x(1))+a(5)*(x(9)-x(1))+a(7)*(x(11)-x(3))+a(9)*(-x(5))+a(11)*(-x(7))+a(13)*(-x(9))))-x(2);
2*(x(6)+1/2*(a(1)*(x(7)+x(5))+a(3)*(x(9)+x(3))+a(7)*(x(11)+x(1))+a(9)*(-x(1))+a(11)*(-x(3))+a(13)*(-x(5))))-x(3);
2*(x(8)+1/2*(a(1)*(x(9)+x(7))+a(3)*(x(11)+x(5))+a(5)*(x(3))+a(9)*x(1)+a(11)*(-x(1))+a(13)*(-x(3))))-x(4);
2*(x(10)+1/2*(a(1)*(x(9)+x(11))+a(3)*x(7)+a(5)*x(5)+a(7)*x(3)+a(9)*x(1)+a(11)*(-x(1))+a(13)*(-x(3))))-x(5);
2*(x(12)+1/2*(a(1)*x(11)+a(3)*x(9)+a(5)*x(7)+a(7)*x(5)+a(7)*x(3)+a(9)*x(1)+a(11)*(-x(1))+a(13)*(-x(3))))-x(6);
a(3)*x(11)+a(5)*x(9)+a(7)*x(7)+a(9)*x(5)+a(11)*x(3)+a(13)*x(1)-x(7);
a(5)*x(11)+a(7)*x(9)+a(9)*x(7)+a(11)*x(5)+a(13)*x(3)-x(8);
a(7)*x(11)+a(9)*x(9)+a(11)*x(7)+a(13)*x(5)-x(9);
a(9)*x(11)+a(11)*x(9)+a(13)*x(7)-x(10);
a(11)*x(11)+a(13)*x(9)-x(11);
x(12)-a(13)*x(11);
x(1)+2*x(2)+3*x(3)+4*x(4)+5*x(5)+6*x(6)+7*x(7)+8*x(8)+9*x(9)+10*x(10)+11*x(11)+12*x(12)+1/2];
发表于 2007-2-11 19:28 | 显示全部楼层
可以用你的所有的方程建一个准则函数,如J(x)=f1(x)^2+f2(x)^2+...f3(x)^2,再用optimization工具箱解无约束的优化问题阿,方法很多的,可以用梯度,也可以用拟牛顿,工具箱里有直接求解的函数,很方便的
发表于 2007-2-19 22:22 | 显示全部楼层
呵呵,方程有点难,做什么的?
发表于 2007-3-3 03:14 | 显示全部楼层
原帖由 zcf20066 于 2007-2-9 15:42 发表
solve命令可以解未知数和方程个数相等的方程组,但是若不相等,就会出现报错信息。
所以我是想问一下有没有那样的命令,可以直接解这种情形。

用最小二乘法怎么做?谢谢你!


solve和fsolve只能解适定问题
发表于 2007-3-3 03:17 | 显示全部楼层
超定非线性方程组可以用五楼提到的优化算法进行求解

也可以用牛顿类算法来求解,即将牛顿类迭代算法和最小二乘原理
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-20 12:23 , Processed in 0.095262 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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