matlab问题紧急求解!请哪位高手帮帮忙啊!
f1=diff(f,x1);f2=diff(f,x2);其中f为很多因式相乘的二元函数(matlab无法完全显示表达式),f1与f2分别为其关于x1和x2的偏导。现要求的...
f1=diff(f,x1); f2=diff(f,x2); 其中f为很多因式相乘的二元函数(matlab无法完全显示表达式),f1与f2分别为其关于x1和x2的偏导。现要求的问题是: 令f1=0,f2=0,求其组成的方程组的数值解!求MATLAB代码或者方法!
展开
1个回答
展开全部
给你例子看看吧
syms
x1
x2
f=x1^2+2*x2^2+6*x1*x2-8+(x1-6)*(x2-x1)*(x2+6)
f1=diff(f,x1)
f2=diff(f,x2)
[x1,x2]=solve(f1,f2,'x1','x2')
像这样简单的,可以使用solve直接求出来,但如果方程很复杂,solve是求不出来的,这是需要使用fsolve来数值求解了!
具体方法是
首先使用上面的方法求出两个导数,然后把他们复制出来,新建一个函数,写出函数文件,然后在使用fsolve求解
还拿上面的举例子
两个导数分别是
f1
=
2*x1
+
6*x2
-
(x1
-
6)*(x2
+
6)
-
(x1
-
x2)*(x2
+
6)
f2
=
6*x1
+
4*x2
+
(x1
-
6)*(x2
+
6)
-
(x1
-
x2)*(x1
-
6)
那么函数可写成
function
main
x=fsolve(@(x)myfun(x),[10,-10])
x=fsolve(@(x)myfun(x),[1,-1])
function
F=myfun(x)
F=[2*x(1)
+
6*x(2)
-
(x(1)
-
6)*(x(2)
+
6)
-
(x(1)
-
x(2))*(x(2)
+
6)
6*x(1)
+
4*x(2)
+
(x(1)
-
6)*(x(2)
+
6)
-
(x(1)
-
x(2))*(x(1)
-
6)];
这样只能求出实根,不能求虚根
祝你学习愉快!
syms
x1
x2
f=x1^2+2*x2^2+6*x1*x2-8+(x1-6)*(x2-x1)*(x2+6)
f1=diff(f,x1)
f2=diff(f,x2)
[x1,x2]=solve(f1,f2,'x1','x2')
像这样简单的,可以使用solve直接求出来,但如果方程很复杂,solve是求不出来的,这是需要使用fsolve来数值求解了!
具体方法是
首先使用上面的方法求出两个导数,然后把他们复制出来,新建一个函数,写出函数文件,然后在使用fsolve求解
还拿上面的举例子
两个导数分别是
f1
=
2*x1
+
6*x2
-
(x1
-
6)*(x2
+
6)
-
(x1
-
x2)*(x2
+
6)
f2
=
6*x1
+
4*x2
+
(x1
-
6)*(x2
+
6)
-
(x1
-
x2)*(x1
-
6)
那么函数可写成
function
main
x=fsolve(@(x)myfun(x),[10,-10])
x=fsolve(@(x)myfun(x),[1,-1])
function
F=myfun(x)
F=[2*x(1)
+
6*x(2)
-
(x(1)
-
6)*(x(2)
+
6)
-
(x(1)
-
x(2))*(x(2)
+
6)
6*x(1)
+
4*x(2)
+
(x(1)
-
6)*(x(2)
+
6)
-
(x(1)
-
x(2))*(x(1)
-
6)];
这样只能求出实根,不能求虚根
祝你学习愉快!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询