声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

楼主: studyboy

[编程技巧] 【原创】变参数非线性方程组的求解!

[复制链接]
发表于 2007-11-1 12:39 | 显示全部楼层

请给出错误信息
回复 支持 反对
分享到:

使用道具 举报

发表于 2007-11-1 16:55 | 显示全部楼层
用1stOpt来凑个热闹:

Constant H=0.32, Pc0=0.23, W=0.18;
LoopConstant k = [0:0.01:1];
PlotLoopData k[x], x1, x2;
Function Pc0+H*(1+1.5*(x1/W-1)-0.5*(x1/W-1)^3)-x2;
             x1-k*sqrt(x2);
tre.jpg

评分

1

查看全部评分

发表于 2007-11-9 11:03 | 显示全部楼层
x0 = [2*W; Pc0+2*H];           % 取初值
是非线性方程组,为什么还要取初值呢
发表于 2007-11-9 11:51 | 显示全部楼层

回复 #20 dingd 的帖子

原来下载了个1stOpt
不好用
发表于 2008-4-1 12:00 | 显示全部楼层
我用的是6.5,按13楼的改了代码,可为什么和没改之前一样,总是出现这个结果呢?
>> Warning: List of equations is empty.
> In C:\MATLAB6p5\toolbox\symbolic\solve.m at line 85

ans =

[ empty sym ]
发表于 2008-6-8 10:19 | 显示全部楼层
谢谢楼主的 共享

我昨天求解一个 非线性方程就遇到这样的问题。

不过不是变参数的,而是一个带符号的非线性方程
发表于 2009-1-11 14:14 | 显示全部楼层

出错啦!

怎么在我的机子上运行不了了!!!

>> clear
>> H=0.32;
Pc0=0.23;W=0.18;
x0 = [2*W; Pc0+2*H];           % 取初值
options = optimset('Display','off');
k=0:0.01:1;             % 变量取值范围[0 1]
for i=1:1:length(k)
kk=k(i);                        
x = fsolve(@(x) myfun(x,kk), x0, options);%求解非线性方程组
x1(i)=x(1);
x2(i)=x(2);
end
??? Attempt to execute SCRIPT myfun as a function.

Error in ==> fsolve at 180
        fuser = feval(funfcn{3},x,varargin{:});
发表于 2009-1-11 22:30 | 显示全部楼层

回复 25楼 bingzi 的帖子

这段怎么没有写呢?
  1. %定义方程组如下,其中k为变量
  2. function F = myfun(x,k)
  3. H=0.32;
  4. Pc0=0.23;W=0.18;
  5. F=[Pc0+H*(1+1.5*(x(1)/W-1)-0.5*(x(1)/W-1)^3)-x(2);
  6. x(1)-k*sqrt(x(2))];
复制代码
发表于 2009-2-26 04:49 | 显示全部楼层
谢谢啊,太感谢楼主了
发表于 2009-2-26 14:08 | 显示全部楼层
原帖由 aiguo 于 2007-11-9 11:03 发表
x0 = [2*W; Pc0+2*H];           % 取初值
是非线性方程组,为什么还要取初值呢

个人理解
Optimization Toolbox中的函数都要给初值, 主要与数值求解
的Algorithm有关, 它并非将函数解全部解出, 亦有可能不是真解!
发表于 2009-2-26 20:08 | 显示全部楼层
恩,不错,变参数的语法有点高级
发表于 2010-3-30 22:29 | 显示全部楼层

非常的有意义

正在求解中,学习了,感谢了
发表于 2010-8-10 17:21 | 显示全部楼层

回复 12楼 michael1003 的帖子

是的,设为全局变量也可以实现
发表于 2011-4-11 15:32 | 显示全部楼层
楼主帮我解惑了,谢谢
发表于 2011-6-30 15:28 | 显示全部楼层
这个程序为什么在我机子上用不了呢  
function F = mcccfun(x,k)

H=0.32;

Pc0=0.23;W=0.18;

F=[Pc0+H*(1+1.5*(x(1)/W-1)-0.5*(x(1)/W-1)^3)-x(2);

x(1)-k*sqrt(x(2))];

H=0.32;
Pc0=0.23;W=0.18;
x0 = [2*W; Pc0+2*H];           % 取初值
options = optimset('Display','off');
k=0:0.01:1;             % 变量取值范围[0 1]
for i=1:1:length(k)
kk=k(i);                        
x = fsolve(@(x) mcccfun(x,kk), x0, options);%求解非线性方程组
x1(i)=x(1);
x2(i)=x(2);


Error: File: D:\matlab1\work\mcccfun.m Line: 28 Column: 1
This statement is incomplete.
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-29 11:59 , Processed in 0.058471 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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