24小时热门版块排行榜    

查看: 1532  |  回复: 15

309065816

木虫 (正式写手)

[求助] matlab小白,发帖求助,编好的程序出了问题,附编程

从文献和书上找到合适的程序,但是抄到MATLAB里面却有问题。都是相同的问题,h=(b-a)/n, b没有含义。附上题目,两个原程序和我抄的程序,均是梯形法,应该没抄错吧?
程序1:
function [q,step] = CombineTraprl(f,a,b,eps)
%被积函数: f;
%积分区间左端点:a;
%积分区间右端点:b;
%eps 精度;
%积分结果:q;
%step 积分的子区间数;
if(nargin==3);
    eps=1.0e-4;
end
n=1;
h=(b-a)/2;
q1=0;
q2=(subs(sym(f),findsym(sym(f)),a)+subs(sym(f),findsym(sym(f)),b))/h;
while abs(q2-q1)>eps;
    n=n+1;
    h=(b-a)/n;
    q1=q2;
    q2=0;
    for i=0:n-1;
        x=a+h*i;
        x1=x+h;
        q2=q2+(h/2)*(subs(sym(f),findsym(sym(f)),x)+...
            subs(sym(f),findsym(sym(f)),x1));
    end
end
q=q2;
step=n;
??? Input argument "b" is undefined.

Error in ==> CombineTraprl at 12
h=(b-a)/2;

>>

程序2:
function y = trapm(n,a,b)
format long
h = (b - a)/n;
sym x fx
fx = sqrt(4 - x^2);
f0 = subs(fx,'x',a);
fn = subs(fx,'x',b);
sum = f0;
for i = 1:n-1
    xi = a + i* h;
    fi = subs(fx,'x',xi);
    sum = sum + 2* fi;
end
sum = sum + fn;
y = h* sum/2;

??? Input argument "b" is undefined.

Error in ==> trapm at 3
h = (b - a)/n;

>>
matlab小白,发帖求助,编好的程序出了问题,附编程
题目.jpg


matlab小白,发帖求助,编好的程序出了问题,附编程-1
程序1.jpg


matlab小白,发帖求助,编好的程序出了问题,附编程-2
程序2.jpg

