声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1159|回复: 0

[编程技巧] 数值积分的问题

[复制链接]
发表于 2008-8-12 16:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
clear all;clc
S =1.0e-009 * [0.0077  -0.0277 0; -0.0277 0.0988 0; 0 0 0.1595];
XP=0;YP=1;
X1=-1;Y1=-1;
X2=1;Y2=1;
aa=0.01;bb=0.005;
LL=sqrt((X1-X2)^2+(Y1-Y2)^2);
sig1=-1;
sig2=-1;

A=[0.0316;-0.0316];
L=[1.8032;-1.8032];
N=[-2.8032;0.8032];
p=[-0.1239,-0.356]*1e-9;
q=[-0.1258i,-0.1256i]*1e-9;
s=[3.5362i,1.0132i];
R(1)=(aa-i*s(1)*bb)/2;R(2)=(aa-i*s(2)*bb)/2;
zp(1)=XP+s(1)*YP;zp(2)=XP+s(2)*YP; % 内点  也是力点
kesi0(1)=(zp(1)+sqrt(zp(1)^2-(aa^2+s(1)^2*bb^2)))/(aa-i*s(1)*bb);
kesi0(2)=(zp(2)+sqrt(zp(2)^2-(aa^2+s(2)^2*bb^2)))/(aa-i*s(2)*bb);
syms t;
x=(X1+X2)/2+t.*(X1-X2)./LL*sig1; diff_x=(X2-X1)/LL;% x x'关于t的表达式
y=(Y1+Y2)/2+t.*(Y1-Y2)./LL*sig2; %diff_y=(Y2-Y1)/LL;
z1=x+s(1).*y; %z1关于t的表达式
z2=x+s(2).*y;
kesi1=(z1+sqrt(z1.^2-(aa^2+s(1)^2*bb^2)))./(aa-i*s(1)*bb);%kesi1关于t的表达式
kesi2=(z2+sqrt(z2.^2-(aa^2+s(2)^2*bb^2)))./(aa-i*s(2)*bb);
phi1=A(1)*log(R(1).*(kesi1-kesi0(1)))+L(1)*conj(A(1)).*log(1-1./(conj(kesi0(1)).*kesi1))...
    +N(2)*conj(A(2)).*log(1-1./(conj(kesi0(2)).*kesi1));
phi2=A(2)*log(R(2).*(kesi2-kesi0(2)))+L(2)*conj(A(2)).*log(1-1./(conj(kesi0(2)).*kesi2))...
    +N(1)*conj(A(1)).*log(1-1./(conj(kesi0(1)).*kesi2));
u11_1=2*real(p(1).*phi1+p(2).*phi2); %关于t的表达式
u11_diff=diff(u11_1,'t')/diff_x; %求导
zz=vectorize(char(2*u11_diff));
fun=eval(['@(t)',zz]);  %eval(expression) executes expression, a string containing any valid MATLAB expression.
D111 = quadl(fun,-LL/2,LL/2);


出现错误如下:
??? Error using ==> abs
Too many input arguments.
Error in ==>

Error in ==> quadl at 70
y = feval(f,x,varargin{:}); y = y(:).';
Error in ==> test at 43
D111 = quadl(fun,-LL/2,LL/2);

调用格式没有错,为何出现这种错误

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-28 10:18 , Processed in 0.053397 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表