hebut 发表于 2009-7-27 21:36

问个解方程组的问题

用符号运算求解一个方程组,8个未知数,8个方程
得到的结果有6个未知数为零,把结果代入其中一个方程,明显不满足方程
请诸位大侠解释一下,问题有可能处在哪里?

用的是solve
PS:这些解并不是所有的方程都不符合,只有一些不符合

[ 本帖最后由 ChaChing 于 2009-7-27 22:56 编辑 ]

ChaChing 发表于 2009-7-27 22:59

建议楼主说清楚些, 并给齐完整格式:出错代码!

hebut 发表于 2009-7-28 10:14

%%初始化
clear
clc
syms p_00_I   p_10_I ; %p_00_II   p_10_IIp_00_III   p_10_III ;            %定义系数
syms Y_00_I   Y_10_IY_00_III   Y_10_III;                              %定义本征函数归一化的结果
syms k_00_I   k_10_Ik_00_II   k_10_II   k_00_III   k_10_III ;             %定义波数
syms X_0000_II_IX_1000_II_IX_0010_II_IX_1010_II_I;                  %定义积分结果
syms X_0000_II_IIIX_1000_II_IIIX_0010_II_IIIX_1010_II_III;          %定义积分结果
syms omega   dentheta ;                                                   %定义角速度,密度,角度

%%列方程


e1=sym('(1+A_00)*p_00_I*Y_00_I=(1+B_00)*p_00_II*X_0000_II_I+(1+B_10)*p_10_II*X_1000_II_I');
e2=sym('(1+A_10)*p_10_I*Y_10_I=(1+B_00)*p_00_II*X_0010_II_I+(1+B_10)*p_10_II*X_1010_II_I');
e3=sym('(1-A_00)*p_00_I*Y_00_I*k_00_I=(1-B_00)*p_00_II*X_0000_II_I*k_00_II+(1-B_10)*p_10_II*X_1000_II_I*k_10_II');
e4=sym('(1-A_10)*p_10_I*Y_10_I*k_10_I=(1-B_00)*p_00_II*X_0010_II_I*k_00_II+(1-B_10)*p_10_II*X_1010_II_I*k_10_II');
e5=sym('p_00_III*Y_00_III=(exp(-j*k_00_II*theta)+B_00*exp(j*k_00_II*theta))*p_00_II*X_0000_II_III+(exp(-j*k_10_II*theta)+B_10*exp(j*k_10_II*theta))*p_10_II*X_1000_II_III');
e6=sym('p_10_III*Y_10_III=(exp(-j*k_00_II*theta)+B_00*exp(j*k_00_II*theta))*p_00_II*X_0010_II_III+(exp(-j*k_10_II*theta)+B_10*exp(j*k_10_II*theta))*p_10_II*X_1010_II_III');
e7=sym('p_00_III*Y_00_III*k_00_III=(exp(-j*k_00_II*theta)-B_00*exp(j*k_00_II*theta))*p_00_II*X_0000_II_III*k_00_II+(exp(-j*k_10_II*theta)-B_10*exp(j*k_10_II*theta))*p_10_II*X_1000_II_III**k_10_II');
e8=sym('p_10_III*Y_10_III*k_10_III=(exp(-j*k_00_II*theta)-B_00*exp(j*k_00_II*theta))*p_00_II*X_0010_II_III*k_00_II+(exp(-j*k_10_II*theta)-B_10*exp(j*k_10_II*theta))*p_10_II*X_1010_II_III**k_10_II');

%%解方程组
=solve(e1,e2,e3,e4,e5,e6,e7,e8)



我觉得写不写代码也没什么用

[ 本帖最后由 hebut 于 2009-7-28 10:15 编辑 ]

starlviola 发表于 2009-7-28 22:57

回复 楼主 hebut 的帖子

直接数值离散求解算了,用符号求解慢,而且,你也不知道你的结果是不是有解析解。也不是所有非线性方程组都可以有解析解的。不想自己编程,试一下fsolve,把你的方程写成f{(x)=0的方程组形式。x1..x8为你的8个未知量,f(x)为你每个方程的的形式。

[ 本帖最后由 ChaChing 于 2009-7-29 18:52 编辑 ]

ChaChing 发表于 2009-7-29 18:56

原帖由 hebut 于 2009-7-28 10:14 发表 http://www.chinavib.com/forum/images/common/back.gif
...我觉得写不写代码也没什么用...
个人以为资讯越充足, 别人回覆较容易切题!

ChaChing 发表于 2010-2-3 11:42

整理电脑档案, 发现这帖, 顺便学习练习下, 并help solve
发现LZ可能solve使用错误!
=solve(e1,e2,e3,e4,e5,e6,e7,e8)
solve解出的变数可能并非如LZ的排列!
建议使用g = solve(eq1,eq2,...,eqn,var1,var2,...,varn)格式试试!
页: [1]
查看完整版本: 问个解方程组的问题