查看: 216|回复: 2|关注: 0

[未答复] 使用fzero报错提示区间端点处的函数值必须为有限实数

[复制链接]

新手

7 麦片

财富积分


050


4

主题

19

帖子

0

最佳答案
 楼主| 发表于 2020-5-29 17:38:53 | 显示全部楼层 |阅读模式
ti0_TN=0.16438;
    tim_TN=fzero(@wf_TN_1_1,[0.0 ti0_TN]);
    function [gy]=wf_TN_1_1(x)
        ti0_TN=0.16438;
        D_TN=6.6E-6;
        tim_TN=x;
        gy1=ab_TN_1(tim_TN,ti0_TN,@TN_f1);
        gy=(gy1-(D_TN/2))/(D_TN/2);
    end
    function =ab_TN_1(down,up,f)                     %integral subroutine, where double(*f)(double) is the integral function, down and up is the limit of integal
        xi=[0.0,-0.90618,-0.538469,0.0,0.538469,0.90618];
        ai=[0.0,0.236927,0.478629,0.568889,0.478629,0.236927];
        tol=1e-3;
        mm=1;
        c1=abs(down)+abs(up);
        r1=0;
        while(1)
            s=0;
            h1=(up-down)/mm;
            for i=1:mm
                aa=down+h1*(i-1);
                bb=aa+h1;
                for j=1:6
                    x_TN=0.5*((bb-aa)*xi(j)+aa+bb);
                    s=s+ai(j)*f(x_TN);                  %double(*f)(double) is the integral function
                end
            end
            s=0.5*s*h1;
            if(tol-abs(s-r1)/(abs(s)+1)>=0)
                break;
            end
            r1=s;
            mm=mm+1;
            if((c1+h1==c1)||(mm<=100))
                break;
            end
        end
    end
    function [f1_TN]=TN_f1(ti_TN)
        tim_TN=0.032077;
        K11=10e-12;                  
        K33=15e-12;                     
        r1_TN=(K33-K11)/K33;
        f1_TN=sqrt(1-r1_TN*cos(ti_TN)*cos(ti_TN))/sqrt((cos(ti_TN)*cos(ti_TN)-cos(tim_TN)*cos(tim_TN))*g_TN(ti_TN));
    end
    function [g5_TN]=g_TN(ti_TN)
        tw_d=5.8677e5;                        
        DZ=1.0908e-6;                       
        tim_TN=0.032077;
        PI=3.1415926;
        K22=6e-12;                    
        K33=15e-12;                     
        E0=8.85e-12;                  
        ER1=28.0;                     
        ER2=8.0;                       
        MAX_TW_ANG=(250.0*PI/180.0);   
        D_TN=6.6e-6;                    
        P0=(2*PI/MAX_TW_ANG)*D_TN;                             
        q0=2*PI/P0;
        r2_TN=(K33-K22)/K33;
        a_TN= (ER1-ER2)/ER1;
        g1_TN=cos(tim_TN)*cos(tim_TN)*(1-r2_TN*cos(tim_TN)*cos(tim_TN))*(1-r2_TN*(cos(ti_TN)*cos(ti_TN)+cos(tim_TN)*cos(tim_TN)))*tw_d/(cos(ti_TN)*cos(ti_TN)*(1-r2_TN*cos(ti_TN)*cos(ti_TN)));
        g2_TN=2*q0*K22*cos(tim_TN)*cos(tim_TN)*(1-r2_TN*cos(tim_TN)*cos(tim_TN))*tw_d/(K33*cos(ti_TN)*cos(ti_TN)*(1-r2_TN*cos(ti_TN)*cos(ti_TN)));
        g3_TN=q0*q0*K22*K22*(cos(ti_TN)*cos(ti_TN)-cos(tim_TN)*cos(tim_TN))/(K33*K33*cos(ti_TN)*cos(ti_TN)*(1-r2_TN*cos(ti_TN)*cos(ti_TN)));
        g4_TN=DZ*DZ*a_TN/(ER1*E0*K33*(1-a_TN*cos(ti_TN)*cos(ti_TN))*(1-a_TN*cos(tim_TN)*cos(tim_TN)));
        g5_TN=g1_TN-g2_TN-g3_TN+g4_TN;
    end
上面是程序内容,用的matlab2018b版本,我想用fzeros求解wf_TN_1_1函数的根,但是运行时候提示我:
错误使用 fzero (line 257)
区间端点处的函数值必须为有限实数。
出错 m20200529 (line 2)
想问问大神们这个错误是什么引起的啊?是因为我的端点设置为0.0的缘故吗?
期待大神的解答
   tim_TN=fzero(@wf_TN_1_1,[0.0 ti0_TN]);

回复主题 已获打赏: 0 积分

举报

新手

7 麦片

财富积分


050


4

主题

19

帖子

0

最佳答案
 楼主| 发表于 2020-5-29 17:40:12 | 显示全部楼层
