用matlab 微分方程组如何求解多元一次方程组的...

Matlab解多元非线性方程,有20个未知变量需要求解,但是测出的参数组有60对,所以想找最优解,如何处理
Matlab解多元非线性方程,有20个未知变量需要求解,但是测出的参数组有60对,所以想找最优解,如何处理
方程是k=f(x,y,z)形式,其中参数是20个未知变量,从a1到a20,是多元非线性方程(最高三次方),通过实验测出的已知数据组([x,y,z],k)有60对,远远大于未知量的个数,所以我想寻找最优解组,使得按照这个最优解组写成的方程式f&(x,y,z)带入[x,y,z]后的计算结果k&与k的误差为10e-4量级(越小越好),哪位给讲讲怎么个迭代求解和约束法,或者别的方法,我matlab学的很不好,后悔当年浪费的时光……我一共5个金币,不好意思了不能付金币了,实在抱歉
你有60组数据,就是有x ,y,z,k 四个数据,每个数据长度都是60首先设置一个匿名函数fun,这里以k=a1*x*y+a2*y*z+a3*z*x为例子fun=@(a,in) a(1).*in(:,1).*in(:,2)+a(2).*in(:,2).*in(:,3)+a(3).*in(:,3).*in(:,1);用a(n)去代替需要拟合的第n个参数,用in(,:1)代替x,in(,:2)代替y,in(,:3)代替z根据你自己的函数形式,写好这个函数,记住乘除和乘方要用,.*,.\,.^ 加个点然后in=[x(:) y(:) z(:)];options = statset('TolFun',1e-4);a=nlinfit(in,k,fun,[1 1 ....1],options);options那句控制精度nlinfit的第一个参数是函数输入数据,这里是 in,存着x y z的数据 第二个参数是函数输出,这里是 k 第三个参数是你要拟合的方程,这里填fun,是我们之前辛苦写好的匿名函数 第四个参数是拟合参数的初值[1 1 ....1]这里要填20个数 第五个参数是拟合设置,填入上一句设置好的options输出a就是拟合好之后的参数,是一个长度为20的向量有时候拟合结果会跟初值有关系,如果你的函数形式很复杂,初值设不好可能会拟合不好,只能自己慢慢调整了
相关知识等待您来回答
编程领域专家
& &SOGOU - 京ICP证050897号&& 查看话题
Matlab多元高次方程组的求解问题
各位大侠,我有这样一个方程,S1=x+(1-x)*z^2*y*(1-y)+(1-x)^2*z^2*(1-y)^2*a+(1-x)*z^4*y^3*(1-y)+(1-x)^2*z^4*y^2*(1-y)^2*a-b;
可以写出3个方程组,而a,b的值是可以已知的
现在想通过matlab把x,y,z解出来;编了如下程序:
syms x y z
S1=x+(1-x)*z^2*y*(1-y)+(1-x)^2*z^2*(1-y)^2*0.5+(1-x)*z^4*y^3*(1-y)+(1-x)^2*z^4*y^2*(1-y)^2*0.5-0.71;
S2=x+(1-x)*z^2*y*(1-y)+(1-x)^2*z^2*(1-y)^2*0.98+(1-x)*z^4*y^3*(1-y)+(1-x)^2*z^4*y^2*(1-y)^2*0.98-1.02;
S3=x+(1-x)*z^2*y*(1-y)+(1-x)^2*z^2*(1-y)^2*0.02+(1-x)*z^4*y^3*(1-y)+(1-x)^2*z^4*y^2*(1-y)^2*0.02-0.41;
=solve(S1,S2,S3,'x,y,z')
为什么运行不出来呢?
// 1stop 代码
Parameters x, y,
Function&&x+(1-x)*z^2*y*(1-y)+(1-x)^2*z^2*(1-y)^2*0.5+(1-x)*z^4*y^3*(1-y)+(1-x)^2*z^4*y^2*(1-y)^2*0.5-0.71=0;
Function&&x+(1-x)*z^2*y*(1-y)+(1-x)^2*z^2*(1-y)^2*0.98+(1-x)*z^4*y^3*(1-y)+(1-x)^2*z^4*y^2*(1-y)^2*0.98-1.02=0;
Function&&x+(1-x)*z^2*y*(1-y)+(1-x)^2*z^2*(1-y)^2*0.02+(1-x)*z^4*y^3*(1-y)+(1-x)^2*z^4*y^2*(1-y)^2*0.02-0.41=0;
z: 1.74 : Originally posted by feixiaolin at
// 1stop 代码
Parameters x, y,
Function&&x+(1-x)*z^2*y*(1-y)+(1-x)^2*z^2*(1-y)^2*0.5+(1-x)*z^4*y^3*(1-y)+(1-x)^2*z^4*y^2*(1-y)^2*0.5-0.71=0;
Function&&x+(1-x)*z^2*y*(1-y)+(1-x)^2*z^2*(1-y)^2*0. ... 您编写的程序代码就是这个吗 为什么在我的Matlab上运行不出来呢? : Originally posted by 缱莳霰瑜 at
您编写的程序代码就是这个吗 为什么在我的Matlab上运行不出来呢?... 是 1stop 代码 : Originally posted by feixiaolin at
是 1stop 代码... 能弱弱的问一句在matlab里面怎么编吗? : Originally posted by 缱莳霰瑜 at
能弱弱的问一句在matlab里面怎么编吗?... 不能用。 : Originally posted by feixiaolin at
不能用。... 好吧~谢谢您,我还是想知道matlab里面怎么编出来 因为我的变量a b 也是变化的 自己运行不出来 也不知道原因出在了哪里 : Originally posted by feixiaolin at
不能用。... 请问您用的什么程序运算的呢? 一个叫做 1stop 的东东 : Originally posted by feixiaolin at
一个叫做 1stop 的东东 请问您用的什么运算软件解的呢? : Originally posted by 缱莳霰瑜 at
请问您用的什么运算软件解的呢?... /link?url=1bHPvq2MgjIVZB-g11EVXSO1Db07WMDXmlto0UTa5a6e_mz5D9jSran87myysBkZbmj5GZEU4bzdt1Mpqo1w9q : Originally posted by feixiaolin at
一个叫做 1stop 的东东 为什么我用这个软件和您的结果不一样呢~
目标函数值: 0.79437
y: -0.2126
z: -1.57 优化选项不同,结果有差异。 : Originally posted by feixiaolin at
优化选项不同,结果有差异。 好的 谢谢您! 在Matlab里面这个是矛盾方程组,所以是没有解的.
折中的方法是求三个方程的平方和的最小值(最小二乘意义下的解).
用Optimization工具箱里的工具, 求三个项目的平方和构造出来的目标函数的全局极小值就可以了.
函数值: 0.,
x = 0.372768, y= 0.0220648, z= 1.29901
如果用迭代方法求解, 不妨用上面的结果作初值试试 你可以用MuPAD试试 : Originally posted by cooooldog at
在Matlab里面这个是矛盾方程组,所以是没有解的.
折中的方法是求三个方程的平方和的最小值(最小二乘意义下的解).
用Optimization工具箱里的工具, 求三个项目的平方和构造出来的目标函数的全局极小值就可以了.
参 ... 好的 谢谢~我用一下试试 : Originally posted by cooooldog at
在Matlab里面这个是矛盾方程组,所以是没有解的.
折中的方法是求三个方程的平方和的最小值(最小二乘意义下的解).
用Optimization工具箱里的工具, 求三个项目的平方和构造出来的目标函数的全局极小值就可以了.
参 ... 麻烦您能不能把具体的代码给我看看呢? : Originally posted by 缱莳霰瑜 at
麻烦您能不能把具体的代码给我看看呢?... 我没有用Matlab计算; 因为没有这个软件;
因为你这个问题很简单,我是心算的.
不过你要是觉得有必要, 可以自己计算看看;查看: 4736|回复: 3|关注: 0
matlab解多元一次方程组的问题
举个例子吧(简化了我遇到的实际问题)
syms p1 p2 p3 p4 p5 p6;& &//经过一些步骤后,p1。。。p6被赋值为
p1=x1+x2+x3+x4+x5+x6
p2=x1+2*x2+x3+x4+x5+x6
p3=x1+x2+3*x3+x4+x5+x6
p4=x1+x2+x3+4*x4+x5+x6
p5=x1+x2+x3+x4+5*x5+x6
p6=x1+x2+x3+x4+x5+6*x6
然后我要解x1 x2 x3 x4 x5 x6
[x1 x2 x3 x4 x5 x6]=solve('p1=0', 'p2=0', 'p3=0', 'p4=0', 'p5=0', 'p6=0')
然后就matlab就不会算了
但如果我把solve中p1,p2....p6替换成其所代表的式子(如,x1+x2+x3+x4+x5+x6),就可以解了
但现在我的问题是,要把p1等符号变量换成表达式实在是太繁琐了
请问有什么简单的方法吗?
有没有大神知道原因的?
所有式子去掉=0试试,不行用linsolve函数吧
请问,为什么在求解多元一次方程组时求得值带进去验算不正确啊?为什么?怎门办? syms x y z k
&& A=x+y+z+k-20;
&& B=4*x+5*y+6*z+7*k;
&& C=6*x+10*y+15*z+21*k;
&& D=12*x+30*y+60*z+105*k;
&& [x y z k]=solve(A,B,C,D)
喷涂机器人+学?
求得的值只能满足第一个式子等于0,其他式子为啥都不是0啊?
站长推荐 /1
Powered by 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
利用Matlab软件求解五元一次方程组
下载积分:1000
内容提示:利用Matlab软件求解五元一次方程组
文档格式:DOCX|
浏览次数:36|
上传日期: 09:01:15|
文档星级:
该用户还上传了这些文档
利用Matlab软件求解五元一次方程组
官方公共微信

我要回帖

更多关于 matlab 微分方程组 的文章

 

随机推荐