欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

matlab怎么重新打开新的代码,方程求解程序代码求助-程序代码修改或新的代码...

发布时间:2024/7/23 33 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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)%调用迭代函数

总结

以上是生活随笔为你收集整理的matlab怎么重新打开新的代码,方程求解程序代码求助-程序代码修改或新的代码...的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。