为什么我的程序显示全是划线啊,那些都是子程序:'(
回复此楼 已获打赏: 0 积分

举报

新手

7 麦片

财富积分


050


4

主题

19

帖子

0

最佳答案
 楼主| 发表于 2020-5-29 17:42:51 | 显示全部楼层
  1. ti0_TN=0.16438;
  2.     tim_TN=fzero(@wf_TN_1_1,[0.0 ti0_TN]);
  3.     function [gy]=wf_TN_1_1(x)                      %for the case V_TN<Vth_TN, the corresponding equation to solve the tim_TN
  4.         ti0_TN=0.16438;
  5.         D_TN=6.6E-6;
  6.         tim_TN=x;
  7.         gy1=ab_TN_1(tim_TN,ti0_TN,@TN_f1);
  8.         gy=(gy1-(D_TN/2))/(D_TN/2);
  9.     end
  10.     function [s]=ab_TN_1(down,up,f)                     %integral subroutine, where double(*f)(double) is the integral function, down and up is the limit of integal
  11.         xi=[0.0,-0.90618,-0.538469,0.0,0.538469,0.90618];
  12.         ai=[0.0,0.236927,0.478629,0.568889,0.478629,0.236927];
  13.         tol=1e-3;
  14.         mm=1;
  15.         c1=abs(down)+abs(up);
  16.         r1=0;
  17.         while(1)
  18.             s=0;
  19.             h1=(up-down)/mm;
  20.             for i=1:mm
  21.                 aa=down+h1*(i-1);
  22.                 bb=aa+h1;
  23.                 for j=1:6
  24.                     x_TN=0.5*((bb-aa)*xi(j)+aa+bb);
  25.                     s=s+ai(j)*f(x_TN);                  %double(*f)(double) is the integral function
  26.                 end
  27.             end
  28.             s=0.5*s*h1;
  29.             if(tol-abs(s-r1)/(abs(s)+1)>=0)
  30.                 break;
  31.             end
  32.             r1=s;
  33.             mm=mm+1;
  34.             if((c1+h1==c1)||(mm<=100))
  35.                 break;
  36.             end
  37.         end
  38.     end
  39.     function [f1_TN]=TN_f1(ti_TN)
  40.         tim_TN=0.032077;
  41.         K11=10e-12;                  
  42.         K33=15e-12;                     
  43.         r1_TN=(K33-K11)/K33;
  44.         f1_TN=sqrt(1-r1_TN*cos(ti_TN)*cos(ti_TN))/sqrt((cos(ti_TN)*cos(ti_TN)-cos(tim_TN)*cos(tim_TN))*g_TN(ti_TN));
  45.     end
  46.     function [g5_TN]=g_TN(ti_TN)
  47.         tw_d=5.8677e5;                        
  48.         DZ=1.0908e-6;                       
  49.         tim_TN=0.032077;
  50.         PI=3.1415926;
  51.         K22=6e-12;                    
  52.         K33=15e-12;                     
  53.         E0=8.85e-12;                  
  54.         ER1=28.0;                     
  55.         ER2=8.0;                       
  56.         MAX_TW_ANG=(250.0*PI/180.0);   
  57.         D_TN=6.6e-6;                    
  58.         P0=(2*PI/MAX_TW_ANG)*D_TN;                             
  59.         q0=2*PI/P0;
  60.         r2_TN=(K33-K22)/K33;
  61.         a_TN= (ER1-ER2)/ER1;
  62.         g1_TN=cos(tim_TN)*cos(tim_TN)*(1-r2_TN*cos(tim_TN)*cos(tim_TN))*(1-r2_TN*(cos(ti_TN)*cos(ti_TN)+cos(tim_TN)*cos(tim_TN)))*tw_d/(cos(ti_TN)*cos(ti_TN)*(1-r2_TN*cos(ti_TN)*cos(ti_TN)));
  63.         g2_TN=2*q0*K22*cos(tim_TN)*cos(tim_TN)*(1-r2_TN*cos(tim_TN)*cos(tim_TN))*tw_d/(K33*cos(ti_TN)*cos(ti_TN)*(1-r2_TN*cos(ti_TN)*cos(ti_TN)));
  64.         g3_TN=q0*q0*K22*K22*(cos(ti_TN)*cos(ti_TN)-cos(tim_TN)*cos(tim_TN))/(K33*K33*cos(ti_TN)*cos(ti_TN)*(1-r2_TN*cos(ti_TN)*cos(ti_TN)));
  65.         g4_TN=DZ*DZ*a_TN/(ER1*E0*K33*(1-a_TN*cos(ti_TN)*cos(ti_TN))*(1-a_TN*cos(tim_TN)*cos(tim_TN)));
  66.         g5_TN=g1_TN-g2_TN-g3_TN+g4_TN;
  67.     end
复制代码

重新提交一下我的程序,期待大神的解答
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表