楼主: maoxinshu
11272 16

[求助]用MATLAB求高维非线性方程组的解 [推广有奖]

  • 1关注
  • 2粉丝

VIP

博士生

47%

还不是VIP/贵宾

-

威望
0
论坛币
7861 个
通用积分
64.0950
学术水平
3 点
热心指数
7 点
信用等级
3 点
经验
5814 点
帖子
351
精华
0
在线时间
236 小时
注册时间
2004-11-8
最后登录
2025-7-27

楼主
maoxinshu 发表于 2006-9-12 18:15:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

各位好,请不吝赐教。

%题干(求5个未知数的非线性方程组)

% 已知p0=(bv0+((roe1-r)./(1+r)).*bv0+((roe2-r)./(1+r).^2).*bv1+((roe2-r)./(r.*(1+r).^2)).*bv1;

并假定P0BVjROEj为已知5×1的列向量

p0=[5;4;7;8;9],bv0=[3;2;4;5;7], bv1=[2.5;3;3.5;5.2;6],roe1=[0.1;0.15;0.08;0.07;0.12], roe1=[0.12;0.10;0.10;0.05;0.15],

% 如何求解r(r5×1的列向量)

%编写mycost2000try.m函数

function F = mycost2000try(r);

F=[5;4;7;8;9]-([3;2;4;5;7]+(([0.1;0.15;0.08;0.07;0.12]-r)./(1+r).^2).*[3;2;4;5;7]+(( [0.12;0.10;0.10;0.05;0.15]-r)./(r.*(1+r).^2)).* [2.5;3;3.5;5.2;6];

%在命令行输入如下命令:

one=ones(5);

r0=0.1*one(:,1); % 初始点

options = optimset('Display','off'); % Turn off Display

[r,fval] = fsolve(@mycost2000try,r0, options)

问题1:为什么无法求解?

问题2:本题只是我的一个简化的例子,实际例子p0bv0等应该是(1000×1)的列向量,相应地求解的r也为1000×1的列向量,这时应如何编写和调用m函数,为什么在mycost2000try .m先定义如下函数:

F=(p0-(bv0+((roe1-r)./(1+r)).*bv0+((roe2-r)./(1+r).^2).*bv1+((roe2-r)./(r.*(1+r).^2)).*bv1);

然后在命令行中定义p0bv0等是不可识别的?

请各位不吝赐教。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:非线性方程组 MATLAB matla 线性方程组 非线性方程 MATLAB 方程 非线性 高维

本帖被以下文库推荐

沙发
maoxinshu 发表于 2006-9-13 14:48:00

可以以论坛现金作为奖励

藤椅
旗木卡卡西 发表于 2006-9-14 05:45:00

纯粹个人建议

能不用fsolve就不用fsolve,更何况你要求这么高的维数。你可以试试把方程变成多项式形式,求多项式的解比较方便快速。

一想到经济学就头大……

板凳
dingd 发表于 2006-9-15 23:39:00

用1stOpt试了一下,不知对否?

Constant p0(1:5)=[5,4,7,8,9];
Constant bv0(1:5)=[3,2,4,5,7];
Constant bv1(1:5)=[2.5,3,3.5,5.2,6];
Constant roe1(1:5)=[0.1,0.15,0.08,0.07,0.12];
Constant roe2(1:5)=[0.12,0.10,0.10,0.05,0.15];
Function For(i=1:5)(p0=(bv0+((roe1-r)/(1+r))*bv0+((roe2-r)/(1+r)^2)*bv1+((roe2-r)/(r*(1+r)^2))*bv1));

结果:

r1: 0.0662098312457287
r2: 0.0606946081232086
r3: 0.0534039089862346
r4: 0.0320727048208649
r5: 0.110382787884127

报纸
maoxinshu 发表于 2006-9-16 10:05:00

dingd,你这个程序如何运行?是m文件脚本吗?1stOpt是什么意思?不好意思,由于学的主要是SASSTATAmatlab刚学,还请赐教。不知是否已在银行开户,我将以100论坛现金略表心意。

地板
dingd 发表于 2006-9-17 10:16:00
1stOpt是个国产优化、拟合、数值分析计算软件,网址:http://www.7d-soft.cn。1stOpt的优化拟合、方程求解等能力远强于Matlab、SAS、SPSS、Orgin等,建议试试!

7
maoxinshu 发表于 2006-9-19 09:30:00

1stOpt确实不错,有钱了去买个正版。

8
maoxinshu 发表于 2006-9-19 11:18:00
dingd,再问一下,如果p0,bv0, bv1,roe1,roe2 是1000*1的列向量[存放在exell中的表格数据,可以将其直接考入1stOpt的数据电子表格],这是不可能像上面的程序一样通过Constant来定义常量,此时应如何编程?或者将常量与1stOpt的数据电子表格中的数据进行直接关联?

9
dingd 发表于 2006-9-19 22:21:00

在新版2.0中,可直接从Excel,1stOpt的电子表格中读取,如:

Constant p0(1:1000) = "c:\data.xls[Sheet1[A1:A1000]]";

Constant bv0(1:1000) = "c:\data.xls[Sheet1[B1:B1000]]";

10
maoxinshu 发表于 2006-9-19 23:30:00

新版2.0网上还没有发布,1.5的价格是888,不知2.0是多少。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-27 03:35