声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1800|回复: 7

[编程技巧] 含积分的非线性方程组如何解?

[复制链接]
发表于 2008-5-1 21:47 | 显示全部楼层 |阅读模式

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

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

x
如题
方程组中含有积分式,积分上下限包含待求的变量
这个积分没法求出原函数,

试了用solve貌似不行
请问有什么方法可以解?

用对应的命令么?

谢谢:@)
回复
分享到:

使用道具 举报

发表于 2008-5-1 23:14 | 显示全部楼层
令积分项为新的状态变量?
不知道有没有一个命令就全部搞定
 楼主| 发表于 2008-5-1 23:52 | 显示全部楼层
我这样尝试过了,不行
解不出来,不过还是谢谢了,:@D
不知道有没有什么好方法,
网上也没搜到,
希望谁知道的指导一下
谢谢了
发表于 2008-5-2 09:25 | 显示全部楼层

回复 楼主 的帖子

变上限积分吗
发表于 2008-5-2 17:08 | 显示全部楼层
建议楼主帖方程吧,因为非线性方程组这种东西本来就是很麻烦的,通用的解法更是难以寻找。如果贴出方程来,或许大家可以根据方程自身的特点把它求解出来。
 楼主| 发表于 2008-5-3 09:06 | 显示全部楼层
题目如图,要求A和sigmaA,我把d1和d2也当成变量,
然后解含4个变量A、sigmaA、d1、d2的方程组,代码如下
r = 3.66/100; T = 1; E = 1514805.9; DPT = 527691.645; sigmaE = 0.195995;
for k = 1:length(E)
    f1 = ['[log(A/' num2str(DPT(k)) ')+(' num2str(r) '+0.5*sigmaA^2)*' num2str(T) ']/(sigmaA*' num2str(sqrt(T)) ')-d1=0'];
    f2 = ['d1-sigmaA*' num2str(sqrt(T)) '-d2=0'];
    f3 = ['A*normcdf(d1,0,1)-' num2str(DPT(k)) '*exp(-' num2str(r) '*' num2str(T) ')*normcdf(d2,0,1)-' num2str(E(k)) '=0'];
    f4 = ['A/' num2str(E(k)) '*normcdf(d1,0,1)*sigmaA - ' num2str(sigmaE(k)) '=0'];
    [d1 d2 A sigmaA] = solve(f1,f2,f3,f4,'d1,d2,A,sigmaA'), pause
end

求解的结果如下:
Warning: Explicit solution could not be found.
> In D:\MATLAB6p5\toolbox\symbolic\solve.m at line 136
  In d:\MATLAB6p5\work\shenjian\data\data.m at line 73

d1 =

[ empty sym ]

d2 =
     []

A =
     []

sigmaA =
     []

请各位高手指教,谢谢,:@D

[ 本帖最后由 ChaChing 于 2010-7-30 14:30 编辑 ]

题目

题目
 楼主| 发表于 2008-5-4 18:28 | 显示全部楼层
用了fsolve命令来求解数值解,结果也不对,
不知道有哪里需要改正的,请高手指教,谢谢,文件内容如下
function v = equation_group(x)
global E;
global DPT;
global sigmaE;
global r;
global T;
global k;
f1 = (log(x(3)/DPT(k))+(r+0.5*x(4)^2)*T)/(x(4)*sqrt(T)) - x(1);
f2 = x(1) - x(4)/sqrt(T) - x(2);
f3 = x(3)*normcdf(x(1),0,1) - DPT(k)*exp(-r*T)*normcdf(x(2),0,1) - E(k);
f4 = x(3)/E(k)*normcdf(x(1),0,1)*x(4) - sigmaE(k);
v = [f1;f2;f3;f4];


%data.m
global E;
global DPT;
global sigmaE;
global r;
global T;
global k;


E=1514805.9;
DPT =527691.645;
sigmaE=0.195995;
r = 3.66/100;
T = 1;

k = 1;
x0 = [0 0 1500000 5 ];
options = optimset('MaxFunEvals',100000,'LargeScale','on');
[x,fval,exitflag] = fsolve(@equation_group, x0,options)

运行结果如下:
>> data
Maximum number of iterations exceeded;
increase options.MaxIter

x =

  1.0e+006 *

    0.0000   -0.0000    1.5189    0.0000


fval =

   -1.2285
    2.6017
   -0.0691
    2.8785


exitflag =

     0

得不到正确的解,
问题有可能出在哪?
谢谢:@)
发表于 2011-5-14 16:21 | 显示全部楼层
你好,因为我现在被这个方程的求解所困扰,所以想问问,这个问题你后来解决了没。如果你已得到解决,非常希望能够得到你的回复和解答。谢谢
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-27 01:56 , Processed in 0.088661 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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