24小时热门版块排行榜    

查看: 1631  |  回复: 10

yuyi2009

铜虫 (小有名气)

[求助] matlab程序问题求解答

function[c,err,yc]=bisect(f,a,b,delta)
% Input  - f is the function input as a string 'f'
%        - a and b are the left and right endpoints
%        - delta is the tolerance
% Output - c is the zero
%        - yc = f(c)
%        - err is the error estimate for c
ya = feval(f,a);
yb = feval(f,b);
if ya * yb > 0, end
max1 = 1+ round((log(b-a)-log(delta))/log(2));
for k =1:max1
    c =(a+b)/2;
    yc = feval(f,c);
    if yc==0;
        a=c;
        b=c;
    elseif yb * yc > 0
        b=c;
        yb=yc;
    else
        a=c;
        ya=yc;
    end
    if b - a < delta, break, end
end
c=(a+b)/2;
err=abs(b-a);
yc=feval(f,c);     % 求函数在c处的函数值

for T=200:10:300
   K = exp(-9.3932+3204.71/T+0.835931*log(T)...
       +2.35267*10^-3*T-1.8736*10^-6*T^2+5.1606*10^-10*T^3)
   f=inline('(4*K-1)*x^2-8*K*x+4*K');
   bisect(f,0,1,10^-5)
end
主程序调用函数出错
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhg19

金虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
LZ详细描述一下问题。。。
2楼2013-11-24 17:21:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yuyi2009

铜虫 (小有名气)

引用回帖:
2楼: Originally posted by zhg19 at 2013-11-24 17:21:08
LZ详细描述一下问题。。。

给了一个与温度相关的平衡方程,求200-300每隔10的平衡常数,以及平衡转化率。。。要求用二分法求解~
3楼2013-11-24 17:46:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhg19

金虫 (小有名气)

引用回帖:
3楼: Originally posted by yuyi2009 at 2013-11-24 17:46:06
给了一个与温度相关的平衡方程,求200-300每隔10的平衡常数,以及平衡转化率。。。要求用二分法求解~...

主要是程序出现的问题是什么呢
4楼2013-11-24 22:09:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yuyi2009

铜虫 (小有名气)

引用回帖:
4楼: Originally posted by zhg19 at 2013-11-24 22:09:26
主要是程序出现的问题是什么呢...

main

K =

   26.5468

Error using inline/feval (line 23)
Not enough inputs to inline function.

Error in bisect (line 8)
ya = feval(f,a);

Error in main (line 5)
   bisect(f,0,1,10^-5)
5楼2013-11-24 22:21:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yuyi2009

铜虫 (小有名气)

引用回帖:
4楼: Originally posted by zhg19 at 2013-11-24 22:09:26
主要是程序出现的问题是什么呢...

就是我声明的函数有K,被认为是变量,所以就少参数了。。。但是前面的K是可以求出来的~这个就不知道怎么弄了,它为什么不代进去啊~
6楼2013-11-24 22:22:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Bruce_lee

铜虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
yuyi2009: 金币+50, ★★★★★最佳答案, 再次感谢 2013-11-24 23:47:56
function problem_solve
%--------------------------------------------
disp('----------------分割线-----------------');
%--------------------------------------------
function[c,err,yc]=bisect(f,a,b,delta)
% Input  - f is the function input as a string 'f'
%        - a and b are the left and right endpoints
%        - delta is the tolerance
% Output - c is the zero
%        - yc = f(c)
%        - err is the error estimate for c
ya = feval(f,a);
yb = feval(f,b);
if ya * yb > 0, end
max1 = 1+ round((log(b-a)-log(delta))/log(2));
for k =1:max1
    c =(a+b)/2;
    yc = feval(f,c);
    if yc==0;
        a=c;
        b=c;
    elseif yb * yc > 0
        b=c;
        yb=yc;
    else
        a=c;
        ya=yc;
    end
    if b - a < delta, break, end
end
c=(a+b)/2;
err=abs(b-a);
yc=feval(f,c);     % 求函数在c处的函数值
end
%---------------------------------------------
function f=subfun(x,K)
f=(4*K-1).*x.^2-8*K.*x+4*K;
end
%---------------------------------------------
for T=200:10:300
   K = exp(-9.3932+3204.71/T+0.835931*log(T)...
       +2.35267*10^-3*T-1.8736*10^-6*T^2+5.1606*10^-10*T^3)
   [c,err,yc]=bisect(@(x)subfun(x,K),0,1,10^-5)
   disp('----------------分割线-----------------');
