matlab运行后修改代码,方程求解程序代码求助-程序代码修改或新的代码

很简单的方程求解程序,调用mulDNewton函数求解,之前在Matlab 2011b版本上运行成功,现在在Matlab 2018a版本上总是出错,程序代码和出错的提示如下,mulDNewton函数代码也如下。

请教大神该程序应该如何修改,请给出正确的代码,必有重谢!@所有人

mulDNewton迭代函数代码如下:

function [r,m]=mulDNewton(F,x0,eps)

%非线性方程组:F

%初始解:x0

%解的精度:eps

%求得的一组解:r

%迭代步数:m

if nargin==2

eps=1.0e-4;

end

x0 = transpose(x0);

dF = jacobian(F);

m=1;

tol=1;

while tol>eps

tol=1;

w=1;

Fx = subs(F,findsym(F),x0);

dFx = subs(dF,findsym(dF),x0);

F1=norm(Fx);

while tol>=0                               %下面的循环是选取下山因子w的过程

r=x0-w*inv(dFx)*Fx;                         %核心的迭代公式

Fr = subs(F,findsym(F),r);

tol=norm(Fr)-F1;

w=w/2;

end

tol=norm(r-x0);

m=m+1;

x0=r;

if(m>10000)                                 %迭代步数控制

disp('迭代步数太多,可能不收敛!');

return;

end

end

方程程序代码如下:

clc

clear

syms x y z

f1=x^2+y+z^2-12

f2=x^3+y^2+z-8

f3=x+y+z-6

x0=[1 1 1]% 初值

f=[f1;f2;f3]%方程组

[r,b]=mulDNewton(f,x0,1.0e-6)%调用迭代函数

%求解方程,并将结果赋予N01,N02,N03

N01=r(1);

N02=r(2);

N03=r(3);

% 求解的正确结果应该是X=1,y=2, z=3

错误提示代码如下:

警告: FINDSYM will be removed in a future release. Use SYMVAR instead.

> In sym/findsym (line 32)

In mulDNewton (line 19)

In equation (line 11)

错误使用 sym>convertChar (line 1448)

Character vectors and strings in the first argument can only specify a variable or number. To evaluate character vectors and strings representing symbolic

expressions, use 'str2sym'.

出错 sym>tomupad (line 1214)

S = convertChar(x);

出错 sym (line 211)

S.s = tomupad(x);

出错 sym/subs>normalize (line 168)

X = {sym(X)};

出错 sym/subs>mupadsubs (line 157)

[X2,Y2,symX,symY] = normalize(X,Y); %#ok

出错 sym/subs (line 145)

G = mupadsubs(F,X,Y);

出错 mulDNewton (line 19)

Fx = subs(F,findsym(F),x0);

出错 equation (line 11)

[r,b]=mulDNewton(f,x0,1.0e-6)%调用迭代函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值