A_Wild_Scientist 2021-06-07 20:32 采纳率: 0%
浏览 220
已结题

如何在matlab中建立一个函数作为fsolve求解的方程组,使其参数在运行过程中可变

如题,萌新希望通过fsolve求解一个方程组在不同参数条件下的解,但是没有找到很好的办法来控制这些参数。

如图,问题的具体情境是这样,根据空气动力学知识,我列出了一个方程组,需要求解的量为x,而p0,pe以及AdAt则是不同情况下该问题的固定参数(最开始我是用一些常数的,运行的结果很成功,与习题答案对的上),在每次求解过程中不能改变。

但我又不满足于一次只能求一个情况的解,希望能够利用循环每次改变参数,从而将各种不同条件下方程组的解求解出来,进而可以作一个图表,既表示方程组的解随条件的变化趋势,又能查出任意情况下方程组的解。

于是就出现了问题。以我这张图中的形式建立的函数(或者说方程组)肯定是不能满足要求的,因为在使用fsolve解这个方程组的时候,会把后面那些固定参数也当成未知数。然而更坑的不仅于此,在实际使用该函数的过程中,我发现甚至根本无法用fsolve解这样的函数,因为输入根本搞不懂该怎么写🤕🤕🤕我不知道如何处理这种输入既有向量又有数字的函数😭

(前6个是x初值,后三个是参数的一个情况)

之前使用fsolve函数都是将x作为输入量,使x作为向量包含多个数字以满足多元方程组的需求。但是现在明显也不能用这种方法来改善,因为后面那几个数字是固定参数而不是未知量,是不能在求解过程中改变的。

所以希望有大佬能给出一个方法,如何建立函数让fsolve求解,才能够得到这样的方程组在不同固定参数条件下的解。🙏🙏🙏🙏🙏

萌新现在只想到了使用全局变量的办法,但感觉这样子对后续使用变量名可能会有很多限制,感觉不是最好的办法,所以还是希望大佬能有所指点,给一个更好的办法。

  • 写回答

3条回答 默认 最新

  • CSDN专家-Matlab_Fans 2021-06-07 20:46
    关注

    解决方案:

    1. 先对参数赋值;

    2. 定义匿名函数f,表示参数赋值后仅关于x的函数f(x)

    3. 使用fsolve求解方程f(x)=0

    代码:

    p0 = 1
    pe = 1
    AdAt = 1
    f = @(x) fun(x,p0,pe,AdAt)
    x0 = [0 0 0 0 0 0];
    xs = fsolve(f,x0);

    如果参数需要变化时,在上述求解段外加for循环,来改变参数即可。

    评论

报告相同问题?

悬赏问题

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