end
end


楼主,希望能帮助到你。
努力就有收获!
7楼2013-11-24 23:37:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Bruce_lee

铜虫 (著名写手)

【答案】应助回帖


xzhdty: 金币+1, 谢谢参与 2013-11-25 06:46:02
将这个代码保存为m文件,直接在命令窗口输入problem_solve即可。
努力就有收获!
8楼2013-11-24 23:41:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yuyi2009

铜虫 (小有名气)

引用回帖:
7楼: Originally posted by Bruce_lee at 2013-11-24 23:37:40
function problem_solve
%--------------------------------------------
disp('----------------分割线-----------------');
%--------------------------------------------
function=bisect(f,a,b,delta)
% ...

多谢~能顺便解释下为什么嘛~
9楼2013-11-24 23:47:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Bruce_lee

铜虫 (著名写手)

像这样有传递参数的情况,一般都是将需要求解的函数定义为“function f=函数名(x,k)”的形式,这里k为传递参数。用inlne()函数,给出的是函数的符号形式,有时就会出错。
努力就有收获!
10楼2013-11-25 15:34:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 yuyi2009 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 欢迎发来filecode的Mz6后的代码验证其规律 +51 医学老男孩 2026-08-13 110/5500 2026-08-18 19:07 by icerianxia
[基金申请] 明天放榜? +5 Shxjjxjkx 2026-08-18 5/250 2026-08-18 18:14 by -大大大大大-
[基金申请] 时间戳变了,能看出什么问题? +8 基诺咪客 2026-08-17 11/550 2026-08-18 17:13 by 悠然熊猫
[基金申请] 重要消息,中午系统在维护 +9 yuleib84 2026-08-18 10/500 2026-08-18 16:52 by archvillain
[教师之家] 两姐妹,一个辛辛苦苦30岁工作当大学教师,另一个23岁就工作当开车教练 +3 瞬息宇宙 2026-08-11 7/350 2026-08-18 16:42 by LNP@mRNA
[论文投稿] 投稿咨询 +4 wwm09 2026-08-17 6/300 2026-08-18 15:36 by wwm09
[基金申请] 今天维护系统维护 祝所有人 高中 +8 gjjjzhong 2026-08-18 9/450 2026-08-18 13:01 by 家与远方
[基金申请] 哪位老哥知道今年的国自然具体哪一天放榜? +13 Ldrop2023 2026-08-13 16/800 2026-08-18 12:25 by 淀粉搬运工
[基金申请] 2027广东省杰青 +3 奶牛小黑 2026-08-15 8/400 2026-08-18 11:47 by gltch
[基金申请] 快农历七夕节了,轻松一下,男人悄悄话,女施主请不要进来。 +4 Tide man 2026-08-14 5/250 2026-08-18 11:35 by Tide man
[基金申请] 93BebMhtakh前后11位开头都是大写 +4 且听虎啸 2026-08-17 5/250 2026-08-18 00:49 by 蔡棒棒菂
[基金申请] 感觉是下周放榜了 +6 angus9576 2026-08-17 11/550 2026-08-17 23:57 by angus9576
[基金申请] filecode=后面第一个是大写字母 +8 wangze12014 2026-08-14 10/500 2026-08-17 17:05 by xter9665
[基金申请] 今天系统多次维护,明天很可能放榜! +8 zju2000 2026-08-16 9/450 2026-08-17 12:20 by lmz0216
[精细化工] 招聘 金属平磨液,抛光液研发工程师 +3 小天0311 2026-08-14 3/150 2026-08-16 07:31 by H9PLUS
[基金申请] 各位道友,我要去昆明玩几天,回来见。 +7 Tide man 2026-08-14 8/400 2026-08-15 01:11 by arzu_hma
[基金申请] 重要来源:本周末出结果 +10 瞬息宇宙 2026-08-12 10/500 2026-08-13 15:46 by likettle
[基金申请] 不应该看fileCode +7 且听虎啸 2026-08-12 9/450 2026-08-13 14:27 by flydreamws
[基金申请] Filecode 又变了,巨变 +3 WH3796 2026-08-12 4/200 2026-08-13 14:13 by 小木虫6752397
[基金申请] 结合人工智能,周易传统文化,filecode打分制来了,3分以上希望很大。 +3 Tide man 2026-08-12 4/200 2026-08-13 08:35 by ZJTJZ
信息提示
请填处理意见