希望各位大侠不吝赐教

weiming_zhang 2001-08-18 05:16:15
我设计的一个单值函数类:

========================cut here=========================

/**the abstract class of function
* designed according to matlab
* Author:weiming
* Vision:1.0
* Date:4/6/2001
*/

package Mathematica.Functions;

public abstract class Function{

public String name="Function";
public String expression=null;
public int type=0;
protected double factor=1.0;

//构造函数,其实现类使用
public Function(String name,String expression,int type){
this.name=name;
this.expression=expression;
this.type=type;
}

public Function(String name,String expression){
this.name=name;
this.expression=expression;
this.type=FunctionType.Unknown;//另实现
}

public Function(String name){
this.name=name;
this.expression=null;
this.type=FunctionType.Unknown;

}

public Function(){
this.name=null;
this.expression=null;
}

public void setName(String str){
this.name=str;
}

public void setExpression(String str){
this.expression=str;
}

public void setType(int type){
this.type=type;
}

public String toString(){
return name+": "+expression;
}

public abstract double value(double[] vars) throws Exception;

}

========================cut here=========================

我一直都想用一个String类对象expression来构造函数对象,如:

expression="f(x,y,z)=Math.exp(2.0)*(1/x^2)+Math.sin(y)+Math.Log(z)"

那么,这个类就不用声明为abctract,那位大侠能帮我设计这样一个函数,

public double value(double[] vars) throws Exception;

要求读取expression,直接实现单值函数求值。括号中变量依次为var[0],var[1],
var[2]......,如果不用java,能否给我一个dll,函数形如double value(String expression,double[] vars)??

希望各位大侠不吝赐教,小弟在此先谢过了.
...全文
105 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
nielinjie 2001-08-21
  • 打赏
  • 举报
回复
谢谢给分,我一直用matlab的activeX加java2com作解析表达是的工作,很好。matlab 马上要做java库了,很有用吧
Necromancer 2001-08-20
  • 打赏
  • 举报
回复
问题解决了,应该高兴才对亚。分数就当扔了听个响 ^_^
panq 2001-08-20
  • 打赏
  • 举报
回复
如果人人都能给自己加分,人人都是成了顶尖专家了。呵呵。
weiming_zhang 2001-08-20
  • 打赏
  • 举报
回复
靠,亏大了,自己不能给自己加分!!??
强烈谴责csdn这种龌龊的功能!!
难道要我将这二十分全部给楼上的弟兄??我不甘心呀,毕竟,这个问题是我这两天废寝忘食才搞定的呀!!
weiming_zhang 2001-08-20
  • 打赏
  • 举报
回复
哎,没人愿意帮我,只好逼自己写了一个.

我定义了一个MathmaticalException类,其构造函数为:
public MathmaticalException(String[] variableTable,String exprssion);
其中variableTable是函数的参数表,参数名为"x","xx","sigmma1"等字符串,
expression为一个表达式,其中可以有 (),可以有 +,-,*,/,^(乘方)等运算符,可以有
sin,cos,ln,log2,lg,exp等等函数,形如:x+xx+sin(sigmma1*x+xx^2).

我还为MathmaticalException类设计了一个接口:public double eval(double[] vars);
其中vars中的数值对应于variableTable中的参数.我测试了一下,非常好用,如果那位兄弟
干兴趣,可来信讨论.

没办法,这二十分,是想送也送不出去了,只好给自己了.
可是现在CSDN公告,封杀四个作弊帐号,不知我这样做是否有作弊之嫌.
不过,靠,管它呢,仰不愧于天,俯不怍为人,无所谓了.

非常感谢楼上的兄弟,为了表示敬意,特赠上5分,虽然他的建议没起什么实质性的作用.
nielinjie 2001-08-18
  • 打赏
  • 举报
回复
可以试一试mathlab的activeX控件

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