概述
clc;clear all;close all;
%% matlab 提取多项式各幂次的系数;使用sym2poly函数 (多项式,一元高阶) 通过A的length 可以确定阶数
%% E1:
syms x
f=3*x^5 + 2*x^2;% F(x)
A=sym2poly(f)% A =3 0 0 2 0 0 --> f(x)=3*x^5+0*x^4+0*x^3+2*x^2+0*x^1+0*x^0
%% E2
syms x
sym2poly(x^3 - 2*x - 5)
% ans =1 0 -2 -5
%% matlab 表达式变量系数,方程里未知数的系数. 使用coeffs(y)可以提取符号表达式的系数,但是所得的系数矩阵是按照表达式的逆向顺序排列的(多元一阶)
clc;clear all;close all;
%% E1
syms x1 x2 x3 y1 y2 y3
z=2*x1+4*x2+x3+5*y1+2*y2+6*y3
b=coeffs(z) %所得系数矩阵为逆向顺序 [ 6, 2, 5, 1, 4, 2]
%% E2 Matlab 提取多元齐次多项式系数 P的 x1^2*x2^2的系数
syms x1 x2
p=x1^4 + 2*x1^3*x2 + x1^2*x2^2 + 3*x1*x2^3 - x2^4; % p= 2*x1^3*x2 + 3*x1*x2^3 - x2^4+x1^4+ x1^2*x2^2;
a=sym2poly(subs(p,x2,1)); %[1,2,1,3,-1] % 自动从低到高阶顺序
b=a(length(a)-2) %x1^2*x2^2的系数b=a(length(a)-2)
% 当变量和项数增多 sym2poly(subs(subs(p,x1^2*x2^2,sym('h')),[x1 x2 x3 ... xn],[0
% 0])); ???????????
%% E3
syms x y z n
expr = x*y*z;%如何将y*z作为一个整体,然后求出其的系数x
% coeffs(expr,y*z);% 结果 Error ,貌似是不能输入表达式做为第二个参数
subs(expr,y*z,n);% 将 y*z这个表达式替换成一个变量比如n .ans =n*x
coeffs(subs(expr,y*z,n),n) % ans =x
% subs(expr,y,n); 以及 subs(expr,x*y*z,n);
% subs(expr,y,n) -->n*x*z ; coeffs(subs(expr,y,n))-->coeffs(n*x*z)-->1;
% coeffs(subs(expr,y,n),x)-->n*z
% 1.将expr转换为str,然后提取各项,匹配
% 2.具体分析这个问题,取巧 E2 http://zhidao.baidu.com/question/246232648.html
% 3.利用表达式除法
%% E4 连用两个coeff 提取expr = x^5*y+x*5 的系数
syms x y
expr = x^5*y+x*5;
% coeffs(expr) % [ 5, 1]
% 先用一次[c,t]=coeffs(expr,x)
[c,t]=coeffs(expr,x)% 时可以得到的c是有两个个元素 c =[ y, 5] t =[ x^5, x]
% 还需要判断哪一个是x^5*y那一项,赋给expr
% coeffs(expr,y)
最后
以上就是玩命猎豹为你收集整理的[matlab]获取多项式的系数,表达式的系数的全部内容,希望文章能够帮你解决[matlab]获取多项式的系数,表达式的系数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复