芥末小土鹅 2021-06-23 20:03 采纳率: 100%
浏览 10
已结题

网上的matble代码,哪里出错了啊

 function FHQJ

  k=2;

m=4;

a=0; % a,b 为区间

b=2;

epsilon=1e-3; % 精确度

fun=@(x.)sqrt(-x.^2+k*x)+m;

n =1;

h=(b-a)/2;

y0=h*(feval(fun,a)+feval(fun,b));

yiter=y0;

  while 1

step =2^(n-1);

f=sum(feval(fun,a+(1:2:2*step-1)*h));

y=y0/2+h*f;

if abs(y-y0)<3*epsilon

break;

end

h=h/2;

y0=y;

yiter=[yiter,y0];

n=n+1;

   end

   yiter

   disp(y);

   Error=double(int('sqrt(-x^2+2*x)+4','x',0,2)-y); %% 与真值误差

   disp(Error);

  • 写回答

1条回答 默认 最新

  • CSDN专家-Matlab_Fans 2021-06-23 21:05
    关注

    int求积分不适合用字符串,需要使用符号变量,程序已改如下

    function FHQJ
    
    k=2;
    
    m=4;
    
    a=0; % a,b 为区间
    
    b=2;
    
    epsilon=1e-3; % 精确度
    
    fun=@(x)sqrt(-x.^2+k*x)+m;
    
    n =1;
    
    h=(b-a)/2;
    
    y0=h*(feval(fun,a)+feval(fun,b));
    
    yiter=y0;
    
    while 1
        
        step =2^(n-1);
        
        f=sum(feval(fun,a+(1:2:2*step-1)*h));
        
        y=y0/2+h*f;
        
        if abs(y-y0)<3*epsilon
            
            break;
            
        end
        
        h=h/2;
        
        y0=y;
        
        yiter=[yiter,y0];
        
        n=n+1;
        
    end
    
    yiter
    
    disp(y);
    
    syms x
    Error=double(int(sqrt(-x^2+2*x)+4,x,0,2)-y); %% 与真值误差
    
    disp(Error);
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月26日
  • 已采纳回答 12月18日

悬赏问题

  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 用hfss做微带贴片阵列天线的时候分析设置有问题
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答