matlab复数开n次方运算,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,

牛顿-拉夫逊方法(Newton-Raphson method)可以用于一元非线性方程。对于一元次方程,你可以使用该方法的一个变种,即牛顿法(Newton's method)。 首先,我们需要定义方程 f(x) = 0,其中 x 是未知数。对于一元次方程,我们可以将其表示为 f(x) = ax^4 + bx^3 + cx^2 + dx + e = 0,其中 a、b、c、d 和 e 是给定的系数。 然后,我们需要方程 f(x) = 0 的。牛顿法的迭代公式为:x_{n+1} = x_n - (f(x_n) / f'(x_n)),其中 x_n 和 x_{n+1} 分别是第 n 次和第 n+1 次迭代的近似,f'(x_n) 是方程 f(x) 的导数在 x_n 处的值。 下面是使用 MATLAB 实现牛顿法一元次方程的示例代码: ```matlab % 定义方程 f(x) = ax^4 + bx^3 + cx^2 + dx + e a = 1; b = 2; c = 3; d = 4; e = 5; % 定义初始近似 x0 x0 = 0; % 定义迭代终止条件 tolerance = 1e-6; maxIterations = 100; % 迭代 x = x0; iteration = 0; while abs(f(x)) > tolerance && iteration < maxIterations x = x - f(x) / df(x); iteration = iteration + 1; end % 输出结果 if abs(f(x)) <= tolerance disp(['Approximate root: ', num2str(x)]); disp(['Number of iterations: ', num2str(iteration)]); else disp('Failed to converge.'); end % 定义方程 f(x) 和导数 f'(x) 的函数 function fx = f(x) fx = a * x^4 + b * x^3 + c * x^2 + d * x + e; end function dfx = df(x) dfx = 4 * a * x^3 + 3 * b * x^2 + 2 * c * x + d; end ``` 你可以据你的具体方程修改代码中的系数和初始近似,并据需要调整迭代终止条件。运行代码后,你将得到近似的方程以及迭代次数。 需要注意的是,牛顿法可能会出现迭代不收敛或收敛到局部极值点的情况。因此,在使用牛顿法方程时,初始近似的选择非常重要。如果你的方程存在多个,可能需要尝试不同的初始近似来获得不同的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值