[讨论] 请教关于符号变换与解方程式的问题

楼主: s4552752 (无垠大地)   2019-02-28 22:21:36
小弟有个关于符号转换以及解方程式的问题想请教一下板上的大大,
我原始的code简化如下:
[步骤1]
syms x y z a b c d (其中,x y z为我关心的内生变量,abcd为外生参数)
e1 = ax+by
e2 = cx-dy
e3 = ax-cz
E = symfun([e1;e2;e3],[x y z a b c d] )
[步骤2]
我想要解不同参数值下内生变量的值,但原本的模型很复杂,
没有解析解(无法将内生变量简化成以外生变量表示的形式)。
所以我只能土法炼钢如下:
TE = E(x,y,z,1,2,3,4)
然后Command Window就会得到特定参数值下的三条多项式:
x+2y
3x-4y
x-3z
为了解方程式,我另外建立一个function如下:
function B = testfun(x)
B = zeros(3,1);
B(1) = x+2y
B(2) = 3x-4y
B(3) = x-3z
end
然后利用ctrl+f,""手动""将x,y,z转换成x(1) x(2) x(3)
[步骤3]
接着在原本的m档中用fsolve解方程式:
SST = solve(@testfun,[0.5;0.5;0.5])
因为有很多组参数值要测试,想请问一下大家怎么修改code才可以轻松找出
不同参数值下的解。[步骤2]无限重复手很酸XDD
(因为模型没有解析解,常规的方法不管用)
我有尝试过一开始就把x,y,z打成x(1) x(2) x(3),但command window会显示
not a valid name >_<。
再请板上的大大帮忙,在此谢过!!
作者: caron0225 (淯仔)   2019-03-02 10:40:00
你这只是解联立方程式吧?用不着solve找0解把你的联立方程式写成矩阵形式,然后反除过去就得解了更正:是“线性”联立方程式,可直接写出矩阵表达式
楼主: s4552752 (无垠大地)   2019-03-02 11:11:00
我原本的式子不是线性的,所以没办法用这个方式处理@@
作者: caron0225 (淯仔)   2019-03-02 11:53:00
既然你是想找xyz0解,你只是要try不同的系数abcd,那就global a b c d 就可以将你要试的值pass 你的testfun里不需要去symfun吧?所以你可以直接B(1)=a*x+by,B(2)B(3)类似更正:B(1)=a*x(1)+b*x(2)
楼主: s4552752 (无垠大地)   2019-03-02 21:31:00
好的,我试试看。谢谢你的帮忙!

Links booklink

Contact Us: admin [ a t ] ucptt.com