matlab解变量一元方程的简单方法

0.23x+7.73X^2+6.81x^3=a
a是一个变量,赋值如下
a=[0.02 0.09 0.25 0.4 0.55 0.76 0.2 0.3 0.5 1];

因为直接解原方程,
s1='0.23*x+7.73*x^2+6.81*x^3-a'
x=solve(s1)
解出来的x是3*1矩阵,也就是说有三个解。
这时候a代不进去了。

我选择的是一个个给a赋值,
利用roots命令求解,
例如:
a=0.09
roots([6.81 7.73 0.23 -a])

ans =

-1.0931
-0.1329
0.0910

这样未免太麻烦了, 请问有简单方法么?

a=[0.02 0.09 0.25 0.4 0.55 0.76 0.2 0.3 0.5 1];
s1='0.23*x+7.73*x^2+6.81*x^3-a'
x=subs(solve(s1))

每列代表对应的a得到的3个解,共10列(10个a)
原理:subs就是变量替换,你用solve解出来不是含有变量a吗,subs就把它用你定义的那个矩阵进行替换了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-11-30
clear;clc;close all
a=[0.02 0.09 0.25 0.4 0.55 0.76 0.2 0.3 0.5 1];
p=[6.81 7.73 0.23];
dat=reshape(cell2mat(cellfun(@roots,num2cell([repmat(p,length(a),1) a'],2),'UniformOutput',false)),length(p),[])';
每行代表对应的a得到的3个解
相似回答