Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
高级会员
注册日期: 2009-04-11
年龄: 38
帖子: 138
声望力: 19 ![]() |
![]()
__________________
看帖回帖,就是对我们最大的支持! |
![]() |
![]() |
![]() |
#2 |
初级会员
注册日期: 2012-04-07
年龄: 36
帖子: 3
声望力: 0 ![]() |
![]()
在计算机上为计算函数f(x)在区间[a,b]上的积分,要求误差小于ε。采用复化梯形公或龙贝格积分法求积分的matlab程序。为满足精度要求(误差小于ε),通常采用将区间不断二分的方法。
求高手赐教matlab程序,本人为matlab初学者,自己编了一个程序: clear,clc; f(x)=erfen(x); a=input('input a:'); b=input('input b:'); error=input('input error:'); h=b-a;T0=[f(a)+f(b)]*h/2; h=h/2;k=1;m=2^k; sum=0; for i=1 ![]() x(i)=a+i*h; sum=sum+f(x(i)); T1=[f(a)+sum+f(b)]*h/2; end while(abs(T1-T0)>error) T0=T1; h=h/2; k=k+1; end disp('T1'); 定义的函数f(x)=erfen(x),即二分。运行时总出现??? Undefined function or variable 'x'.
__________________
简单而活 |
![]() |
![]() |
![]() |
#3 |
高级会员
注册日期: 2009-04-11
年龄: 38
帖子: 138
声望力: 19 ![]() |
![]()
Undefined function or variable 'x'. 的意思是没有定义变量‘x',可以用syms x语句来定义,但是你的程序中f(x)没有表达式,T0=[f(a)+f(b)]*h/2语句无法执行,你应该给他一个确定的表达式,然后用该思想进行编程。
有问题可继续跟帖,希望能帮到你。
__________________
看帖回帖,就是对我们最大的支持! |
![]() |
![]() |
![]() |
#4 |
初级会员
注册日期: 2012-04-07
年龄: 36
帖子: 3
声望力: 0 ![]() |
![]()
初学者,实在搞不清楚,求高手赐教,不知可有类似的程序可以让我模仿?
__________________
简单而活 |
![]() |
![]() |
![]() |
#5 |
高级会员
注册日期: 2009-04-11
年龄: 38
帖子: 138
声望力: 19 ![]() |
![]()
function f=erfen(x)
clear,clc f=@(x)cos(x); a=-pi/2;b=pi/2;error=0.0001; n=100;sum=(f(a)+f(b))*(b-a)/2; for i=1:n k=2^i;T=0; h=(b-a)/k; X=a+h*[1:k-1]; for j=1:k-1 T=f(X(j))+T; end sum(i+1)=h/2*(f(a)+f(b))+T*h; E=sum(i+1)-sum(i); if E<error S=sum(i+1); break end end disp(S)
__________________
看帖回帖,就是对我们最大的支持! |
![]() |
![]() |