24小时热门版块排行榜    

查看: 1359  |  回复: 12
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

chain416

新虫 (初入文坛)

[求助] 如何使用fsolve求解经过微分计算生成的函数的解?不是微分方程已有1人参与

标题可能不清楚,意思就是fsolve求解一个方程我已经会了,但是方程必须是固定已知的,而不能是通过微分计算计算出来的。
比方说:
x=fsolve('myfun',[0.5],optimset('Display','off'))

function q=myfun(p)
    alpha1 = p;
    q =25*exp(5/(2*alpha1)) - 100/(9*exp(5/(2*(alpha1 - 1)))) - 250/(9*exp(5/(2*(alpha1 - 1)))*(alpha1 - 1)) - (125*exp(5/(2*alpha1)))/(2*alpha1) - 125/9;
是可以计算出结果的,而
x=fsolve('myfun',[0.5],optimset('Display','off'))

function q=myfun(p)
RT=2.5;
    h1=0.2;
    h2=0.3;
    r1=abs(h1)^2;
    r2=abs(h2)^2;

    [P1, P3, beta1]=solve ('alpha1*log(1+P1*r1/alpha1) = RT','beta1*log(1+P3*r2/beta1) = RT','alpha1 + beta1 = 1','P1','P3','beta1');
    P1 = subs(P1);
    P3 = subs(P3);
    y = P1 + P3;
    q = diff (y);
    alpha1 = p;
就会报错,因为q是经过微分计算所得,alpha1总是无法将数值解带入。
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Mr__Right

专家顾问 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
引用回帖:
2楼: Originally posted by chain416 at 2016-02-12 15:44:20
!!!dingding

符号计算跟数值计算不能混用。
如果同类型的解析解可以通过符号计算得到,只能直接使用结果的数值形式,定义到函数体中
文章乃身外之物,要多考虑编辑、审稿人和读者的感受。
3楼2016-02-12 21:57:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 13 个回答

chain416

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by Mr__Right at 2016-02-12 21:57:54
符号计算跟数值计算不能混用。
如果同类型的解析解可以通过符号计算得到,只能直接使用结果的数值形式,定义到函数体中...

我想求得是数值解,按照您的说法,应该怎么修改呢?谢谢!
4楼2016-02-12 22:10:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Mr__Right

专家顾问 (著名写手)

引用回帖:
4楼: Originally posted by chain416 at 2016-02-12 22:10:01
我想求得是数值解,按照您的说法,应该怎么修改呢?谢谢!...

solve 是求符号解的,你需要把这部分展开成 数值函数的特定形式,
这部分求导数,自己试试看,是否能改。

通常,出现这类问题:
1.你对语法了解不够
2.你的解原始问题的思路错误,

如果是1., 自己改成数值函数求导;
如果是2.,改不好,还不如直接问你的原始问题

» 本帖已获得的红花(最新10朵)

文章乃身外之物,要多考虑编辑、审稿人和读者的感受。
5楼2016-02-12 22:26:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chain416

新虫 (初入文坛)

送红花一朵
引用回帖:
5楼: Originally posted by Mr__Right at 2016-02-12 22:26:22
solve 是求符号解的,你需要把这部分展开成 数值函数的特定形式,
这部分求导数,自己试试看,是否能改。

通常,出现这类问题:
1.你对语法了解不够
2.你的解原始问题的思路错误,

如果是1., 自己改成数 ...

'alpha1*log(1+P1*r1/alpha1) = RT','beta1*log(1+P3*r2/beta1) = RT','alpha1 + beta1 = 1'
1 这三个等式中有4个未知量,所以假设alpha1已知,用alpha1来表示另外3个未知量(此时用solve来求解一切正常):'P1','P3','beta1'。
2 然后目标函数P+P3对alpha1进行求导,得出P1+P3对alpha1的一阶导数。
3 最后再求导数等于0时,alpha1的数值解(此时用fsolve无法完成求解)。
请帮忙看下,谢谢!!!
6楼2016-02-14 11:23:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见