中国股票的发展前景:matlab如何求解待定系数的问题

来源:百度文库 编辑:高考问答 时间:2024/04/30 01:06:55
matlab怎么用待定系数法?
如:已知:2*x^3+3*x^2+21*x+4=3*a*x^3+b*x^2+c*x+d
利用待定系数法可以很容易的得出abcd的值,但是如何用matlab实现呢?
谢谢
谢谢“化学工程”
不过还有:1,按照您说的,运算到c3=maple('coeff',ff,x,3)时,有如下错误提示。(您的意思我可以理解)
??? Error using ==> sym.maple
Error, unable to compute coeff
2,>> c3=maple('coeff',ff,x,3)
c3 =2-3*a
我目的是要求出a的值,如何进一步求出a?当然并不是用solve('2-3*a=0')去解。因为我是要编程(m文件),运行后,直接得到a的值,中间不需人为干预。
再次感谢。

【1】把函数变形
>> f=sym('2*x^3+3*x^2+21*x+4-(3*a*x^3+b*x^2+c*x+d)=0')
f =
2*x^3+3*x^2+21*x+4-(3*a*x^3+b*x^2+c*x+d)=0
【2】用collect合并同类项
>>ff=collect(f):
(2-3*a)*x^3+(3-b)*x^2+(21-c)*x+4-d = 0

【3】用maple提取多项式系数,如果很多,可以用循环语句。
>> c3=maple('coeff',ff,x,3)
c3 =2-3*a

>> c1=maple('coeff',ff,x,1)
c1 =21-c

>> c2=maple('coeff',ff,x,2)
c2 =3-b

>>c0=maple('coeff',ff,x,0)
c0 =4-d

补充:
这次变成这样,程序倒是通了,我不是很满意,咱们共同把它整理好,如何?
syms a b c d x
%【1】把函数变形
f=sym('2*x^3+3*x^2+21*x+4-(3*a*x^3+b*x^2+c*x+d)')

N=3;
for i=0:N
temp=maple('coeff',f,x,N-i);
cp(1,i+1)={temp};
end
celldisp(cp);

再补充:这次总算是解决了,就是看起来很笨,不是很理想,凑合着用,当然我相信可以修改的很漂亮。
syms a b c d x
f=sym('2*x^3+3*x^2+21*x+4-(3*a*x^3+b*x^2+c*x+d)')
N=3;
for i=0:N
temp=maple('coeff',f,x,N-i);
temp1(i+1)=temp;
end
cp=temp1
a=solve(cp(1)), b=solve(cp(2)), c=solve(cp(3)), d=solve(cp(4))

运行结果:
a =2/3
b =3
c =21
d =4

解法1:solve('x^2-10') %用于一般的方程,也包括指数、余弦等复杂方程
解法2:roots([1 0 -10]) %用于多项式方程
解法3:fzero采用零点,是极限的求法
f=@(x) x^2-10;
y3_1=fzero(f,[0,5]),y3_2=fzero(f,[-5,0])