24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2173  |  回复: 6
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

小刘8885

木虫 (正式写手)

[求助] Matalab 程序调试

下述程序运行出错,求高手指点。这是一个M文件。

function f4=func_main(name,a,q1,q2,x2,flag)
% flag=0 represent complex permittivity
% flag=1 represent complex permeability
data=load(name);
xf=data(:,1);
if (flag==0)
    y1=data(:,2)+data(:,3)*i;
elseif (flag==1)
    y1=data(:,4)+data(:,5)*i;
else
    disp('0 is complex perimittivity, 1 is complex permeability');
    return;
end

x11=func1(a,q1,y1,x2);  
%调用函数func1,求解x1
%Hanai formula 的求解结果 %求解的是x1,为绝对介电常数
x1=x11;
a=real(x1);
b=imag(x1);
c=[a,b];

x0=zeros(length(data),1);
F=fsolve(@(y2)func2(a,q2,x1,x2,y2),x0);
%调用前述func1所求得的x1,代入函数func2
%求解超越方程的y2值。
f4=F;
r = [real(f4), imag(f4)];

plotyy(xf,a,xf,b);
save('data1.txt', 'c', '-ascii');
save('data2.txt', 'r', '-ascii');

function x1=func1(a,q1,y1,x2)
x1=(q1.*x2-x2+y1.*(x2./y1).^a)./(q1+(x2./y1).^a-1);
%求解x1

function F=func2(a,q2,x1,x2,y2)
F=(((1-q2)*(x2-x1))./(x2^a)).*(y2.^a)-y2+x1;
%求解y2



另外的调用代码如下:

% Exop4
clear up;
clc;

a=1/3;
q1=0.06;
q2=0.107;
x2=3.7+0.703*i;
flag=0;
func_main('3.txt',a,q1,q2,x2,flag);
复制到command窗口就可以运行。
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : func_main.m
  • 2012-05-27 11:38:14, 945 bytes
  • 附件 2 : 3.txt
  • 2012-05-27 11:38:25, 3.1 K
  • 附件 3 : Exop4.m
  • 2012-05-27 11:39:11, 119 bytes

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijie169

铜虫 (著名写手)

【答案】应助回帖


感谢参与,应助指数 +1
小刘8885: 金币+1, 有帮助 2012-05-29 10:09:49
plotyy(xf,a,xf,b);这句不对吧!!!
3楼2012-05-28 13:11:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 7 个回答

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

感谢参与,应助指数 +1
F里的x2^a应该点乘吧?有什么问题出什么错也不说,有几个能帮你
showmethemoney
2楼2012-05-28 09:10:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小刘8885

木虫 (正式写手)

引用回帖:
2楼: Originally posted by csgt0 at 2012-05-28 09:10:18
F里的x2^a应该点乘吧?有什么问题出什么错也不说,有几个能帮你

您可以帮我看看,改正点乘之后,运行之后显示下面的错误:
Error using trustnleqn (line 28)
Objective function is returning undefined values at initial point. FSOLVE cannot continue.

Error in fsolve (line 399)
    [x,FVAL,JACOB,EXITFLAG,OUTPUT,msgData]=...

Error in func_main (line 27)
F=fsolve(@(y2)func2(a,q2,x1,x2,y2),x0);
4楼2012-05-28 18:43:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小刘8885

木虫 (正式写手)

引用回帖:
3楼: Originally posted by lijie169 at 2012-05-28 13:11:52
plotyy(xf,a,xf,b);这句不对吧!!!

这句语句就是画一个双y轴的的图,好像没有错啊。
function f4=func_main(name,a,q1,q2,X,flag)
% flag=0 represent complex permittivity
% flag=1 represent complex permeability
data=load(name);
xf=data(:,1);
x2=X*ones(length(data),1);
if (flag==0)
    y1=data(:,2)+data(:,3)*i;
   
elseif (flag==1)
    y1=data(:,4)+data(:,5)*i;
else
    disp('0 is complex perimittivity, 1 is complex permeability');
    return;
end

x11=func1(a,q1,y1,x2);  
%调用函数func1,求解x1
%Hanai formula 的求解结果 %求解的是x1,为绝对介电常数
x1=x11;
a=real(x1);
b=imag(x1);
c=[a,b];
plotyy(xf,a,xf,b);

x0=zeros(length(data),1);
F=fsolve(@(y2)func2(a,q2,x1,x2,y2),x0);
%调用前述func1所求得的x1,代入函数func2
%求解超越方程的y2值。
f4=F;
r = [real(f4), imag(f4)];


save('data1.txt', 'c', '-ascii');
save('data2.txt', 'r', '-ascii');

function x1=func1(a,q1,y1,x2)
x1=(q1.*x2-x2+y1.*(x2./y1).^a)./(q1+(x2./y1).^a-1);
%求解x1

function F=func2(a,q2,x1,x2,y2)
F=(((1-q2)*(x2-x1))./(x2.^a)).*(y2.^a)-y2+x1;
%求解y2

我把 plotyy(xf,a,xf,b); 这一语句提到前面去是可以执行的,还画出了图。运行之后提示我问题出在 fsolve 那个语句。
5楼2012-05-28 18:46:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见