查看完整版本 : [MATLAB基础] 求——给定精度求积分的matlab程序
采用不断二分区间,复化梯形求积的matlab程序
能把问题描述的细致些吗?这样方便他人解答
能把问题描述的细致些吗?这样方便他人解答
在计算机上为计算函数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:(m-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'.
Undefined function or variable 'x'. 的意思是没有定义变量‘x',可以用syms x语句来定义,但是你的程序中f(x)没有表达式,T0=[f(a)+f(b)]*h/2语句无法执行,你应该给他一个确定的表达式,然后用该思想进行编程。
有问题可继续跟帖,希望能帮到你。
初学者,实在搞不清楚,求高手赐教,不知可有类似的程序可以让我模仿?
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)
vBulletin® v3.8.3,版权所有 ©2000-2025,Jelsoft Enterprises Ltd.