weixin_45801875 2022-01-18 16:32 采纳率: 100%
浏览 37
已结题

MATLAB二变量隐函数显化取log10绘图的问题

问题遇到的现象和发生背景

img

问题相关代码,请勿粘贴截图
syms   C1 sigmaeff 
C0 = 1-C1;
sigmacp = 10^(-8);
sigmain_plant = 10^(5);
sigmaout_plant = 2000;
S11 = 0.2;
S33 = 0.6;
a = (sigmacp-sigmaeff)/(sigmaeff+(1/3)*(sigmacp-sigmaeff));
b = (2*(sigmain_plant-sigmaeff))/(sigmaeff+S11*(sigmain_plant-sigmaeff));
d = (sigmaout_plant-sigmaeff)/(sigmaeff+S33*(sigmaout_plant-sigmaeff));
F = C0*(a)+(1/3)*C1*(b+d)
j = solve(F,sigmaeff)
g = log10(j)
fplot(g,[0,1])

运行结果及报错内容

显示在忙,出不来图

我的解答思路和尝试过的方法

会不会是绘图函数的问题或者是solve的问题

我想要达到的结果

绘制出log10(eff)关于C1的图像



  • 写回答

1条回答 默认 最新

  • 技术专家团-Joel 2022-01-18 18:33
    关注

    可以化成arr的形式然后用fsolve

    syms   C1 sigmaeff
    C1_arr = 0.01:0.01:1; % 定义C1的向量
    sigmaeff_arr = zeros(size(C1_arr));
    C0 = 1-C1;
    sigmacp = 10^(-8);
    sigmain_plant = 10^(5);
    sigmaout_plant = 2000;
    S11 = 0.2;
    S33 = 0.6;
    a = (sigmacp-sigmaeff)/(sigmaeff+(1/3)*(sigmacp-sigmaeff));
    b = (2*(sigmain_plant-sigmaeff))/(sigmaeff+S11*(sigmain_plant-sigmaeff));
    d = (sigmaout_plant-sigmaeff)/(sigmaeff+S33*(sigmaout_plant-sigmaeff));
    F = C0*(a)+(1/3)*C1*(b+d);
    F = matlabFunction(F);
    for i = 1:1:numel(C1_arr)
        C1_v = C1_arr(i);
        f = @(sigmaeff)F(C1_v, sigmaeff);
        sigmaeff_arr(i) = fsolve(f, 1e2);
    end
    semilogy(C1_arr,log10(sigmaeff_arr))
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月28日
  • 已采纳回答 1月20日
  • 创建了问题 1月18日

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器