24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1166  |  回复: 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 的主题更新
信息提示
请填处理意见