关于matlab一次求解很多个形式相同的方程组需要求解1000个方程组,这些方程组都是一元三次,且具有同样的形式,只是系数不一样,其形式如下:p1(:).t^3+p2(:).t^2+p3(:).t=x 其中p1、p2和p3都是1000*1的

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/20 13:18:01
关于matlab一次求解很多个形式相同的方程组需要求解1000个方程组,这些方程组都是一元三次,且具有同样的形式,只是系数不一样,其形式如下:p1(:).t^3+p2(:).t^2+p3(:).t=x 其中p1、p2和p3都是1000*1的
xVSZGWS\J?"o[;d0ORm@Ƣ\. Kާ vdNLusw="֢O}#.^U+z+sL@)v٦Zu"=ccc0|S>1nm:,_{]#zAgiIe<@ T`k^XN4Tj(4z-Uo~lB˭0q'4.WwBb8`O7!oJh MH Ѧˋ5?!8 7թYbaDZJ?n.dMlӸ1C-F/ɣ*ה#4g3%NX{亣Rࣧ~K:`oi5Md ?;Bߒ4~O$;C(Y qs]k[w5p/9'HeJH+1f0 v[5Z)aQ(4,hnˣϼ 0)u!p,{|T2'{72f>6?pXںyN'߀ i3&1%;

关于matlab一次求解很多个形式相同的方程组需要求解1000个方程组,这些方程组都是一元三次,且具有同样的形式,只是系数不一样,其形式如下:p1(:).t^3+p2(:).t^2+p3(:).t=x 其中p1、p2和p3都是1000*1的
关于matlab一次求解很多个形式相同的方程组
需要求解1000个方程组,这些方程组都是一元三次,且具有同样的形式,只是系数不一样,其形式如下:
p1(:).t^3+p2(:).t^2+p3(:).t=x 其中p1、p2和p3都是1000*1的数组,x为一个数值
我写的代码如下(随便给出p1、p2和p3、x 的数值):
p1=rand(1000,1); p2=rand(1000,1); p3=rand(1000,1); x=0.1;
sym t
eq=p1(:).t^3+p2(:).t^2+p3(:).t-x
t=solve(eq);
悲剧的是,这样解不出来,个人想可能是因为 t 的定义不对,请问该如何解决?十分感激!

关于matlab一次求解很多个形式相同的方程组需要求解1000个方程组,这些方程组都是一元三次,且具有同样的形式,只是系数不一样,其形式如下:p1(:).t^3+p2(:).t^2+p3(:).t=x 其中p1、p2和p3都是1000*1的
代码不长,问题可不少:
1、第二行:
定义符号变量应该用syms t,而不是sym t(如果用sym函数,则应该返回参数t=sym(t));
2、第三行:
eq=p1(:).t^3+p2(:).t^2+p3(:).t-x
首先,相乘应该用“*”,而不是“.”;
其次,如果你把方程组写到一起,则求解时会被认为联立求解.我猜测你的1000个方程应该是独立求解的,这与你的希望不符.
3、如果想求数值解,可考虑用roots,速度比起求符号解相差无数倍.只需把循环体里面的内容改成下面的代码即可:
T(i,:)=roots([p1(i) p2(i) p3(i) -x]);
以下是改后的参考代码(每个方程的根保存为一行):
p1=rand(1000,1); p2=rand(1000,1); p3=rand(1000,1); x=0.1;
T = sym(zeros(1000,3));
for i=1:length(p1)
syms t
eq=p1(i)*t^3+p2(i)*t^2+p3(i)*t-x;
T(i,:)=solve(eq).';
end

先不说方程个数与自变量的关系,solve这个命令不是“万能”的,即简单方程一般没问题,但难的,特别是非线性的就很难处理,有可能得不到解析解

另外,一元三次方程,一个方程就能得到结果,要么三个实根,要么一个实根两个共轭复根,这种情况solve可以解决

但方程个数多于一个时,即方程个数比自变量个数多,是个超定非线性方程组,在这个问题里,solve根本没办法

全部展开

先不说方程个数与自变量的关系,solve这个命令不是“万能”的,即简单方程一般没问题,但难的,特别是非线性的就很难处理,有可能得不到解析解

另外,一元三次方程,一个方程就能得到结果,要么三个实根,要么一个实根两个共轭复根,这种情况solve可以解决

但方程个数多于一个时,即方程个数比自变量个数多,是个超定非线性方程组,在这个问题里,solve根本没办法

为解决以上问题,可选用数值求解命令fsolve

要说明的是,很可能选用的数据本身就导致方程组无解,这时可以选择一个使方程成立的近似解,即最小二乘法来处理

先写个m文件(即方程组)
function y=funz(t,a,b)
y=a*[t^3;t^2;t^1]-b;

再输入:
n=1000;
a=rand(n,3);
b=rand(n,1);
t0=1;
[t,fv,ef,out,jac]=fsolve(@funz,t0,[],a,b)

输出的t为所求

收起

关于matlab一次求解很多个形式相同的方程组需要求解1000个方程组,这些方程组都是一元三次,且具有同样的形式,只是系数不一样,其形式如下:p1(:).t^3+p2(:).t^2+p3(:).t=x 其中p1、p2和p3都是1000*1的 如何使用matlab求解同一形式多个的2元一次方程组.不知道要如何实现同时求解多个形式相同只是系数不同的2元一次方程组,只会一个一个的求解,但是这样太没有效率了. matlab中如何将若干个形式相同的二维矩阵转叠加成三维矩阵? 如何用MATLAB求解18元一次方程组,即用18个方程来求解其中的18个未知数 矩阵的求解.matlab 关于matlab解多元一次方程组的问题如果方程组中含有求和符号应该怎么求解?还是用solve函数吗? 优化非线性方程组的求解用MATLAB和C语言哪个好?原数据很多的 matlab可不可以像mathcad一样写公式就是一个页面可以放很多变量,下面的公式可以使用上面得到结果的变量,matlab好像一次只是做一次求解,M-file又不直观,不能随意去修改数值. 关于matlab的产生随机数的问题:我想要matlab产生一个在一定范围内的随机整数数组,且数组内个元素拒不相同,有这样的matlab函数么? 如何用matlab来求解多元一次现性方程 matlab 求解 关于积分,matlab求解已知a=1:10:150,求解图片等式对应的Q值,用matlab怎么写代码啊? 那一次,我-- 很多,最好是关于友情的 matlab关于分段微分方程的求解t为自由变量,当t matlab解方程求助!matlab菜鸟求助.一个二元一次方程组,a1x1+b1x2=c1;a2x1+b2x1=c2.a1,a2,b1,b2固定.c1,c2不断变化.取得很多个c1,c2值后,得到很多个这个方程.我要算出随着c1,c2不断变化而不断变化的x1,x2.. matlab求解符号表达式的最值如何把符号表达式转化为函数形式,比如用fminunc等 matlab求解一元三次方程求解x^3+x^2-55x+125=0的根,本人刚学,很多不是很了解,请指教, matlab 怎么用.关于数学建模 怎么把很多的数据输入再画图