m0_74915871 2024-01-17 11:17 采纳率: 100%
浏览 13
已结题

MATLABode函数无法识别变量

function [deltat , v2 , deltaw] = calculat_section(x1 , x2 , P ,v1 , k2 , k3)
    k1 = P;
    odefun = @(s , v)k1./v.^2 + k2.*v + k3./v;
    [s_ , v_] = ode23(odefun , [x1 , x2] , v1);
    v2 = v_(end);
    deltat = int(v./(k1./v + k2.*v.^3 + k3) , v , v1 , v2);
    deltaw = P.*deltat;
end

↑这样会提示函数或变量‘v’无法识别

加上syms v;会出现:
错误使用 assignin
尝试将 "v" 添加到静态工作区。
的提示,请问该如何解决?

%输入的x1 , x2 , P ,v1 , k2 , k3均为已知数据

  • 写回答

2条回答 默认 最新

  • 专家-郭老师 Java领域新星创作者 2024-01-17 11:22
    关注

    你的问题出在了 int 函数的调用方式上,这个函数其实不是你所想的积分函数,而是将数据型变量转换为整型的函数。在 MATLAB 中进行数值或者符号积分,应使用 integral 或者 int 函数。
    对于你的问题,应该使用 integral 函数进行数值积分,具体使用方式如下:

        fun = @(v) v./(k1./v + k2.*v.^3 + k3);
        deltat = integral(fun, v1, v2);
    
    

    也可以使用 syms 和 int 来进行符号积分,具体方式如下:

        syms v
        f = v/(k1/v + k2*v^3 + k3);
        deltat = int(f, v1, v2);
    
    

    这两种方法都可以得到你想要的结果,你可以根据自己的需要来选择。

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

报告相同问题?

问题事件

  • 系统已结题 1月25日
  • 已采纳回答 1月17日
  • 创建了问题 1月17日

悬赏问题

  • ¥100 ensp启动设备蓝屏,代码clock_watchdog_timeout
  • ¥15 Android studio AVD启动不了
  • ¥15 陆空双模式无人机怎么做
  • ¥15 想咨询点问题,与算法转换,负荷预测,数字孪生有关
  • ¥15 C#中的编译平台的区别影响
  • ¥15 软件供应链安全是跟可靠性有关还是跟安全性有关?
  • ¥15 电脑蓝屏logfilessrtsrttrail问题
  • ¥20 关于wordpress建站遇到的问题!(语言-php)(相关搜索:云服务器)
  • ¥15 【求职】怎么找到一个周围人素质都很高不会欺负他人,并且未来月薪能够达到一万以上(技术岗)的工作?希望可以收到写有具体,可靠,已经实践过了的路径的回答?
  • ¥15 Java+vue部署版本反编译