求用matlab解一道题!ax^4-bx^3+cx+d=0a=2154.796,b=1.164043,c=0.00001224,d=8.568E-08初值大概定为0.00054精度至少在小数点后6位,请问如果用迭代法解最后结果是多少?
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/19 10:27:21
求用matlab解一道题!ax^4-bx^3+cx+d=0a=2154.796,b=1.164043,c=0.00001224,d=8.568E-08初值大概定为0.00054精度至少在小数点后6位,请问如果用迭代法解最后结果是多少?
求用matlab解一道题!
ax^4-bx^3+cx+d=0
a=2154.796,b=1.164043,c=0.00001224,d=8.568E-08
初值大概定为0.00054
精度至少在小数点后6位,请问如果用迭代法解最后结果是多少?
求用matlab解一道题!ax^4-bx^3+cx+d=0a=2154.796,b=1.164043,c=0.00001224,d=8.568E-08初值大概定为0.00054精度至少在小数点后6位,请问如果用迭代法解最后结果是多少?
用fsolve函数解即可;
要建一个函数,如下:
function F = myfsolve(x)
a=2154.796;
b=1.164043;
c=0.00001224;
d=8.568E-08;
F=a*x^4-b*x^3+c*x+d;
保存为myfsolve.m.
然后再写求解过程:
x0=0.00054;
options=optimset('Display','iter');
[x,fval] = fsolve(@myfsolve,x0,options)
求解结果为:
x = 5.400000000000000e-004
迭代误差:fval = 9.228952864361376e-008
没必要搞那么复杂吧,直接用
roots([a b c 0 d])
就可以求出方程的根,精度超过你要求的6位数字。
如果想求准确的解,也可以用
syms x
r=solve(a*x^4-b*x^3+c*x+d)
clc;
clear;
syms x a b c d;
a=2154.796;
b=1.164043;
c=0.00001224;
d=8.568E-08;
solve('2154.796*x^3+1.164043*x^2+0.00001224*x+(8.568E-08)=0')
解出来3个根:
[ ...
全部展开
clc;
clear;
syms x a b c d;
a=2154.796;
b=1.164043;
c=0.00001224;
d=8.568E-08;
solve('2154.796*x^3+1.164043*x^2+0.00001224*x+(8.568E-08)=0')
解出来3个根:
[ -.63105640566664225970558214972639e-3]
[ .45423051347983306689948745473315e-4-.24687266667242755577096929209064e-3*i]
[ .45423051347983306689948745473315e-4+.24687266667242755577096929209064e-3*i]
其中一个实数根就是你所要的
收起
扶持