MATLAB求解一元多次方程组

        平常我们求解一元多次方程组,计算量很大,算出结果非常麻烦,并且当方程组中有的参数不是数字,而是用字母表示的已知量时,计算过程和结果可能会更加复杂。我们可以使用MATLAB的符号公式来为我们计算求解。

        比如现有以下五次多项式公式:

d(t) = c_{0}+c_{1}t^{1}+c_{2}t^{2}+c_{3}t^{3}+c_{4}t^{4}+c_{5}t^{5}

        多项式的系数c0-c5未知。为简化计算,我们假设已知在t=0时刻的d_{0},一阶导\dot{d}_{0},二阶导\ddot{d}_{0},和t=tp时刻的d_{p},一阶导\dot{d}_{p},二阶导\ddot{d}_{p}的具体值。由于因为:

\dot{d}(t) = c_{1}+2c_{2}t^{1}+3c_{3}t^{2}+4c_{4}t^{3}+5c_{5}t^{4}

\ddot{d}(t) =2c_{2}+6c_{3}t^{1}+12c_{4}t^{2}+20c_{5}t^{3}

所以t=0可以列出3个方程,t=tp可以列出3个方程,共计6个方程6个未知量,可唯一求解:

d_{0}=c_{0}

\dot{d}_{0}=c_{1}

\ddot{d}_{0}=2c_{2}

d_{p}= c_{0}+c_{1}t_{p}^{1}+c_{2}t_{p}^{2}+c_{3}t_{p}^{3}+c_{4}t_{p}^{4}+c_{5}t_{p}^{5}

\dot{d}_{p} = c_{1}+2c_{2}t_{p}^{1}+3c_{3}t_{p}^{2}+4c_{4}t_{p}^{3}+5c_{5}t_{p}^{4}

\ddot{d}_{p} =2c_{2}+6c_{3}t_{p}^{1}+12c_{4}t_{p}^{2}+20c_{5}t_{p}^{3}

        在MATLAB中简化起算,我们用【A0 B0 C0 Ap Bp Cp】分别代表 【d_{0} \dot{d}_{0}\ddot{d}_{0}d_{p}\dot{d}_{p}\ddot{d}_{p} 】,则脚本如下:

clc;
clear;
close;

syms c0 c1 c2 c3 c4 c5 A0 B0 C0 tp Ap Bp Cp
 
% 定义一次方程
eq1 = c0 == A0;
eq2 = c1 == B0;
eq3 = 2*c2 == C0;
eq4 = c0 + c1*tp + c2*tp^2 + c3*tp^3 + c4*tp^4 + c5*tp^5 == Ap;
eq5 = c1 + 2*c2*tp + 3*c3*tp^2 + 4*c4*tp^3 + 5*c5*tp^4 == Bp;
eq6 = 2*c2 + 6*c3*tp + 12*c4*tp^2 + 20*c5*tp^3 == Cp;
% 解方程组
sol = solve([eq1, eq2, eq3, eq4, eq5, eq6], [c0,c1,c2,c3,c4,c5]);
 
% 显示解
disp(sol.c0);
disp(sol.c1);
disp(sol.c2);
disp(sol.c3);
disp(sol.c4);
disp(sol.c5);

        在命令行界面的求解结果如下:

        也即: 

c_{0} = d_{0}

c_{1} = \dot{d}_{0}

c_{2}=\ddot{d}_{0}/2

c_{3}=(-20d_{0}+20d_{p}-12\dot{d}_{0}t_{p}-8\dot{d}_{p}t_{p}-3\ddot{d}_{0}t_{p}^{2}+\ddot{d}_{p}t_{p}^2)/2*t_{p}^3

c_{4}=(30d_{0}-30d_{p}+16\dot{d}_{0}t_{p}+14\dot{d}_{p}t_{p}+3\ddot{d}_{0}t_{p}^{2}-2\ddot{d}_{p}t_{p}^2)/2*t_{p}^4

c_{5}=(-12d_{0}+12d_{p}-6\dot{d}_{0}t_{p}-6\dot{d}_{p}t_{p}-\ddot{d}_{0}t_{p}^{2}+\ddot{d}_{p}t_{p}^2)/2*t_{p}^5

        即完成对方程的系数求解。 代码中关于一次方程的定义部分可以依据实际情况自定义修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值