matlab解一元三次方程写完代码运行出错,我写的代码如下:syms xL = 1:100;for i=1:length(L)x0 = solve('0.1125*tan(11*pi/36)*L(i)*x^3 - (tan(5*pi/36) + tan(pi/6))*(0.1125*tan(2*pi/9)*tan(11*pi/36)*L(i) + 1)*x^2 + (0.1125*tan(11*pi/36

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/04 08:42:03
matlab解一元三次方程写完代码运行出错,我写的代码如下:syms xL = 1:100;for i=1:length(L)x0 = solve('0.1125*tan(11*pi/36)*L(i)*x^3 - (tan(5*pi/36) + tan(pi/6))*(0.1125*tan(2*pi/9)*tan(11*pi/36)*L(i) + 1)*x^2 + (0.1125*tan(11*pi/36

matlab解一元三次方程写完代码运行出错,我写的代码如下:syms xL = 1:100;for i=1:length(L)x0 = solve('0.1125*tan(11*pi/36)*L(i)*x^3 - (tan(5*pi/36) + tan(pi/6))*(0.1125*tan(2*pi/9)*tan(11*pi/36)*L(i) + 1)*x^2 + (0.1125*tan(11*pi/36
matlab解一元三次方程写完代码运行出错,
我写的代码如下:
syms x
L = 1:100;
for i=1:length(L)
x0 = solve('0.1125*tan(11*pi/36)*L(i)*x^3 - (tan(5*pi/36) + tan(pi/6))*(0.1125*tan(2*pi/9)*tan(11*pi/36)*L(i) + 1)*x^2 + (0.1125*tan(11*pi/36)*tan(5*pi/36)*tan(pi/6)*(tan(2*pi/9))^2*L(i) + 2*(tan(2*pi/9) - tan(5*pi/36)*tan(pi/6)*tan(2*pi/9)))*x - (tan(2*pi/9))^2*(tan(5*pi/36) + tan(pi/6)) = 0');
x0 = eval(x0);
if isreal(x0) & x0

matlab解一元三次方程写完代码运行出错,我写的代码如下:syms xL = 1:100;for i=1:length(L)x0 = solve('0.1125*tan(11*pi/36)*L(i)*x^3 - (tan(5*pi/36) + tan(pi/6))*(0.1125*tan(2*pi/9)*tan(11*pi/36)*L(i) + 1)*x^2 + (0.1125*tan(11*pi/36
先不说其他的事情啊,先说这里面的几个不对的地方:
plot 函数调用的时候,语法是这样的plot(x,y),其中x 和 y 必须要有相同的长度,在你的代码中,if isreal(x0),就表示你在100个循环中不一定能找出100个值和你的100个L对应.
所以一开始必须先初始化一个输出,我在这里先把它叫做xFinal,使用这样的语句,xFinal = zeros(100,1),这样生成一个100行,一列,全是0的数组.这样就能起码保证你在plot的时候不会出错,说你的两个变量长度不等.
然后再往下说,你在为了解方程,把x定义成为了符号量 syms,这样你在plot的时候,就会报错说你的数据类型不对,其中一个是L,全部整数,另外一个是符号量,显然不对,所以我另外做了一个变量出来,就是刚刚说的xFinal.
你解出来的x0,可能是很多值,你要从中找出符合条件的,你的条件是小于2的实数.那么你这里就少了一个循环,你必须把x0里面的值也都找一遍,才能出结果.


我给你改完的代码是这样的:
syms x
L = 1:100;
xFinal = zeros(100,1);
for i=1:length(L)
x0 = solve('0.1125*tan(11*pi/36)*L(i)*x^3 - (tan(5*pi/36) + tan(pi/6))*(0.1125*tan(2*pi/9)*tan(11*pi/36)*L(i) + 1)*x^2 + (0.1125*tan(11*pi/36)*tan(5*pi/36)*tan(pi/6)*(tan(2*pi/9))^2*L(i) + 2*(tan(2*pi/9) - tan(5*pi/36)*tan(pi/6)*tan(2*pi/9)))*x - (tan(2*pi/9))^2*(tan(5*pi/36) + tan(pi/6)) = 0');
x0 = eval(x0);
    for j = 1:numel(x0)
        if (isreal(x0(j)) && x0(j)<2)
            xFinal(i) = x0(j);
        end
    end
end
plot(L,xFinal)
在下面就是输出结果



PS:加分加财富真心不需要,只要上面的内容有帮助就可以了.