[ Last edited by 309065816 on 2013-7-10 at 20:54 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

309065816

木虫 (正式写手)

在线坐等解答。。。
2楼2013-07-10 20:55:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★ ★
感谢参与,应助指数 +1
jjdg: 金币+1, 感谢参与 2013-07-11 04:11:09
309065816: 金币+2 2013-07-11 09:15:27
你的a,b,f都没有被定义。
a和b是积分区间的左右端点数值。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
3楼2013-07-10 21:52:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★ ★ ★
jjdg: 金币+1, 感谢解释 2013-07-11 04:11:26
309065816: 金币+3 2013-07-11 09:15:33
引用回帖:
2楼: Originally posted by 309065816 at 2013-07-10 20:55:21
在线坐等解答。。。

这两个程序,都不是直接运行的。
而是把m文件分别保存在MATLAB的工作目录下,然后按照格式调用。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
4楼2013-07-10 21:58:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
309065816(jjdg代发): 金币+5, 辛苦了 2013-07-11 04:11:54
309065816: 金币+10, ★★★★★最佳答案 2013-07-11 09:15:43
原文的程序没有错,出现问题,在于其一程序抄写不一致,你抄写“syms……”的时候,少了一个字母"s";其二程序调用方式不对,不是直接运行这些m文件而应该是按调用格式来。
比如,原文中梯形法的程序编写得很巧妙,只需要3个参数:积分的左右端点数值和子区间数目,就可以得到计算结果。把trapm.m存到MATLAB的工作目录下,在主窗口输入: trapm(10000,0,3*pi/2)
即得结果,如附图。
matlab小白,发帖求助,编好的程序出了问题,附编程-3
附图1.jpg

MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
5楼2013-07-10 22:20:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

309065816

木虫 (正式写手)

引用回帖:
5楼: Originally posted by 月只蓝 at 2013-07-10 22:20:21
原文的程序没有错,出现问题,在于其一程序抄写不一致,你抄写“syms……”的时候,少了一个字母"s";其二程序调用方式不对,不是直接运行这些m文件而应该是按调用格式来。
比如,原文中梯形法的程序编写 ...

太感谢你了。之前也搜过类似的帖子,发现很多都有你的回复,大神呀。想再问一下呀,我想把结果的精确到小数点后4位怎么添加程序呢?
6楼2013-07-11 09:17:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

309065816

木虫 (正式写手)

引用回帖:
5楼: Originally posted by 月只蓝 at 2013-07-10 22:20:21
原文的程序没有错,出现问题,在于其一程序抄写不一致,你抄写“syms……”的时候,少了一个字母"s";其二程序调用方式不对,不是直接运行这些m文件而应该是按调用格式来。
比如,原文中梯形法的程序编写 ...

[q,s]=CombineTraprl('sqrt(4-x^2)',0,2,1.0e-4)
这是第一个程序里面最后的命令,而且按照编的程序可以看出,默认精度就是小数点后4位的,为什么出来的结果是这样的:
q =

   3.138365760415841


s =

    51
7楼2013-07-11 09:22:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

引用回帖:
6楼: Originally posted by 309065816 at 2013-07-11 09:17:02
太感谢你了。之前也搜过类似的帖子,发现很多都有你的回复,大神呀。想再问一下呀,我想把结果的精确到小数点后4位怎么添加程序呢?...

将vpa与digits联用
如:圆周率pi取9位有效数字:
>> digits 9
>> vpa(pi)

ans =

                                  3.14159265
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
8楼2013-07-11 09:23:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

309065816

木虫 (正式写手)

引用回帖:
5楼: Originally posted by 月只蓝 at 2013-07-10 22:20:21
原文的程序没有错,出现问题,在于其一程序抄写不一致,你抄写“syms……”的时候,少了一个字母"s";其二程序调用方式不对,不是直接运行这些m文件而应该是按调用格式来。
比如,原文中梯形法的程序编写 ...

第二个程序是要怎么写才能控制精度呢?
>> trapm(10000,0,2)

ans =

   3.141591477611321
9楼2013-07-11 09:23:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

309065816

木虫 (正式写手)

引用回帖:
8楼: Originally posted by 月只蓝 at 2013-07-11 09:23:03
将vpa与digits联用
如:圆周率pi取9位有效数字:
>> digits 9
>> vpa(pi)

ans =

                                  3.14159265...

嗯,我要计算的积分里面没有圆周率,上限跟下限是2跟0。那要怎么添加程序呢?还是像你上面写的那样吗?
10楼2013-07-11 09:29:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 309065816 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 投票:  有多少人是今天查系统知道结果的? +15 爱看书的可乐 2026-08-26 17/850 2026-08-27 03:31 by xxniao123
[硕博家园] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +3 LIbGuocjEEYw 2026-08-26 4/200 2026-08-27 02:01 by Ie9AyIAvGbvs
[基金申请] 基金不中,共勉 +5 eulota 2026-08-26 5/250 2026-08-26 23:33 by young90
[基金申请] 看板上这么多中的,有点像50人群里49个人都是骗子的那种感觉…… +3 a089 2026-08-26 3/150 2026-08-26 23:21 by young90
[基金申请] 我不理解! +15 Edward_pc 2026-08-26 23/1150 2026-08-26 20:34 by zzuzxg
[基金申请] 2026年的国家社科基金项目通讯评审的新规则与新动向、新挑战 +7 process2012 2026-08-23 10/500 2026-08-26 19:23 by hmhminy
[基金申请] 系统查不到 +10 董八千 2026-08-26 10/500 2026-08-26 16:30 by Equinoxhua
[基金申请] 能否退出参与的面上项目解除限项 +23 koalala 2026-08-24 26/1300 2026-08-26 14:29 by 宝贝虫子
[基金申请] 出来了 +9 trojank 2026-08-26 9/450 2026-08-26 14:25 by 宝贝虫子
[基金申请] 哪位高人中了,把查询到的截图贴出来让我看看,让我长长见识 +4 yuleib84 2026-08-26 5/250 2026-08-26 13:40 by yuleib84
[基金申请] 国合里面能看到了 +7 一怀馨秋 2026-08-26 7/350 2026-08-26 11:23 by zhaosm1982
[基金申请] 国际合作可查了,中了面上 +18 Ldrop2023 2026-08-26 18/900 2026-08-26 11:15 by cmrandy
[基金申请] 国合现在查不到了吗? +10 chengyan1220 2026-08-24 20/1000 2026-08-26 08:57 by peasantsprig
[基金申请] 在坚冰还盖着北海的时候,我看到了怒放的梅花。 (金币+10) +6 ziyangfang 2026-08-25 9/450 2026-08-25 20:26 by huagongfeihu
[基金申请] 今日不放榜?网传国自然预计 8 月 27 日可查结果 +17 医学老男孩 2026-08-20 22/1100 2026-08-25 15:36 by 医学老男孩
[基金申请] 人气不行了 +11 fansofjerry 2026-08-21 11/550 2026-08-25 11:04 by 孤独的英雄6
[基金申请] 我面上完蛋了 +13 且听虎啸 2026-08-20 14/700 2026-08-25 09:10 by mrkang
[基金申请] 让我中一个面上吧! +13 大萍1987 2026-08-20 16/800 2026-08-24 10:23 by 太傻了
[基金申请] 看来今天不会放榜了? +8 chengyan1220 2026-08-21 11/550 2026-08-21 17:52 by dcqxinyang
[基金申请] 应该是下周三26日公布了吧? +4 哈哈蛤? 2026-08-21 4/200 2026-08-21 10:58 by Vivilian
信息提示
请填处理意见