楼主: ntf198602
2511 10

[问答] 求救,以下程序为什么出错 [推广有奖]

  • 1关注
  • 1粉丝

已卖:1622份资源

教授

42%

还不是VIP/贵宾

-

威望
0
论坛币
5583 个
通用积分
41.9754
学术水平
3 点
热心指数
8 点
信用等级
3 点
经验
15204 点
帖子
955
精华
0
在线时间
1470 小时
注册时间
2009-3-28
最后登录
2024-12-27

楼主
ntf198602 发表于 2011-3-25 11:21:53 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
clear;clc;close all
[p,c] =deal(8,2);
[mu,sigma] = deal(120,10);
[r,s] = deal(1,0.8);     
omega =@(q) (((1+s)*(r-s)+(2+r+s))*p*(1-arrayfun(@(t)quad(@(x)normpdf(x,mu,sigma),0,t),q))...
                 +(2+s)*(r-s)*p*q.*normpdf(q,mu,sigma)+((1+r)*(r-s)-(2+r+s))*c)./(2+r+s)*(r-s)-2.5;
x0=120;
qq=fzero(omega,x0)

题目在附近里面,请查看,求高手帮忙解答啊。非常感谢了
二维码

扫码加我 拉你入群

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

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

关键词:arrayfun normpdf Sigma omega array 程序 求救

沙发
ygxiao 发表于 2011-3-25 11:47:00
程序编的很好。只是题目中方差为10,标准差为10^0.5。
[mu,sigma] = deal(120,10^0.5);
最后答案为:
qq =
  122.7263

藤椅
ntf198602 发表于 2011-3-25 22:17:32
多谢,只是我写错了,应该是标准差为10,而不是方差,所以我的程序应该没有问题。但是这个用matlab得到的这个结果再回算回去,却不能使得方程两边相等,这该怎么办啊?

板凳
ntf198602 发表于 2011-3-25 22:24:13
而且,当我开始输入程序时,可以得到结果为122.7263,但再次输入时却得到一大堆的东西,如下图

clip_image002.jpg (55.83 KB)

clip_image002.jpg

报纸
ntf198602 发表于 2011-3-25 22:24:38
这该怎么办啊?求高手帮忙啊,很急的呀

地板
ygxiao 发表于 2011-3-25 23:32:52
clear
[p,c] =deal(8,2);
[mu,sigma] = deal(120,10);
[r,s] = deal(1,0.8);     
omega =@(q) (((1+s)*(r-s)+(2+r+s))*p*(1-arrayfun(@(t)quad(@(x)normpdf(x,mu,sigma),-1000,t),q))...
                 +(2+s)*(r-s)*p*q.*normpdf(q,mu,sigma)+((1+r)*(r-s)-(2+r+s))*c)./(2+r+s)-(r-s)*2.5;
x0=120;
qq=fzero(omega,x0)

1 可能的错误在omega最后一项,“*(r-s)-2.5;” 为“-(r-s)*2.5;” 修改后上面的程序结果为 pp=135.9161。
2 我猜大F为分布函数,原则上积分下限不是0。不过在这里影响很小,结果不变。
已有 1 人评分热心指数 收起 理由
liuxin9023 + 1 鼓励积极发帖讨论

总评分: 热心指数 + 1   查看全部评分

7
ntf198602 发表于 2011-3-26 08:57:16
谢谢楼上,不过我的omega表达式应该没有错误的

8
zhangtao 发表于 2011-3-26 09:35:35
??? Error: "arrayfun" is not the name of a function nor a variable,
but is used in an anonymous function either at the prompt or in the argument of EVAL.
我运行时提示以上错误是什么原因?谢谢!

9
ygxiao 发表于 2011-3-26 13:32:26
clear
[p,c] =deal(8,2);
[mu,sigma] = deal(120,10);
[r,s] = deal(1,0.8);     
omega =@(q) (((1+s)*(r-s)+(2+r+s))*p*(1-normcdf(q,mu,sigma))...
                 +(2+s)*(r-s)*p*q*normpdf(q,mu,sigma)+((1+r)*(r-s)-(2+r+s))*c)/(2+r+s)-(r-s)*2.5;
x0=120;
qq=fzero(omega,x0)

我不知道arrayfun提示的意思,不过我简化了程序,直接用正态分布函数替换了积分,结果和原来的一样。如果不修改omega的表达,改变初值x0从1到10000都无解。
我觉得lz还是再核对一下原始公式。

10
ntf198602 发表于 2011-3-26 20:46:54
谢谢,我的原始公式 应该没有错,可能真的就没有解吧。但我发现如果程序稍微变一下就可以了,
clc;clear all
[p,c] =deal(8,2);
[mu,sigma] = deal(120,10);
[r,s] = deal(1,0.8);     
omega =@(q) (((1+s)*(r-s)+(2+r+s))*p*(1-normcdf(q,mu,sigma))...
                 +(2+s)*(r-s)*p*q*normpdf(q,mu,sigma)+((1+r)*(r-s)-(2+r+s))*c)-(2+r+s)*(r-s)*2.5;
x0=120;
qq=fzero(omega,x0)

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-31 01:03