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

如何在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循环,来改变参数即可。

    评论

报告相同问题?