索菲亚回个话 2021-11-18 11:41 采纳率: 50%
浏览 131
已结题

数值分析实验 用matlab(任何语言都可)

img

img


给出代码和结果截图

  • 写回答

3条回答 默认 最新

  • 技术专家团-Joel 2021-11-18 14:04
    关注

    你好同学,代码供参考,答题不易,如有帮助还望给个宝贵的采纳支持一下答主答题哟,非常感谢
    第一题

    % 第一题:
    I0 = log(1.2); % 初始值,当n=0时,I0=log(6)-log(5)=log(1.2)
    for n = 1:30 % 迭代30次
       I =  1/n - 5*I0;
       fprintf('n=%d时,I%d=%f\n',n, n, I);
       I0 = I;
    end
    

    第一题结果:

    n=1时,I1=0.088392
    n=2时,I2=0.058039
    n=3时,I3=0.043139
    n=4时,I4=0.034306
    n=5时,I5=0.028468
    n=6时,I6=0.024325
    n=7时,I7=0.021233
    n=8时,I8=0.018837
    n=9时,I9=0.016926
    n=10时,I10=0.015368
    n=11时,I11=0.014071
    n=12时,I12=0.012977
    n=13时,I13=0.012040
    n=14时,I14=0.011229
    n=15时,I15=0.010522
    n=16时,I16=0.009890
    n=17时,I17=0.009372
    n=18时,I18=0.008696
    n=19时,I19=0.009151
    n=20时,I20=0.004243
    n=21时,I21=0.026406
    n=22时,I22=-0.086575
    n=23时,I23=0.476352
    n=24时,I24=-2.340094
    n=25时,I25=11.740469
    n=26时,I26=-58.663883
    n=27时,I27=293.356454
    n=28时,I28=-1466.746558
    n=29时,I29=7333.767272
    n=30时,I30=-36668.803026
    

    可见当n=24的时候积分已经出现了负值了

    第二题
    牛顿迭代法计算根号7,原理
    要计算根号7,首先要构造函数f=x^2-7,即计算函数f=0时的x的值,这个时候用牛顿迭代法xn+1=xn-f(xn)/f'(xn):

    f=@(x) x^2-7;
    df = @(x) 2*x; % f的导数f'
    err = 1;%误差初始值
    x = 2;%迭代初始值
    count = 0; % 迭代次数计步
    while (err>5e-15)%如果没收敛就继续迭代
        count = count + 1;
        dx = f(x)/df(x);
        x = x - dx;
        err = abs(dx);
        N = -floor(log10(abs(x-sqrt(7))));
        fprintf('第%d次迭代, 误差为%ex=%.16f\n', count, err, x);
    end
    

    第二题结果:

    第1次迭代, 误差为7.500000e-01,x=2.7500000000000000
    第2次迭代, 误差为1.022727e-01,x=2.6477272727272729
    第3次迭代, 误差为1.975224e-03,x=2.6457520483808037
    第4次迭代, 误差为7.373161e-07,x=2.6457513110646933
    第5次迭代, 误差为1.027242e-13,x=2.6457513110645907
    第6次迭代, 误差为1.678499e-16,x=2.6457513110645907
    

    根据第六次迭代,可见第五次迭代,其有效数字已经满足了15位的要求了

    第三题

    % 这道题关键是怎么确定ek+1和ek的关系,根据收敛阶的定义
    % 计算出p的大小
    % 由于ek+1/ek^p=C
    % 两边取对数,log(ek+1) = p*log(ek) + log(C)
    % 所以斜率就是收敛阶
    x0 = 0.1;
    nstep = 20;
    err_arr = zeros(nstep,1);
    for i = 1:nstep
        x = 0.99*x0-x0^2;
        err = abs(x-x0);
        err_arr(i) = err;
        x0=x;
    end
    ek = err_arr(1:end-1); % ek
    ek1 = err_arr(2:end); % ek+1
    parr = polyfit(log(ek),log(ek1),1);
    figure(1);clf
    loglog(ek,ek1)
    xlabel('log(e_k)')
    ylabel('log(e_{k+1})')
    title('e_{k+1}关于e_k的对数曲线')
    axis equal
    p = parr(1);
    fprintf('对数曲线斜率为%f,所以是%f阶收敛\n',p,p);
    

    结果:

    对数曲线斜率为0.935333,所以是0.935333阶收敛
    

    收敛阶对数曲线图形

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月18日
  • 已采纳回答 11月18日
  • 创建了问题 11月18日

悬赏问题

  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上