求助大神,matlab fsolve 方程组解非线性方程组,求违约距离的

用fsolve怎么解这个非线性方程组啊。_matlab吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:161,699贴子:
用fsolve怎么解这个非线性方程组啊。收藏
各位大神求助。要交作业。
今年首个季度,进入越南的直接外商投资就达109.5亿美元,领跑东南亚
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或扫二维码下载作业帮
1.75亿学生的选择
下载作业帮安装包
扫二维码下载作业帮
1.75亿学生的选择
matlab怎么用fsolve函数解非线性方程组?
扫二维码下载作业帮
1.75亿学生的选择
举个例子你就明白了1)建立方程组的M-函数文件(nxxf.m)function eq=nxxf(x)eq(1)=sin(x(1))+x(2)^2+log(x(3))-7;eq(2)=3*x(1)+2^x(2)-x(3)^3+1;eq(3)=x(1)+x(2)+x(3)-5;2)运行程序(test4.m)y=fsolve('nxxf',[1,1,1],1) %[1,1,1]是迭代初值回车以后就有结果了
为您推荐:
其他类似问题
扫描下载二维码查看: 4542|回复: 5|关注: 0
我的fsolve解非线性方程调了好久没有结果
<h1 style="color:# 麦片财富积分
新手, 积分 5, 距离下一级还需 45 积分
我定义的一个函数如下:
formula.JPG (11.57 KB, 下载次数: 0)
15:06 上传
其实从物理上讲,Y就是如图所示的电阻、电感、电容的综合阻抗:
pi原理图.JPG (28.31 KB, 下载次数: 0)
15:06 上传
我想通过给定Y(w)在两个w点的值
formula2.JPG (11.89 KB, 下载次数: 0)
15:06 上传
来计算参数R、L、C。这显然是用四个方程(因为每个w点有两个方程,实部、虚部分别列出)来解三个未知数,方程是超定的。
我的程序在附件中,A_F_Compare_solveRLC_help.m程序是计算的主程序;solveRLC2.m是主程序调用的函数Y(w),求解Y(w)有三种计算形式,我能想到的都试了,还是没有解。
注:1、我给的计算初值就是理论值。
2、我最初用的方法是fsolve的默认算法,但是默认算法没法解,提示我要用levenberg-marquardt算法,我就用了这个算法,但还是没有结果啊~~3、尝试减少方程个数,用三个方程来解三个未知数,也没有结果
我的主程序:
%本主程序求解R,L,C
%在解中x(1)=R,x(2)=L,x(3)=1/C
format long
%====这一部分是计算Y(w)值的,文中的Y(w)就是Amp_dis(f),算出了两个频点处的值====
l=10;c0=0.007e-6;r0=1.16;l0=0.0033;c=c0*l;c=c/2;r=r0*l;L=l0*l;n=10000;
%-------------------第一个频点---------------------------
f1=50;w1=2*pi*f1;%w与f的关系,给定w和给定f其实本质上是一样的
Zc1=sqrt((r0+1j*w1*l0)/(1j*w1*c0));
Amp_dis1=Zc1*coth(l*sqrt((r0+1j*w1*l0)*1j*w1*c0));%分布参数幅值模型
%------------------第二个频点----------------------------
f3=100;w3=2*pi*f3;%w与f的关系,给定w和给定f其实本质上是一样的
Zc2=sqrt((r0+1j*w3*l0)/(1j*w3*c0));
Amp_dis2=Zc2*coth(l*sqrt((r0+1j*w3*l0)*1j*w3*c0));%分布参数幅值模型
%========================================================
x0 = [r;L;1/c];
%x0 = [r;L;c];%手算算法三的初值
%x0=[0;0;0];
options=optimset('Display','on','Algorithm','levenberg-marquardt');
%我打算用下式计算在f=50和100两个频点对应的综合阻抗值给定时的R、L、C
x = fsolve(@(x) solveRLC2(x,50,100,Amp_dis1,Amp_dis2), x0, options);%求解非线性方程组
我的Y(w)函数程序solveRLC2:在附件中,因为字数限制就发不上来了,见谅。
程序运行后在Command window 显示的:
No solution found.
fsolve stopped because the problem appears regular as measured by the gradient,
but the vector of function values is not near zero as measured by the
default value of the function tolerance.
&stopping criteria details&
fsolve stopped because the sum of squared function values, r, has gradient with
relative norm 5.1; this is less than 1e-4*options.TolFun = 1.0.
However, r = 9.8, exceeds sqrt(options.TolFun) = 1.3.
Optimization Metric& && && && && && &Options
norm(grad r) =5.75e-011& && &1e-4*TolFun =1e-010 (default)
r =9.31e+008& && && && && && && &sqrt(TolFun) = 1.0e-003 (default)
我用心调试了好久没有结果,希望大牛们能够指出问题所在,感激不尽!
[ 本帖最后由 yepp_u2 于
15:11 编辑 ]
15:06 上传
点击文件名下载附件
1.04 KB, 下载次数: 10
15:06 上传
点击文件名下载附件
2.46 KB, 下载次数: 14
Y(w)函数
<h1 style="color:# 麦片财富积分
关注者: 8
建议用1stOpt试试!
<h1 style="color:# 麦片财富积分
回复 2# youyouyou 的帖子
非常感谢,刚下载了试了一下,但是发现两个问题:
1)1stOpt没法给定初值啊
2)每次算的结果都不同
另外,我现在有个新思路,能不能把fsolve的解出的x(1)、x(2)、x(3)强制为实数、虚数啊,这样就更接近真实解了,应该会更省计算量吧?
<h1 style="color:# 麦片财富积分
关注者: 1
我想求solveRLC2(x,f1,f3,Amp1,Amp2)的模的最小值,没想到不同的初值得到不同的结果,并且L每次都是个负的。失望中……
我把主程序最后一行改成:
x = fminunc(@(x)solveRLC2(x,50,100,Amp_dis1,Amp_dis2), x0);%这里改不同的初值x0得到不同的结果
复制代码函数改成:
function [F]= solveRLC2(x,f1,f3,Amp1,Amp2)
w1=f1*2*
w3=f3*2*
F=abs((x(1)+1j*w1*x(2)+(1/1j*w1)*x(3))*(1/1j*w1)*x(3)/(x(1)+1j*w1*x(2)+2*(1/1j*w1)*x(3))-Amp1)^2+...
&&abs((x(1)+1j*w3*x(2)+(1/1j*w3)*x(3))*(1/1j*w3)*x(3)/(x(1)+1j*w3*x(2)+2*(1/1j*w3)*x(3))-Amp2)^2;复制代码
[ 本帖最后由 zsy312 于
14:59 编辑 ]
<h1 style="color:# 麦片财富积分
我刚学matlab,用fsolve解了个13个等式的方程组,目的是求缆索吊的受力,也是非线性方程,2个函数,2个子函数,找错找得我累死了,幸好刚刚确信成功了,所有函数都收敛为零了。感觉最关键的是编对方程组和编写准确无误,每个等式的反映的边界约束条件不能重复,从你的结果看应该是方程组没编对,根本没收敛。还有可能是初始条件要调整,不过这里出的问题远没前者大,可以先用图解法找到函数曲线交点的大致位置。
matlab的格式也是让我好恼火的地方,我朋友拿本高级应用书给我学,就十几页基础知识,光function的值输出就让我琢磨了好久。
还有正负号特别要注意,有时候错得摸不清头脑,最好给所有方程定个统一坐标系。
刚累完,实在不愿意看你的程式了,况且电子学我也不很清楚。只能把自己的体会写出来供你参考。
<h1 style="color:# 麦片财富积分
关注者: 2
有点复杂,关注中。。。
站长推荐 /3
使用MATLAB和Simulink进行软件无线电设计
Powered by查看: 1959|回复: 9|关注: 0
请问下怎么用fsolve解非线性方程组
<h1 style="color:# 麦片财富积分
新手, 积分 7, 距离下一级还需 43 积分
请问怎么用fsolve来解下面这个方程组。
已知三组N和i'的值:N=13,i'=1/3度;N=26,i'=2/3度,N=36,i'=1度。想求的d,n,i
d,n,i的值大约是.4,30度左右
不知道程序怎么写,谢谢了。
<h1 style="color:# 麦片财富积分
%x(1) = d,x(2) = n,x(3) =
function F = myfun(x)
N = [13,26,36];
idot = [1/3,2/3,1];
F = [ 2/632.8*x(1)*(sqrt((x(2)^-sin(x(3)+idot(1))^2))-sqrt((x(2)^-sin(x(3))^2)))-N(1);
& && &2/632.8*x(1)*(sqrt((x(2)^-sin(x(3)+idot(2))^2))-sqrt((x(2)^-sin(x(3))^2)))-N(2);
& && &2/632.8*x(1)*(sqrt((x(2)^-sin(x(3)+idot(3))^2))-sqrt((x(2)^-sin(x(3))^2)))-N(3);];[/code]
%program main
x0 = [2e6;1.4;30];
options = optimoptions('fsolve','Display','iter'); % Option to display output
[x,fval] = fsolve(@myfun,x0,options); % Call solver
自行help fsolve,按需调整参数,建议最好看看优化的书,也可以从拟合的角度出发
论坛优秀回答者
<h1 style="color:#52 麦片财富积分
关注者: 213
本帖最后由 jingzhaos 于
12:08 编辑
这个用fsolve应该求不出来,应该用优化或拟合。
<h1 style="color:# 麦片财富积分
%x(1) = d,x(2) = n,x(3) =
function F = myfun(x)
N = [13,26,36];
谢谢了。再请问下就这个问题而言应该怎么求解n,i,d最好呢。我现在有的数据就只有三组N和i'的值
<h1 style="color:# 麦片财富积分
比较依赖于你这三组数据的精确性,同时如果这三组数据相互独立(不相关),效果最佳。
非线性方程组的解存在性和唯一性在数学上没有明确的证明,通常未知数至少应与方程数相等,
对于本例而言,三个方程三个未知数,可能存在唯一解,若方程间相关,就有无穷多解,
对于N&3组数据,用拟合的方式可能解出某种意义下(如最小二乘)与所有数据误差最小的解。
考虑下公式的物理意义,不论是优化还是拟合,都是可以的,方法不是唯一的,取决于你的样本
数据(相关性、精确性)。
<h1 style="color:# 麦片财富积分
比较依赖于你这三组数据的精确性,同时如果这三组数据相互独立(不相关),效果最佳。
非线性方程组的解存 ...
嗯,我问了老师,的确是用拟合的办法就可以了。那个,如果方便的话能写下具体程序吗,非常感谢。实在是有点急...
<h1 style="color:# 麦片财富积分
|此回复为最佳答案
嗯,我问了老师,的确是用拟合的办法就可以了。那个,如果方便的话能写下具体程序吗,非常感谢。实在是有 ...
model = @(P,x)(2/632.8*P(1)*(sqrt((P(2).^2-sin(P(3)+x).^2))-sqrt((P(2).^2-sin(P(3)).^2))));
opts = statset('nlinfit');
opts.Display = 'iter';
% beta0 = [2;2;2];
P0 = [2e6;1.4;30*pi/180];
x = [1/3,2/3,1]*pi/180;
y = [13,26,36];
P = nlinfit(x,y,model,P0,opts);&&% P为拟合系数
X = 0:0.01:1;
X = X*pi/180;
Y = model(P,X);
figure('color',[1 1 1])
plot(X*180/pi,Y,'b',x*180/pi,y,'ro','LineWidth',2)
xlabel('i''&&/&&度')
ylabel('N')
legend('拟合曲线','数据点')
自行核对单位和物理意义,你们老师大概是这个意思,其实曲线基本近似直线,在小角度范围内
<h1 style="color:# 麦片财富积分
我试了一下,但是结果和期待的差了好多.....决定结果的因素除了初值还有其他什么吗。结果应该就是和初值差不多的,结果差了2个数量级....
<h1 style="color:# 麦片财富积分
我试了一下,但是结果和期待的差了好多.....决定结果的因素除了初值还有其他什么吗。结果应该就是和初值 ...
仔细核对程序,每个数据的单位和物理意义,比如弧度和度,在matlab里面sin等是以弧度为单位,你可以用优化算法核实一下
%x(1) = d,x(2) = n,x(3) =
function F = myfun(x)
N = [13,26,36];
idot = [1/3,2/3,1]*pi/180;
F = [ 2/632.8*x(1)*(sqrt((x(2)^2-sin(x(3)+idot(1))^2))-sqrt((x(2)^2-sin(x(3))^2)))-N(1);
& && &2/632.8*x(1)*(sqrt((x(2)^2-sin(x(3)+idot(2))^2))-sqrt((x(2)^2-sin(x(3))^2)))-N(2);
& && &2/632.8*x(1)*(sqrt((x(2)^2-sin(x(3)+idot(3))^2))-sqrt((x(2)^2-sin(x(3))^2)))-N(3);];[/code]
%program main
x0 = [2e6;1.4;30*pi/180];
options = optimoptions('fsolve','Display','iter'); % Option to display output
[x,fval] = fsolve(@myfun,x0,options); % Call solver
除了初值还有你的方程相关性和数据精度,以及收敛精度、迭代步数以及最终是否收敛
<h1 style="color:# 麦片财富积分
仔细核对程序,每个数据的单位和物理意义,比如弧度和度,在matlab里面sin等是以弧度为单位,你可以用优 ...
嗯,好的,了解了。非常感谢:loveliness::loveliness:
站长推荐 /3
使用MATLAB和Simulink进行软件无线电设计
Powered by}

我要回帖

更多关于 matlab fsolve 方程组 的文章

更多推荐

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

点击添加站长微信