如何利用MATLAB求解超越非线性方程求解?

MATLAB入门2 求根 解超越方程_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
MATLAB入门2 求根 解超越方程
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢查看: 2587|回复: 10|关注: 0
MATLAB中如何解超越方程组
<h1 style="color:# 麦片财富积分
新手, 积分 11, 距离下一级还需 39 积分
syms z x1 x2 y1 y2 ;
s=[];
zz=[];
for i=1:41
& & a=-4.2+i*0.2;
& & s(i)=a;
x1=(-1.48*exp((x1-0.9)/0.026)+0.98*(a)+0.02*(0));%q/Vc/&E0
x2=(-1.48*exp((x2-0.9)/0.026)+0.98*(a-(0.5-z*5*10^-3))+0.02*(0-(0.5-z*5*10^-3)));%q/Vc/&E0
y1=2.89*10^-4*(exp((x1-0.9)/0.026)+28.5*exp((x1-0.9)/0.013));
y2=2.89*10^-4*(exp((x2-0.9)/0.026)+28.5*exp((x2-0.9)/0.013));
z=-0.0533*(y2-y1);
[x1,x2,y1,y2,z]=solve('x1=(-1.48*exp((x1-0.9)/0.026)+0.98*(a)+0.02*(0))','x2=(-1.48*exp((x2-0.9)/0.026)+0.98*(a-(0.5-z*5*10^-3))+0.02*(0-(0.5-z*5*10^-3)))','y1=2.89*10^-4*(exp((x1-0.9)/0.026)+28.5*exp((x1-0.9)/0.013))','y2=2.89*10^-4*(exp((x2-0.9)/0.026)+28.5*exp((x2-0.9)/0.013))','z=-0.0533*(y2-y1)')
x1=vpa(x1,3);
x2=vpa(x2,3);
y1=vpa(y1,3);
y2=vpa(y2,3);
z=vpa(z,3);
zz(i)=vpa(z,3);
end
plot(s,zz,'*');复制代码这是我写的程序提示需要数值解但像不太会
论坛优秀回答者
帖子最佳答案
关注者: 662
明明可以简化为解方程,你非要写成方程组的形式,人为制造麻烦
几个方程的变量都没有混合出现在同一个方程里,因此分开求解能降低数值求解的难度
比如,从x1 (x2)的方程里可以求得 x1(x2),这个过程可以用 fzero 函数,再将求得的结果带入 y1、y2、z1、z2表达式即可
<h1 style="color:# 麦片财富积分
明明可以简化为解方程,你非要写成方程组的形式,人为制造麻烦
几个方程的变量都没有混合出现在同一个方程 ...
谢谢你的关注,对于x1,y1,z1的确是可以这样做。不过x2,y2,z2就不行了三个变量是纠缠在一起的,所以这个我就不太会了,望多多指教
论坛优秀回答者
帖子最佳答案
关注者: 662
谢谢你的关注,对于x1,y1,z1的确是可以这样做。不过x2,y2,z2就不行了三个变量是纠缠在一起的,所以这个 ...
如果真如你所说是纠缠在一起无法消元,那可以用 fsolve 数值求解方程组
<h1 style="color:# 麦片财富积分
如果真如你所说是纠缠在一起无法消元,那可以用 fsolve 数值求解方程组
嗯是的我也正在研究fsolve,等我再看看有问题再说
<h1 style="color:# 麦片财富积分
如果真如你所说是纠缠在一起无法消元,那可以用 fsolve 数值求解方程组
我对应MATLAB自带的例子改写我自己程序function F=myfun(x)
F=[ x(1)-(-1.48*exp((x(1)-0.9)/0.026)+0.98*(2-(0.5-x(3)*1*10^-2))+0.02*(0-(0.5-x(3)*1*10^-2)));
& & x(2)-(2.89*10^-4*(exp((x(1)-0.9)/0.026)+28.5*exp((x(1)-0.9)/0.013)));
& & x(3)+0.0533*x(1)];复制代码在运行时再接着输入 x0 = [-2; -2];& && && &&&% Make a starting guess at the solution
options=optimset('Display','iter');& &% Option to display output
[x,fval] = fsolve(@myfun,x0,options)
发现还是报错了
<h1 style="color:# 麦片财富积分
如果真如你所说是纠缠在一起无法消元,那可以用 fsolve 数值求解方程组
嗯我自己搞懂了THX
论坛优秀回答者
帖子最佳答案
关注者: 662
我对应MATLAB自带的例子改写我自己程序在运行时再接着输入 x0 = [-2; -2];& && && &&&% Make a starting&&...
你这里的方程是三元方程,你的初值x0长度为2,当然会出错啊
另外,提问的时候,记得给出错信息,方便他人解答
<h1 style="color:# 麦片财富积分
你这里的方程是三元方程,你的初值x0长度为2,当然会出错啊
另外,提问的时候,记得给出错信息,方便他人 ...
能不能解释一下X0[&&]这一步具体的意义是什么,是根据已有的值对我要解的值一个预判性的赋值吗?我把之前那有五个元素的方程组解出来了再x0[]中括号你给的都是1,1,1,1,1发现的得到的值和我所预期的还很接近。
论坛优秀回答者
帖子最佳答案
关注者: 662
|此回复为最佳答案
能不能解释一下X0[&&]这一步具体的意义是什么,是根据已有的值对我要解的值一个预判性的赋值吗?我把之前 ...
x0就是迭代的处置,数值方法求解方程组时,其原理本质上是迭代求解,需要你预先提供一个初值,算法再不断迭代的基础上尽量给出比该初值更好的解。所以,为了得到较好的解,初值要尽量合理
站长推荐 /2
机器视觉和人工智能在医疗设备中的应用及实现
MATLAB中文论坛是全球最大的 MATLAB & Simulink 中文社区。用户免费注册会员后,即可下载代码,讨论问题,请教资深用户及结识书籍作者。立即注册加入我们吧!
MATLAB官方社交平台
MATLAB中文论坛微社区&#xe621; 上传我的文档
&#xe602; 下载
&#xe60c; 收藏
该文档贡献者很忙,什么也没留下。
&#xe602; 下载此文档
正在努力加载中...
MATLAB应用 求解非线性方程
下载积分:1724
内容提示:MATLAB应用 求解非线性方程
文档格式:DOC|
浏览次数:18|
上传日期: 20:24:43|
文档星级:&#xe60b;&#xe60b;&#xe60b;&#xe60b;&#xe60b;&#xe60b;
全文阅读已结束,如果下载本文需要使用
&#xe71b; 1724 积分
&#xe602;下载此文档
该用户还上传了这些文档
MATLAB应用 求解非线性方程
关注微信公众号如何用MATLAB编程解超越方程【matlab吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:175,898贴子:
如何用MATLAB编程解超越方程收藏
我编的程序如下,但是解出来只有一个解,理论上应该至多有有限个解,想问这样编程会不会丢解了,还是真的只有一个解。tau2=0.2;l1=1;l2=0.2;k1=11;k2=0.3;M=0.1154;N=-0.3248;f=l1^2*l2^2+w^4-2*l1*l2*w^2+k2*N*w+k2*l1*N+(l1+l2)^2*w^2+(2*k2*N*w^3+2*k2*l1^2*N*w)*sin(w*tau2)-(2*k2*l1^2*l2*N+2*k2*l2*N*w^2)*cos(w*tau2)-k1*M*l2^2-k1*M*w^2;w=solve(f,w);w=double(w)
承办方:丽江市体育局 丽江斐瑞康网络科技有限公司
会有多个解的哈~应该是丢解了~
登录百度帐号推荐应用求解一个超越方程,如何通过数学方法求解? - 知乎25被浏览10094分享邀请回答45 条评论分享收藏感谢收起%% 其实我在逗你玩
close all;
warning off;
x = 0:0.01:1;
y2 = 2.^x;
plot(x, y1, 'r', 'Linewidth', 2);
plot(x, y2, 'b', 'Linewidth', 2);
set(gcf, 'color', 'w');
set(gca,'FontSize', 14);
set(gca,'FontName', 'Verdana');
legend('y_1 = X', 'y_2 = 2^X', 'Location', 'NorthWest');
xlabel('X');
ylabel('y_1和y_2');
title('其实我在逗你玩');
得到如下结果:看到了吧?在实数区间上没有交叉点。所以,该超越方程没有实数解。这么说楼主你懂的吧?下面继续求解,再次打开Matlab,在Command Windows里直接敲出下面这行代码(Mathematics/Maple也行):solve('X = 2^X', 'X')
得到答案:ans =-lambertw(0, -log(2))/log(2)注意这里有负号,和 的答案有区别!!!lambertw啥意思呢?help lambertw(在Command Windows直接敲)一下呗:help lambertw
Matlab官方的解释是这样的: LAMBERTW Lambert's W function.
W = LAMBERTW(X) is the solution to w*exp(w) = x.
W = LAMBERTW(K,X) is the K-th branch of this multi-valued function.
Reference: Robert M. Corless, G. H. Gonnet, D. E. G. Hare,
D. J. Jeffrey, and D. E. Knuth, "On the Lambert W Function",
Advances in Computational Mathematics, volume 5, 1996, pp. 329-359.
Overloaded methods:
sym/lambertw加粗处论文分享:。看不懂?好吧,再丢几个link出来:百度百科是这么解释的:。维基百科中文版是这么解释的:。维基百科英文版是这么解释的:。你自己点进去看噻。这么说楼主你懂的吧?好,下课。遇到像lambertw这种款式的函数,我都默认放弃治疗的。98 条评论分享收藏感谢收起查看更多回答}

我要回帖

更多关于 非线性方程求解 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信