matlab复数方程的根,matlab解一元三次方程,得到的都是复数根。

对于你昨天的那个方程,是典型的非线性方程,我修改了程序,用fsolve函数来解,程序在下面。先新建一个m文件,再把以下全部程序直接复制进m文件中,运行即可,不要在主窗口中运行,用m文件来写程序,比直接在主窗口中操作方便,也算是一种好习惯吧。

由计算结果可知,解更符合实际,而且没有出现虚数。

function solution_nonl

clear all;clc

global aa bb tt pp

%-------------根据计算结果,修改迭代初值------------------------------------

xx0=[1];  %迭代初值,如果计算结果不符合实际,可修改,一般由pV=nRT给出初始的V,这里我直接取1了

t =[350.1500 348.9500 347.1500 345.4500 342.3500 340.7500 338.9500];

p =[101.3300 101.3300 101.3300 101.3300 101.3300 101.3300 101.3300 101.3300];

a =[0.9098 0.9365 0.9763 1.0223 1.0549 1.0968 1.1340 1.1773];

b =[0.0573 0.0565 0.0551 0.0535 0.0523 0.0507 0.0491 0.0470];

v=[];

for n=1:7

aa=a(n);

bb=b(n);

tt=t(n);

pp=p(n);

x(n)=fsolve(@nonlin,xx0);

end

disp(x)

function f= nonlin(x)

global aa bb tt pp

f=8.314*tt/(x-bb)-aa/(x*(x+bb))-pp;

计算结果:

28.7864   28.6871   28.5380   28.3969   28.1413   28.0084   27.8591

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值