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